From 5be5aed72618dca1cfe183e46f338499a190e48b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 20 May 2025 19:25:13 +0800 Subject: [PATCH 01/35] //activity v.2 --- .../java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java index 6d02ffd4f..11c6758eb 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackAwardMapper.java @@ -16,7 +16,7 @@ import java.util.List; */ public interface WxVtwoCashBackAwardMapper extends CommonMapper { - void insertList(@Param("awardList") List awardList); + void insertList(@Param("awardList") List awardList); List findList(WxVtwoCashBackAward cashBackAward); } From a973b80d68f366c9cb096781ef6589381d88f4ca Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 20 May 2025 19:33:39 +0800 Subject: [PATCH 02/35] //activity v.2 --- .../controller/market/WxVtwoCashBackActivityController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index c9766c2bb..52a196b77 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -33,7 +33,7 @@ import java.math.BigDecimal; * */ @RestController -@RequestMapping("/amountGift") +@RequestMapping("/cashBack") @Api(description = "线下返现活动相关接口") public class WxVtwoCashBackActivityController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); From 789199f548c09c46ecb022e0a3a7837c9533c1ba Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 20 May 2025 19:49:23 +0800 Subject: [PATCH 03/35] //activity v.2 --- .../impl/WxVtwoCashBackActivityServiceImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index 9439eac32..762997377 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -8,6 +8,7 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.*; 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.mapper.*; import com.iformall.service.WxVtwoActivityAwardService; @@ -129,6 +130,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl Date: Wed, 21 May 2025 00:32:33 +0800 Subject: [PATCH 04/35] //activity v.2 --- .../WxVtwoActivitySpecialTopicController.java | 148 ++++++++++++++++++ .../domain/po/WxVtwoActivitySpecialTopic.java | 28 ++++ .../domain/vo/WxVtwoActivityCreditRule.java | 27 ++++ .../WxVtwoActivitySpecialTopicMapper.java | 8 + .../WxVtwoSpecialTopicActivityMapper.java | 6 + .../WxVtwoActivitySpecialTopicService.java | 6 + .../WxVtwoSpecialTopicActivityService.java | 5 + ...WxVtwoActivitySpecialTopicServiceImpl.java | 123 ++++++++++++++- ...WxVtwoSpecialTopicActivityServiceImpl.java | 33 ++++ .../WxVtwoActivitySpecialTopicMapper.xml | 32 ++++ .../WxVtwoSpecialTopicActivityMapper.xml | 17 ++ 11 files changed, 432 insertions(+), 1 deletion(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java new file mode 100644 index 000000000..b9e6711f1 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -0,0 +1,148 @@ +package com.iformall.controller.market; + +import com.alibaba.fastjson.JSONObject; +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.*; +import com.iformall.domain.po.base.BaseEntity.SortField; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxVtwoActivityCreditRule; +import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.service.WxVtwoActivitySpecialTopicService; +import com.iformall.service.WxVtwoAmountGiftActivityService; +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; + +/** + * @author alascor + * + */ +@RestController +@RequestMapping("/specialTopic") +@Api(description = "线下活动专题活动相关接口") +public class WxVtwoActivitySpecialTopicController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService; + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) { + if (null == specialTopic) specialTopic = new WxVtwoActivitySpecialTopic(); + TenantEntity tenantInfo = getTenantInfo(); + specialTopic.updateTenantInfo(tenantInfo); + specialTopic.setSortColumns(SortField.CreateDate_DESC); + final PageInfo page = wxVtwoActivitySpecialTopicService.listAsPage(specialTopic, pageNum, pageSize); + return new ResultData(page); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("判断积分按钮状态") + @PostMapping("getCreditStatus") + public ResultData getCreditStatus(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){ + return new ResultData(Result.ERROR,"活动时间为空"); + } + if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){ + return new ResultData(false); + } + return new ResultData(true); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("新增修改接口") + @PostMapping("saveOrUpdate") + public ResultData saveOrUpdate(@RequestBody WxVtwoActivitySpecialTopic specialTopic) { + TenantEntity tenantEntity = getTenantInfo(); + specialTopic.updateTenantInfo(tenantEntity); + if(specialTopic.getStartTime() == null || specialTopic.getEndTime() == null){ + return new ResultData(Result.ERROR,"活动时间为空"); + } + if(specialTopic.getCreditOnOff() == null){ + specialTopic.setCreditOnOff(EnumYesOrNo.NO.getCode()); + } + if(EnumYesOrNo.YES.getCode().equals(specialTopic.getCreditOnOff())){ + WxVtwoActivityCreditRule creditConfigObject = specialTopic.getCreditConfigObject(); + if(creditConfigObject == null){ + return new ResultData(Result.ERROR,"积分配置错误"); + } + if(creditConfigObject.getStep().compareTo(BigDecimal.ZERO) <= 0 + || creditConfigObject.getScore() <= 0){ + return new ResultData(Result.ERROR,"积分配置不能为0"); + } + if(wxVtwoActivitySpecialTopicService.selectCreditCount(specialTopic) > 0){ + return new ResultData(Result.ERROR,"活动时间内存在积分开启的活动"); + } + }else{ + specialTopic.setCreditConfig("{}"); + } + + if(specialTopic.getActivityList() == null || specialTopic.getActivityList().isEmpty()){ + return new ResultData(Result.ERROR,"包含活动不能为空"); + } + wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); + return new ResultData(); + } + + @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); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java index 96c24671d..bb67509d7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java @@ -1,11 +1,16 @@ 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 com.iformall.enums.EnumYesOrNo; import lombok.Data; /** @@ -47,10 +52,17 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { /** * 积分配置 + * + * "step":, + * "score": + * */ @TableField(value = "credit_config") private String creditConfig; + @TableField(exist = false) + private WxVtwoActivityCreditRule creditConfigObject; + /** * 状态 */ @@ -68,4 +80,20 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List activityList; + + @TableField(exist = false) + private Date begin; + @TableField(exist = false) + private Date end; + /** + * 是否过期 + */ + @TableField(exist = false) + private Integer validStatus; + + @TableField(exist = false) + private Integer activityCount; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java new file mode 100644 index 000000000..1e7208faa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityCreditRule.java @@ -0,0 +1,27 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 线下活动中奖规则 + */ +@Data +public class WxVtwoActivityCreditRule implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 金额 + */ + private BigDecimal step; + + /** + * 积分 + */ + private Integer score; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java index d9084abb4..e11b15ffa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.lettuce.core.dynamic.annotation.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivitySpecialTopicMapper extends CommonMapper { + List findList(WxVtwoActivitySpecialTopic specialTopic); + + int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic); + + WxVtwoActivitySpecialTopic selectById(@Param("id") Long id, @Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java index e0fd7c71b..83aae80ec 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoSpecialTopicActivityMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoSpecialTopicActivityMapper extends CommonMapper { + void insertList(@Param("activityList") List activityList); + + List findList(WxVtwoSpecialTopicActivity specialTopicActivity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java index ee91172aa..00f4d3a2a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +11,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivitySpecialTopicService extends IService { + PageInfo listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize); + + int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic); + + WxVtwoActivitySpecialTopic getInfoById(Long id, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java index d9a256880..ef8d28903 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java @@ -1,7 +1,11 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.base.TenantEntity; + +import java.util.List; /** * @author xiaohu @@ -10,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoSpecialTopicActivityService extends IService { + void saveFromSpecialTopic(TenantEntity tenantEntity, Long specialTopicId, List activityList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 1df7b4407..6693f67bd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -1,10 +1,31 @@ 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.domain.po.*; +import com.iformall.domain.vo.WxVtwoActivityCreditRule; +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.mapper.WxVtwoSpecialTopicActivityMapper; import com.iformall.service.WxVtwoActivitySpecialTopicService; import com.iformall.mapper.WxVtwoActivitySpecialTopicMapper; +import com.iformall.service.WxVtwoSpecialTopicActivityService; +import jodd.util.StringUtil; +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; /** * @author xiaohu @@ -15,6 +36,106 @@ import org.springframework.stereotype.Service; public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl implements WxVtwoActivitySpecialTopicService{ + @Autowired + private WxVtwoActivitySpecialTopicMapper wxVtwoActivitySpecialTopicMapper; + + @Autowired + private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; + + @Autowired + private WxVtwoSpecialTopicActivityService wxVtwoSpecialTopicActivityService; + + @Override + public PageInfo listAsPage(WxVtwoActivitySpecialTopic specialTopic, Integer pageNum, Integer pageSize) { + handlerQuery(specialTopic); + PageInfo activityPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxVtwoActivitySpecialTopicMapper.findList(specialTopic)); + handlerReturnList(activityPageInfo.getList()); + return activityPageInfo; + } + + private void handlerQuery(WxVtwoActivitySpecialTopic specialTopic) { + if (null != specialTopic.getStatus()) { + //已上架 + if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(specialTopic.getStatus())){ + specialTopic.setValidStatus(EnumYesOrNo.NO.getCode()); + } + //已过期 + else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(specialTopic.getStatus())){ + specialTopic.setStatus(null); + specialTopic.setValidStatus(EnumYesOrNo.YES.getCode()); + } + } + } + + private void handlerReturnList(List list) { + if (null != list && !list.isEmpty()) { + Date now = new Date(); + for (WxVtwoActivitySpecialTopic specialTopic : list) { + if(now.after(specialTopic.getEndTime())){ + specialTopic.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); + } + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.updateTenantInfo(specialTopic); + specialTopicActivityQ.setSpecialTopicId(specialTopic.getId()); + Integer activityCount = wxVtwoSpecialTopicActivityMapper.selectCount(new QueryWrapper<>(specialTopicActivityQ)); + specialTopic.setActivityCount(activityCount); + } + } + } + + @Override + public int selectCreditCount(WxVtwoActivitySpecialTopic specialTopic) { + specialTopic.setCreditOnOff(EnumYesOrNo.YES.getCode()); + return wxVtwoActivitySpecialTopicMapper.selectCreditCount(specialTopic); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean saveOrUpdate(WxVtwoActivitySpecialTopic specialTopic) { + handlerActivityRules(specialTopic); + Date now = new Date(); + if(specialTopic.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + specialTopic.setId(idWorker.nextId()); + specialTopic.setCreateDate(now); + specialTopic.setCreateDate(now); + specialTopic.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); + wxVtwoActivitySpecialTopicMapper.insert(specialTopic); + } + else{ + specialTopic.setUpdateDate(now); + wxVtwoActivitySpecialTopicMapper.updateById(specialTopic); + } + if(specialTopic.getActivityList() != null && !specialTopic.getActivityList().isEmpty()){ + wxVtwoSpecialTopicActivityService.saveFromSpecialTopic(specialTopic,specialTopic.getId(),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(StringUtil.isNotBlank(specialTopic.getCreditConfig())){ + specialTopic.setCreditConfigObject(JSONObject.parseObject(specialTopic.getCreditConfig(), WxVtwoActivityCreditRule.class)); + } + + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.setTenantId(tenantId); + specialTopicActivityQ.setSpecialTopicId(id); + List activityList = wxVtwoSpecialTopicActivityMapper.findList(specialTopicActivityQ); + specialTopic.setActivityList(activityList); + return specialTopic; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java index 46e7352c3..3f24a444a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java @@ -1,11 +1,19 @@ 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.domain.po.WxVtwoActivityAward; import com.iformall.domain.po.WxVtwoSpecialTopicActivity; +import com.iformall.domain.po.base.TenantEntity; 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 +23,31 @@ import org.springframework.stereotype.Service; public class WxVtwoSpecialTopicActivityServiceImpl extends ServiceImpl implements WxVtwoSpecialTopicActivityService{ + @Autowired + private WxVtwoSpecialTopicActivityMapper wxVtwoSpecialTopicActivityMapper; + + @Override + public void saveFromSpecialTopic(TenantEntity tenantEntity, Long specialTopicId, List activityList) { + WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); + specialTopicActivityQ.updateTenantInfo(tenantEntity); + specialTopicActivityQ.setSpecialTopicId(specialTopicId); + wxVtwoSpecialTopicActivityMapper.delete(new QueryWrapper<>(specialTopicActivityQ)); + + final IdWorker idWorker = IdWorker.get(); + Date now = new Date(); + for (WxVtwoSpecialTopicActivity specialTopicActivity : activityList) { + if(specialTopicActivity.getId() == null){ + specialTopicActivity.setId(idWorker.nextId()); + } + specialTopicActivity.updateTenantInfo(tenantEntity); + specialTopicActivity.setSpecialTopicId(specialTopicId); + if(specialTopicActivity.getCreateDate() == null){ + specialTopicActivity.setCreateDate(now); + } + specialTopicActivity.setUpdateDate(now); + } + wxVtwoSpecialTopicActivityMapper.insertList(activityList); + } } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml index 6e9272955..ede1b4acc 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivitySpecialTopicMapper.xml @@ -54,6 +54,14 @@ and `credit_on_off` = #{creditOnOff} + + + and end_time >= now() + + + + and end_time <= now() + and `status` = #{status} @@ -76,4 +84,28 @@ select from wx_vtwo_activity_special_topic where id = #{id} and tenant_id=#{tenantId} + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml index 1c6664e18..c994cc0da 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml @@ -54,4 +54,21 @@ select from wx_vtwo_special_topic_activity where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_award + (id, + special_topic_id,activity_id,activity_type, + activity_name,activity_create_date,activity_start_time, + activity_end_time,activity_status,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.specialTopicId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityType,jdbcType=SMALLINT}, + #{item.activityName,jdbcType=VARCHAR},#{item.activityCreateDate,jdbcType=TIMESTAMP},#{item.activityStartTime,jdbcType=TIMESTAMP}, + #{item.activityEndTime,jdbcType=TIMESTAMP},#{item.activityStatus,jdbcType=SMALLINT},#{item.createDate,jdbcType=TIMESTAMP}, + #{item.updateDate,jdbcType=TIMESTAMP}) + + From 9afcaf5b04c78d66da1853ed77f6705337906140 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 21 May 2025 10:49:04 +0800 Subject: [PATCH 05/35] //activity v.2 --- .../controller/market/WxVtwoActivitySpecialTopicController.java | 2 +- .../controller/market/WxVtwoAmountGiftActivityController.java | 2 +- .../controller/market/WxVtwoCashBackActivityController.java | 2 +- .../controller/market/WxVtwoPrizeDrawActivityController.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java index b9e6711f1..39f536330 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -103,7 +103,7 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { return new ResultData(Result.ERROR,"包含活动不能为空"); } wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); - return new ResultData(); + return new ResultData(specialTopic); } @ApiVersion(group = SwaggerConstant.V_A_2_0) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 0c8316a3b..683417310 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -93,7 +93,7 @@ public class WxVtwoAmountGiftActivityController extends BaseController { } } wxVtwoAmountGiftActivityService.saveOrUpdate(amountGiftActivity); - return new ResultData(); + return new ResultData(amountGiftActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index 52a196b77..ed6738b2c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -116,7 +116,7 @@ public class WxVtwoCashBackActivityController extends BaseController { } } wxVtwoCashBackActivityService.saveOrUpdate(cashBackActivity); - return new ResultData(); + return new ResultData(cashBackActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 598736fc2..6dbb6a09a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -95,7 +95,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { } } wxVtwoPrizeDrawActivityService.saveOrUpdate(prizeDrawActivity); - return new ResultData(); + return new ResultData(prizeDrawActivity); } @ApiVersion(group = SwaggerConstant.V_A_2_0) From b55de37399e247b4093d967c8d8c6de8356f9b24 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 21 May 2025 13:14:28 +0800 Subject: [PATCH 06/35] //activity v.2 --- .../market/WxLegionActivityOrderController.java | 8 ++++---- .../market/WxLegionActivityUserController.java | 1 - .../market/WxOfflineActivityController.java | 1 - .../market/WxOfflineActivityGrantController.java | 16 ++++++++-------- .../WxOfflineActivityRecordController.java | 4 ++-- .../WxOfflineActivitySettlementController.java | 1 - .../controller/WxLegionActivityController.java | 1 - .../WxLegionActivityOrderController.java | 6 +++--- .../WxLegionActivityUserController.java | 8 ++++---- .../WxOfflineActivityRecordController.java | 4 ++-- .../impl/WxLegionActivityOrderServiceImpl.java | 1 - .../WxVtwoActivitySpecialTopicServiceImpl.java | 4 ++-- .../WxVtwoAmountGiftActivityServiceImpl.java | 6 +++--- .../impl/WxVtwoCashBackActivityServiceImpl.java | 4 ++-- .../impl/WxVtwoPrizeDrawActivityServiceImpl.java | 6 +++--- 15 files changed, 33 insertions(+), 38 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java index 8c7ffdc5c..89423202c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityOrderController.java @@ -22,7 +22,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -122,7 +122,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder == null){ return new ResultData(Result.ERROR,"id 不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getAuditRemark())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getAuditRemark())){ return new ResultData(Result.ERROR,"驳回意见不能为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -153,8 +153,8 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone()) - && StringUtil.isBlank(wxLegionActivityOrder.getCusVipNum())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone()) + && StringUtils.isBlank(wxLegionActivityOrder.getCusVipNum())){ return new ResultData(Result.ERROR,"请输入用户手机号或vip卡号"); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java index cdca4e1ce..9f7cdfcac 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxLegionActivityUserController.java @@ -19,7 +19,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java index b7276ff13..d6654f9c3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -19,7 +19,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java index adf27a1c5..84e16b7f7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityGrantController.java @@ -13,7 +13,7 @@ import com.iformall.service.WxOfflineActivityGrantAwardService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,7 +43,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ return new ResultData(Result.ERROR,"请输入用户手机号"); } @@ -60,7 +60,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ return new ResultData(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ return new ResultData(Result.ERROR,"请输入用户手机号"); } @@ -78,7 +78,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityRecord.getActivityId() == null){ throw new MallinkException(Result.ERROR,"请选择活动"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ throw new MallinkException(Result.ERROR,"请输入用户手机号"); } @@ -97,7 +97,7 @@ public class WxOfflineActivityGrantController extends BaseController { // if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ // return new ResultData(Result.ERROR,"请选择订单"); // } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -124,10 +124,10 @@ public class WxOfflineActivityGrantController extends BaseController { // if(wxOfflineActivityGrantAward.getRecordIds() == null || wxOfflineActivityGrantAward.getRecordIds().isEmpty()){ // return new ResultData(Result.ERROR,"请选择订单"); // } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } -// if(StringUtil.isBlank(wxOfflineActivityGrantAward.getSignImg())){ +// if(StringUtils.isBlank(wxOfflineActivityGrantAward.getSignImg())){ // return new ResultData(Result.ERROR,"签名为空"); // } TenantEntity tenantEntity = getTenantInfo(); @@ -152,7 +152,7 @@ public class WxOfflineActivityGrantController extends BaseController { if(wxOfflineActivityGrantAward.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID为空"); } - if(StringUtil.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityGrantAward.getCusPhone())){ throw new MallinkException(Result.ERROR,"用户手机号为空"); } // if(wxOfflineActivityGrantAward.getRecordId() == null){ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index 2f4fd23b1..c107814b1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -18,7 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -119,7 +119,7 @@ public class WxOfflineActivityRecordController extends BaseController { if(wxOfflineActivityRecord == null){ return new ResultData(Result.ERROR,"id 不能为空"); } - if(StringUtil.isBlank(wxOfflineActivityRecord.getAuditRemark())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getAuditRemark())){ return new ResultData(Result.ERROR,"驳回意见不能为空"); } TenantEntity tenantEntity = getTenantInfo(); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java index 717f92204..df55e8396 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivitySettlementController.java @@ -17,7 +17,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java index 74c8c7c24..86ea640af 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityController.java @@ -15,7 +15,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java index bbb360d50..47e80cdf2 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityOrderController.java @@ -17,7 +17,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -64,7 +64,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getOrderNo())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getOrderNo())){ return new ResultData(Result.ERROR,"订单号不能为空"); } if (null == wxLegionActivityOrder.getOrderMoney() ) { @@ -73,7 +73,7 @@ public class WxLegionActivityOrderController extends BaseController { if(wxLegionActivityOrder.getCusId() == null){ return new ResultData(Result.ERROR,"未查询到用户,请先进行VIP卡绑定"); } - if(StringUtil.isBlank(wxLegionActivityOrder.getCusPhone())){ + if(StringUtils.isBlank(wxLegionActivityOrder.getCusPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } TenantEntity tenantEntity = getTenantInfo(); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java index 52395fa29..254f1d93f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxLegionActivityUserController.java @@ -18,7 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import jodd.util.StringUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -66,10 +66,10 @@ public class WxLegionActivityUserController extends BaseController { if(wxLegionActivityUser.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){ + if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getVipNum())){ + if(StringUtils.isBlank(wxLegionActivityUser.getVipNum())){ return new ResultData(Result.ERROR,"vip卡号不能为空"); } TenantEntity tenantEntity = getTenantInfo(); @@ -122,7 +122,7 @@ public class WxLegionActivityUserController extends BaseController { if(wxLegionActivityUser.getActivityId() == null){ return new ResultData(Result.ERROR,"活动ID不能为空"); } - if(StringUtil.isBlank(wxLegionActivityUser.getPhone())){ + if(StringUtils.isBlank(wxLegionActivityUser.getPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } TenantEntity tenantInfo = getTenantInfo(); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java index ba81c0a51..67ab6e953 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxOfflineActivityRecordController.java @@ -13,7 +13,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; @@ -53,7 +53,7 @@ public class WxOfflineActivityRecordController extends BaseController { @ApiOperation("新增修改接口") @PostMapping("saveOrUpdate") public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { - if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ + if(StringUtils.isBlank(wxOfflineActivityRecord.getCusPhone())){ return new ResultData(Result.ERROR,"客户手机号不能为空"); } if (null == wxOfflineActivityRecord.getOrderMoney() ) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java index 384c18f09..29a4785f2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java @@ -16,7 +16,6 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.DateUtils; -import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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 6693f67bd..1d573a7dc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -19,7 +19,7 @@ import com.iformall.mapper.WxVtwoSpecialTopicActivityMapper; import com.iformall.service.WxVtwoActivitySpecialTopicService; import com.iformall.mapper.WxVtwoActivitySpecialTopicMapper; import com.iformall.service.WxVtwoSpecialTopicActivityService; -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; @@ -124,7 +124,7 @@ public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl Date: Wed, 21 May 2025 13:20:09 +0800 Subject: [PATCH 07/35] //activity v.2 --- .../service/impl/WxLegionActivityOrderServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 29a4785f2..86825a626 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java @@ -1,6 +1,5 @@ package com.iformall.service.impl; -import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; @@ -16,6 +15,7 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.DateUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -198,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()); From 72ecec0b10b2cc912ceeb6faa49790859028d638 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 21 May 2025 14:05:24 +0800 Subject: [PATCH 08/35] //activity v.2 --- .../java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java | 2 +- .../java/com/iformall/domain/po/WxVtwoCashBackActivity.java | 2 +- .../java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java | 2 +- .../service/impl/WxVtwoAmountGiftActivityServiceImpl.java | 2 +- .../service/impl/WxVtwoCashBackActivityServiceImpl.java | 2 +- .../service/impl/WxVtwoPrizeDrawActivityServiceImpl.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java index eb1490619..68025bdc1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoAmountGiftActivity.java @@ -101,7 +101,7 @@ public class WxVtwoAmountGiftActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java index 0e5f8c4af..6c6446c7a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java @@ -100,7 +100,7 @@ public class WxVtwoCashBackActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java index d966d8452..8f0bdc038 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoPrizeDrawActivity.java @@ -107,7 +107,7 @@ public class WxVtwoPrizeDrawActivity extends TenantEntity { private List merchantIdList; @TableField(exist = false) - private List merchanList; + private List merchantList; /** * 活动状态 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index c89a02edc..57353c3d7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -186,7 +186,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - amountGiftActivity.setMerchanList(activityMerchantList); + amountGiftActivity.setMerchantList(activityMerchantList); } return amountGiftActivity; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index 264a680d5..e06ec17d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -185,7 +185,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - cashBackActivity.setMerchanList(activityMerchantList); + cashBackActivity.setMerchantList(activityMerchantList); } return cashBackActivity; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index f07431d5a..ebe57f50e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -191,7 +191,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); - prizeDrawActivity.setMerchanList(activityMerchantList); + prizeDrawActivity.setMerchantList(activityMerchantList); } return prizeDrawActivity; } 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 09/35] //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} + + From d109bfcc7ed0d5d41bdd637545fbc9da175a527e Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 24 May 2025 14:19:18 +0800 Subject: [PATCH 10/35] //activity v.2 --- .../market/WxVtwoActivityOrderController.java | 2 +- .../WxVtwoAmountGiftActivityController.java | 98 +++++++++++++++++- .../WxVtwoCashBackActivityController.java | 99 ++++++++++++++++++- .../WxVtwoPrizeDrawActivityController.java | 91 +++++++++++++++++ .../WxVtwoActivityOrderController.java | 2 +- .../domain/po/WxVtwoActivityGrantOrder.java | 6 ++ .../domain/po/WxVtwoActivityOrder.java | 3 + .../domain/po/WxVtwoActivitySpecialTopic.java | 1 - .../enums/EnumVtwoActivityGrantStatus.java | 36 +++++++ .../service/WxVtwoActivityOrderService.java | 8 +- .../WxVtwoAmountGiftActivityService.java | 2 + .../WxVtwoCashBackActivityService.java | 2 + .../WxVtwoPrizeDrawActivityService.java | 8 ++ .../WxVtwoActivityMerchantServiceImpl.java | 2 - .../impl/WxVtwoActivityOrderServiceImpl.java | 58 +++++++++-- .../WxVtwoAmountGiftActivityServiceImpl.java | 8 ++ .../WxVtwoCashBackActivityServiceImpl.java | 12 ++- .../WxVtwoPrizeDrawActivityServiceImpl.java | 16 ++- .../mapper/WxVtwoActivityGrantOrderMapper.xml | 8 +- .../WxVtwoSpecialTopicActivityMapper.xml | 4 +- 20 files changed, 432 insertions(+), 34 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.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 index 3b1e07c6d..ca6af8552 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivityOrderController.java @@ -83,7 +83,7 @@ public class WxVtwoActivityOrderController extends BaseController { TenantEntity tenantInfo = getTenantInfo(); activityOrder.updateTenantInfo(tenantInfo); activityOrder.setSortColumns(SortField.CreateDate_DESC); - wxVtwoActivityOrderService.exportData(request,response,activityOrder); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,null); } @ApiVersion(group = SwaggerConstant.V_A_2_0) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 683417310..3ef376e12 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -6,26 +6,32 @@ 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.exception.MallinkException; +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") @@ -135,4 +144,87 @@ 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()); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + Map result = new HashMap<>(); + result.put("cus_name","查无此人"); + result.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(result); + } + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + statisticsMap.put("cus_name",orderOne.getCusName()); + statisticsMap.put("cus_phone",orderOne.getCusPhone()); + return new ResultData(statisticsMap); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单列表") + @GetMapping("orderList") + @ApiImplicitParams({}) + public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoAmountGiftActivity activity = wxVtwoAmountGiftActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index ed6738b2c..31ec4ccae 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -6,27 +6,32 @@ 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.exception.MallinkException; +import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoAmountGiftActivityService; import com.iformall.service.WxVtwoCashBackActivityService; 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 @@ -41,6 +46,9 @@ public class WxVtwoCashBackActivityController extends BaseController { @Autowired private WxVtwoCashBackActivityService wxVtwoCashBackActivityService; + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -158,4 +166,87 @@ 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.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime()); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + Map result = new HashMap<>(); + result.put("cus_name","查无此人"); + result.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(result); + } + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + 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.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + 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()); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 6dbb6a09a..89dfa9e9b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -15,11 +15,13 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxOfflineActivityGrantAwardService; import com.iformall.service.WxOfflineActivityService; +import com.iformall.service.WxVtwoActivityOrderService; 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; @@ -28,6 +30,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 +47,9 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { @Autowired private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService; + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -137,4 +145,87 @@ 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()); + + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); + if(orderOne == null){ + Map result = new HashMap<>(); + result.put("cus_name","查无此人"); + result.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(result); + } + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + statisticsMap.put("cus_name",orderOne.getCusName()); + statisticsMap.put("cus_phone",orderOne.getCusPhone()); + return new ResultData(statisticsMap); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单列表") + @GetMapping("orderList") + @ApiImplicitParams({}) + public ResultData orderList(@ModelAttribute WxVtwoActivityOrder activityOrder) { + if(activityOrder.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + return new ResultData(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + return new ResultData(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + List orderList = wxVtwoActivityOrderService.findList(activityOrder,activity.getId()); + + return new ResultData(orderList); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("参加活动用户订单导出") + @GetMapping("/orderExport") + public void orderExport(@ModelAttribute WxVtwoActivityOrder activityOrder, HttpServletRequest request, HttpServletResponse response) { + + if(activityOrder.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + if(StringUtils.isBlank(activityOrder.getCusPhone())){ + throw new MallinkException(Result.ERROR,"请输入用户手机号"); + } + + TenantEntity tenantInfo = getTenantInfo(); + WxVtwoPrizeDrawActivity activity = wxVtwoPrizeDrawActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + activityOrder.updateTenantInfo(tenantInfo); + activityOrder.setCreateDateBegin(activity.getStartTime()); + activityOrder.setCreateDateEnd(activity.getEndTime());; + activityOrder.setSortColumns(SortField.CreateDate_DESC); + wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); + } + } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java index e18377c39..d4b6ebbcb 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxVtwoActivityOrderController.java @@ -97,7 +97,7 @@ public class WxVtwoActivityOrderController extends BaseController { TenantEntity tenantInfo = getTenantInfo(); activityOrder.updateTenantInfo(tenantInfo); activityOrder.setMerchantId(getLoginBUser().getMerchantId()); - Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); return new ResultData(statisticsMap); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java index 8d28526a6..c4518e9fd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantOrder.java @@ -26,6 +26,12 @@ public class WxVtwoActivityGrantOrder extends TenantEntity { @TableField(value = "grant_id") private Long grantId; + /** + * 活动id + */ + @TableField(value = "activity_id") + private Long activityId; + /** * 订单id */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java index 762c88cff..fa56f2f35 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -248,4 +248,7 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private Long activityId; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java index bb67509d7..4f24928c0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java @@ -10,7 +10,6 @@ import java.util.Date; import java.util.List; import com.iformall.domain.vo.WxVtwoActivityCreditRule; -import com.iformall.enums.EnumYesOrNo; import lombok.Data; /** diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java new file mode 100644 index 000000000..afd336177 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumVtwoActivityGrantStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumVtwoActivityGrantStatus { + + VALID(1, "有效"), + NOT_VALID(0, "无效") + ; + + public static EnumVtwoActivityGrantStatus getEnum(Integer code) { + for (EnumVtwoActivityGrantStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumVtwoActivityGrantStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 150f686e3..b3a9fcab4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -19,12 +19,12 @@ public interface WxVtwoActivityOrderService extends IService listAsPage(WxVtwoActivityOrder record, Integer pageNum, Integer pageSize); - void handlerList(TenantEntity tenantEntity, List recordList); + List findList(WxVtwoActivityOrder record, Long activityId); WxVtwoActivityOrder getById(Long id, String tenantId); WxVtwoActivityOrder getInfoById(Long id, String tenantId); - Map getStatistics(WxVtwoActivityOrder record); + Map getStatistics(WxVtwoActivityOrder record); void auditRecord(WxVtwoActivityOrder record, Long userId); @@ -32,8 +32,10 @@ public interface WxVtwoActivityOrderService extends IService orderStatistics(TenantEntity tenantInfo); - void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record); + void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId); Integer getWaitAudiCount(TenantEntity tenantInfo); + WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java index d0f6c7d7b..bbe5c33a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxVtwoAmountGiftActivity; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoCashBackActivity; import com.iformall.domain.po.WxVtwoPrizeDrawActivity; /** @@ -16,4 +17,5 @@ public interface WxVtwoAmountGiftActivityService extends IService listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize); WxVtwoPrizeDrawActivity getInfoById(Long id, String tenantId); + + WxVtwoPrizeDrawActivity getById(Long id, String tenantId); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java index 4ccace442..ec5fac926 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityMerchantServiceImpl.java @@ -7,8 +7,6 @@ import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxOfflineActivityMerchant; import com.iformall.domain.po.WxVtwoActivityMerchant; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumYesOrNo; import com.iformall.service.WxMerchantService; import com.iformall.service.WxVtwoActivityMerchantService; import com.iformall.mapper.WxVtwoActivityMerchantMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java index c5f70fb78..c9830b2aa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -1,11 +1,13 @@ 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; 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.*; @@ -38,6 +40,9 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl findList(WxVtwoActivityOrder record, Long activityId) { + handlerQuery(record); + List recordList = wxVtwoActivityOrderMapper.findList(record); + handlerList(record,recordList); + handlerOrderStatus(activityId,recordList); + return recordList; + } + private void handlerQuery(WxVtwoActivityOrder record) { //商户处理 if (StringUtils.isNotBlank(record.getMerchantName())) { @@ -81,8 +95,7 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl recordList) { + private void handlerList(TenantEntity tenantEntity, List recordList) { if (recordList == null || recordList.size() <= 0) { return; } @@ -120,6 +133,26 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl recordList){ + if(activityId == null){ + return; + } + if (recordList == null || recordList.size() <= 0) { + return; + } + for (WxVtwoActivityOrder record : recordList) { + 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){ @@ -160,24 +193,29 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl getStatistics(WxVtwoActivityOrder record) { + public Map getStatistics(WxVtwoActivityOrder record) { List auditStatusStatistics = wxVtwoActivityOrderMapper.auditStatusStatistics(record); - Map result = new HashMap<>(); + Map result = new HashMap<>(); Integer audting = 0, audi_success = 0, audt_fail = 0, invalid = 0; + BigDecimal sum_success = BigDecimal.ZERO, sum_fail = BigDecimal.ZERO; for(WxVtwoActivityOrderStatistics statistics : auditStatusStatistics){ if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ audting = statistics.getCount(); } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { audi_success = statistics.getCount(); + sum_success = statistics.getSumMoney(); } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { audt_fail = statistics.getCount(); + sum_fail = statistics.getSumMoney(); } else if (EnumOfflineActivityRecordStatus.INVALID.getCode().equals(statistics.getAuditStatus())) { invalid = statistics.getCount(); } } result.put("audting",audting); result.put("audi_success",audi_success); + result.put("sum_success",sum_success); result.put("audt_fail",audt_fail); + result.put("sum_fail",sum_fail); result.put("invalid",invalid); result.put("sum_count",audting+audi_success+audt_fail+invalid); return result; @@ -317,10 +355,8 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl list = wxVtwoActivityOrderMapper.findList(record); - handlerList(record,list); + public void exportData(HttpServletRequest request, HttpServletResponse response, WxVtwoActivityOrder record, Long activityId) { + List list = this.findList(record, activityId); excelService.exportExcel(list, null, "活动订单列表", WxOfflineActivityRecord.class, "活动订单列表.xlsx", response, false); } @@ -332,6 +368,12 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl listAsPage(WxVtwoAmountGiftActivity amountGiftActivity, Integer pageNum, Integer pageSize) { handlerQuery(amountGiftActivity); @@ -213,6 +217,10 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoCashBackActivity cashBackActivity, Integer pageNum, Integer pageSize) { handlerQuery(cashBackActivity); @@ -216,6 +216,10 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { @@ -218,6 +222,12 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl + @@ -16,8 +17,8 @@ id,tenant_id,parent_tenant_id, - grant_id,order_id,is_amount, - status + grant_id,activity_id,order_id, + is_amount, status @@ -34,6 +35,9 @@ and `grant_id` = #{grantId} + + and `activity_id` = #{activityId} + and `order_id` = #{orderId} diff --git a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml index 62f84b734..2cd5a6826 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml @@ -56,7 +56,7 @@ - insert into wx_vtwo_activity_award + insert into wx_vtwo_special_topic_activity (id, special_topic_id,activity_id,activity_type, activity_name,activity_create_date,activity_start_time, @@ -73,7 +73,7 @@ - update wx_vtwo_activity_award + update wx_vtwo_special_topic_activity set `activity_name` = #{activityName}, From b1653be4e1ae06a54f289b93c919c8a0e879c0a4 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 24 May 2025 15:30:43 +0800 Subject: [PATCH 11/35] //activity v.2 --- .../WxVtwoActivitySpecialTopicController.java | 40 ++++++++++++++++--- .../WxVtwoAmountGiftActivityService.java | 4 ++ .../WxVtwoCashBackActivityService.java | 4 ++ .../WxVtwoPrizeDrawActivityService.java | 3 ++ .../WxVtwoAmountGiftActivityServiceImpl.java | 18 +++++++++ .../WxVtwoCashBackActivityServiceImpl.java | 18 +++++++++ .../WxVtwoPrizeDrawActivityServiceImpl.java | 18 +++++++++ ...WxVtwoSpecialTopicActivityServiceImpl.java | 1 + 8 files changed, 100 insertions(+), 6 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java index 39f536330..2a11cb11e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -11,12 +11,8 @@ 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.WxVtwoActivityCreditRule; -import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityStatus; -import com.iformall.enums.EnumYesOrNo; -import com.iformall.service.WxVtwoActivitySpecialTopicService; -import com.iformall.service.WxVtwoAmountGiftActivityService; +import com.iformall.enums.*; +import com.iformall.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -41,6 +37,15 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { @Autowired private WxVtwoActivitySpecialTopicService wxVtwoActivitySpecialTopicService; + @Autowired + private WxVtwoPrizeDrawActivityService wxVtwoPrizeDrawActivityService; + + @Autowired + private WxVtwoAmountGiftActivityService wxVtwoAmountGiftActivityService; + + @Autowired + private WxVtwoCashBackActivityService wxVtwoCashBackActivityService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -102,6 +107,29 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { 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,"活动参数异常"); + } + } + wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); return new ResultData(specialTopic); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java index bbe5c33a0..a85402472 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java @@ -5,6 +5,8 @@ import com.iformall.domain.po.WxVtwoAmountGiftActivity; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxVtwoCashBackActivity; import com.iformall.domain.po.WxVtwoPrizeDrawActivity; +import com.iformall.domain.po.WxVtwoSpecialTopicActivity; +import com.iformall.domain.po.base.TenantEntity; /** * @author xiaohu @@ -18,4 +20,6 @@ public interface WxVtwoAmountGiftActivityService extends IService Date: Sat, 24 May 2025 16:50:04 +0800 Subject: [PATCH 12/35] //activity v.2 --- .../service/impl/WxVtwoAmountGiftActivityServiceImpl.java | 2 +- .../service/impl/WxVtwoCashBackActivityServiceImpl.java | 2 +- .../service/impl/WxVtwoPrizeDrawActivityServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index e48f6ff24..be40c5bb2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -227,7 +227,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl Date: Sat, 24 May 2025 17:01:23 +0800 Subject: [PATCH 13/35] //activity v.2 --- .../main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml index 2cd5a6826..cbade80ee 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoSpecialTopicActivityMapper.xml @@ -63,7 +63,7 @@ activity_end_time,activity_status,create_date, update_date) values - + (#{item.id,jdbcType=BIGINT}, #{item.specialTopicId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityType,jdbcType=SMALLINT}, #{item.activityName,jdbcType=VARCHAR},#{item.activityCreateDate,jdbcType=TIMESTAMP},#{item.activityStartTime,jdbcType=TIMESTAMP}, From 6e4105c598dfbe848fdea667553f91e418814785 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 24 May 2025 17:34:28 +0800 Subject: [PATCH 14/35] //activity v.2 --- .../com/iformall/domain/po/WxVtwoActivityGrant.java | 11 +++++++++++ .../com/iformall/domain/po/WxVtwoActivityOrder.java | 6 ++++++ .../domain/po/WxVtwoSpecialTopicActivity.java | 10 ++++++++++ .../impl/WxVtwoActivitySpecialTopicServiceImpl.java | 2 +- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 9f715896f..8f2b74e98 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import lombok.Data; /** @@ -123,4 +125,13 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List orderIdList; + + @TableField(exist = false) + private List orderFilterIdList; + + @TableField(exist = false) + private List orderList; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java index fa56f2f35..de8caf6f1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -251,4 +251,10 @@ public class WxVtwoActivityOrder extends TenantEntity { @TableField(exist = false) private Long activityId; + + /** + * 是否参与总金额计算 + */ + @TableField(exist = false) + private Integer isAmount; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java index 6bc020cab..9f37ff1e8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoSpecialTopicActivity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.util.Date; + +import com.iformall.enums.EnumOfflineActivityType; import lombok.Data; /** @@ -38,6 +40,14 @@ public class WxVtwoSpecialTopicActivity extends TenantEntity { */ @TableField(value = "activity_type") private Integer activityType; + @TableField(exist = false) + private String activityTypeName; + public String getActivityTypeName() { + if (null != activityType) { + return EnumOfflineActivityType.getEnum(activityType).getMessage(); + } + return null; + } /** * 活动名称 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 077f8ceda..7c5cec228 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -130,7 +130,7 @@ public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl activityList = wxVtwoSpecialTopicActivityMapper.findList(specialTopicActivityQ); specialTopic.setActivityList(activityList); From 968eea2a22745c0e90696b32f7fb2f383854dcb1 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 25 May 2025 17:27:35 +0800 Subject: [PATCH 15/35] //activity v.2 --- .../WxVtwoPrizeDrawActivityController.java | 85 +++++++++++ .../domain/po/WxVtwoActivityGrant.java | 39 +++++ .../domain/po/WxVtwoActivityGrantAward.java | 28 +--- .../po/WxVtwoActivityGrantSettlement.java | 3 + .../domain/po/WxVtwoActivityOrder.java | 3 + .../domain/po/WxVtwoCashBackGrantAward.java | 8 +- .../domain/vo/WxVtwoActivityGrantRule.java | 16 +++ .../WxVtwoActivityGrantAwardMapper.java | 4 + .../WxVtwoActivityGrantOrderMapper.java | 4 + .../WxVtwoActivityGrantSettlementMapper.java | 4 + .../WxVtwoCashBackGrantAwardMapper.java | 6 + .../service/WxVtwoActivityAwardService.java | 5 + .../WxVtwoActivityGrantAwardService.java | 4 + .../WxVtwoActivityGrantOrderService.java | 4 + .../service/WxVtwoActivityGrantService.java | 4 + .../WxVtwoActivityGrantSettlementService.java | 2 + .../service/WxVtwoActivityOrderService.java | 4 + .../service/WxVtwoCashBackAwardService.java | 5 + .../WxVtwoPrizeDrawActivityService.java | 5 + .../impl/WxVtwoActivityAwardServiceImpl.java | 18 +++ .../WxVtwoActivityGrantAwardServiceImpl.java | 70 +++++++++ .../WxVtwoActivityGrantOrderServiceImpl.java | 25 ++++ .../impl/WxVtwoActivityGrantServiceImpl.java | 64 +++++++++ ...twoActivityGrantSettlementServiceImpl.java | 108 +++++++++++++- .../impl/WxVtwoActivityOrderServiceImpl.java | 42 ++++++ .../WxVtwoAmountGiftActivityServiceImpl.java | 8 +- .../WxVtwoCashBackActivityServiceImpl.java | 5 +- .../impl/WxVtwoCashBackAwardServiceImpl.java | 20 ++- .../WxVtwoPrizeDrawActivityServiceImpl.java | 136 ++++++++++++++++-- .../mapper/WxVtwoActivityGrantAwardMapper.xml | 32 +++-- .../mapper/WxVtwoActivityGrantOrderMapper.xml | 13 ++ .../WxVtwoActivityGrantSettlementMapper.xml | 23 +++ .../mapper/WxVtwoCashBackGrantAwardMapper.xml | 36 ++++- 33 files changed, 760 insertions(+), 73 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 89dfa9e9b..ea4788d1e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -3,6 +3,7 @@ package com.iformall.controller.market; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; @@ -228,4 +229,88 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { 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.getById(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.getById(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.setCreateBy(getUserId()); + 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); + } + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 8f2b74e98..4d5cd246c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -9,6 +11,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import com.iformall.domain.vo.WxVtwoActivityGrantRule; import lombok.Data; /** @@ -65,6 +68,18 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 @@ -77,6 +92,18 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private List anniversaryLotteryNumList; + public List getAnniversaryLotteryNumList() { + if(StringUtils.isNotBlank(anniversaryLotteryNum)){ + try { + List stringList = JSON.parseArray(anniversaryLotteryNum, String.class); + stringList.removeIf(String::isEmpty); + anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return anniversaryLotteryNumList; + } /** * 实际领奖人 @@ -126,6 +153,9 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "update_date") private Date updateDate; + @TableField(exist = false) + private List grantAwardList; + @TableField(exist = false) private List orderIdList; @@ -134,4 +164,13 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(exist = false) private List orderList; + + @TableField(exist = false) + private List ruleList; + + @TableField(exist = false) + private List awardList; + + @TableField(exist = false) + private Integer awardLimit; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java index 5cbb5612b..2a8ebe259 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java @@ -46,36 +46,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 +91,8 @@ public class WxVtwoActivityGrantAward extends TenantEntity { /** * 分担规则(0-商管 1-商户 2-分担) */ - @TableField(value = "money_rule") - private Integer moneyRule; + @TableField(value = "share_rule") + private Integer shareRule; /** * 商管分担比例 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java index 61298405b..8a3de4b0f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java @@ -46,6 +46,9 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity { @TableField(value = "award_id") private Long awardId; + @TableField(exist = false) + private Integer awardCount; + /** * 发放总价值 */ 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 de8caf6f1..6ae5aab63 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -257,4 +257,7 @@ public class WxVtwoActivityOrder extends TenantEntity { */ @TableField(exist = false) private Integer isAmount; + + @TableField(exist = false) + private BigDecimal orderRatio; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java index 3369cb687..3e2dfb9e2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java @@ -43,8 +43,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { /** * */ - @TableField(value = "record_id") - private Long recordId; + @TableField(value = "order_id") + private Long orderId; /** * 订单金额/总金额 @@ -109,8 +109,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { /** * 分担规则(0-商管 1-商户 2-分担) */ - @TableField(value = "money_rule") - private Integer moneyRule; + @TableField(value = "share_rule") + private Integer shareRule; /** * 商管分担比例 diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java new file mode 100644 index 000000000..66cb2253a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityGrantRule.java @@ -0,0 +1,16 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.WxOfflineActivityRecord; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WxVtwoActivityGrantRule implements Serializable { + + private Long orderId; + private Integer modeType; + private String name; + private Integer awardLimit; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java index b68f4c1f4..9b96e2a74 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantAward; 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 WxVtwoActivityGrantAwardMapper extends CommonMapper { + void insertList(@Param("grantAwardList")List grantAwardList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java index 1f11b61ae..b3b283049 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantOrderMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantOrderMapper extends CommonMapper { + void insertList(@Param("grantOrderList")List grantOrderList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java index 54a0971df..8fc0a90ea 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantSettlement; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -14,6 +17,7 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper settlementList); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java index 87fed5391..f8f1c27cd 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java @@ -1,8 +1,12 @@ 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 org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +16,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper { + void insertList(@Param("grantAwardList") List grantAwardList); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java index a9e9a66b5..61df79e3d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityAwardService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.base.TenantEntity; import java.util.List; +import java.util.Map; /** * @author xiaohu @@ -14,4 +15,8 @@ import java.util.List; public interface WxVtwoActivityAwardService extends IService { void saveFromActivity(TenantEntity tenantEntity, Long activityId, List awardList); + + List findActivityAwardList(Long activityId, String tenantId); + + Map findActivityAwardMap(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java index f19945b91..4c9e8af0a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java @@ -1,8 +1,11 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantAward; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantAwardService extends IService { + void saveGrantAward(WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java index c095aaffc..5c61483a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantOrderService.java @@ -2,6 +2,9 @@ package com.iformall.service; import com.iformall.domain.po.WxVtwoActivityGrantOrder; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.po.WxVtwoActivityOrder; + +import java.util.List; /** * @author xiaohu @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantOrderService extends IService { + void saveGrantOrder(Long grantId, Long activityId, List orderList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java index 62010e0cf..83c40ecff 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java @@ -2,6 +2,9 @@ package com.iformall.service; import com.iformall.domain.po.WxVtwoActivityGrant; 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 WxVtwoActivityGrantService extends IService { + void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java index d8038ba11..8f4e26352 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantSettlement; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantSettlementService extends IService { + void saveGrantSettlement(WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index b3a9fcab4..8ad19d03f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -1,6 +1,7 @@ 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; @@ -38,4 +39,7 @@ public interface WxVtwoActivityOrderService extends IService findGrantOrder(TenantEntity tenantInfo, List idList, List filterIdList); + + Integer getJointCount(Integer relatedModel, List orderList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java index d2b0d3f29..5237ae88a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackAwardService.java @@ -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,8 @@ import java.util.List; public interface WxVtwoCashBackAwardService extends IService { void saveFromActivity(TenantEntity tenantEntity, Long activityId, List amountRulesObject, List relatedRulesObject); + + List findActivityAwardList(Long activityId, String tenantId); + + Map findActivityAwardMap(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java index 408083ae2..22f109529 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoPrizeDrawActivityService.java @@ -1,6 +1,7 @@ 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; @@ -25,4 +26,8 @@ public interface WxVtwoPrizeDrawActivityService extends IService findActivityAwardList(Long activityId, String tenantId) { + WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); + activityAwardQ.setTenantId(tenantId); + activityAwardQ.setActivityId(activityId); + return wxVtwoActivityAwardMapper.findList(activityAwardQ); + } + + @Override + public Map findActivityAwardMap(Long activityId, String tenantId) { + List activityAwardList = this.findActivityAwardList(activityId, tenantId); + return activityAwardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java index 3008a1bdb..ffddd9d8e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java @@ -1,11 +1,26 @@ 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.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.List; +import java.util.Map; + +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 +30,61 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl implements WxVtwoActivityGrantAwardService{ + @Autowired + private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper; + + @Autowired + private WxVtwoActivityAwardService wxVtwoActivityAwardService; + + @Override + public void saveGrantAward(WxVtwoActivityGrant activityGrant) { + + Map activityAwardMap = wxVtwoActivityAwardService.findActivityAwardMap(activityGrant.getActivityId(), activityGrant.getTenantId()); + + List grantAwardList = activityGrant.getGrantAwardList(); + boolean isAwardId = grantAwardList.stream().anyMatch(grantAward -> grantAward.getAwardId() == null); + if(isAwardId){ + throw new MallinkException(Result.ERROR, "请检查是否都选择奖项"); + } + boolean isModeType = grantAwardList.stream().anyMatch(grantAward -> grantAward.getModeType() == null); + if(isModeType){ + throw new MallinkException(Result.ERROR, "请检查奖项参数"); + } + //所得奖项不能重复, 后续计算问题 + boolean isRepeat = grantAwardList.stream() + .collect(groupingBy(e -> String.valueOf(e.getAwardId())+String.valueOf(e.getModeType())+String.valueOf(e.getOrderId()), counting())) + .entrySet().stream().anyMatch(e -> e.getValue() > 1); + if(isRepeat){ + throw new MallinkException(Result.ERROR, "请检查奖项存在重复"); + } + + final IdWorker idWorker = IdWorker.get(); + for(WxVtwoActivityGrantAward grantAward : grantAwardList){ + grantAward.setAwardId(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); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java index d728db204..dbed20563 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantOrderServiceImpl.java @@ -1,11 +1,17 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxVtwoActivityGrantOrder; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.service.WxVtwoActivityGrantOrderService; import com.iformall.mapper.WxVtwoActivityGrantOrderMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_activity_grant_order(线下活动发奖订单)】的数据库操作Service实现 @@ -15,6 +21,25 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantOrderServiceImpl extends ServiceImpl implements WxVtwoActivityGrantOrderService{ + @Autowired + private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper; + + @Override + public void saveGrantOrder(Long grantId, Long activityId, List orderList) { + List grantOrderList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + for (WxVtwoActivityOrder order : orderList) { + WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder(); + grantOrder.setId(idWorker.nextId()); + grantOrder.updateTenantInfo(order); + grantOrder.setGrantId(grantId); + grantOrder.setActivityId(activityId); + grantOrder.setOrderId(order.getId()); + grantOrder.setIsAmount(order.getIsAmount()); + grantOrderList.add(grantOrder); + } + wxVtwoActivityGrantOrderMapper.insertList(grantOrderList); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java index 2d0a1c68f..0749d86b4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java @@ -1,10 +1,24 @@ 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.WxVtwoPrizeDrawActivity; +import com.iformall.enums.EnumOfflineActivityMerchantType; +import com.iformall.enums.EnumOfflineActivityStatus; 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 java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * @author xiaohu @@ -15,6 +29,56 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantServiceImpl extends ServiceImpl implements WxVtwoActivityGrantService{ + @Autowired + private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper; + + @Override + public void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant) { + activityGrant.setActivityName(activityName); + activityGrant.setOrderList(orderList); + BigDecimal orderMoneySum = BigDecimal.ZERO; + List lotteryNumList = new ArrayList<>(); + int lotteryCount = 0; + List anniversaryLotteryNumList = new ArrayList<>(); + for (WxVtwoActivityOrder order : orderList) { + orderMoneySum = orderMoneySum.add(order.getOrderMoney()); + if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){ + lotteryNumList.addAll(order.getLotteryNumList()); + } + if(order.getLotteryCount() != null){ + lotteryCount = lotteryCount + order.getLotteryCount(); + } + if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){ + anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum()); + } + } + activityGrant.setOrderMoneySum(orderMoneySum); + activityGrant.setOrderCount(orderList.size()); + activityGrant.setCusName(orderList.get(0).getCusName()); + activityGrant.setCusPhone(orderList.get(0).getCusPhone()); + if(!isGrant){ + activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList)); + activityGrant.setLotteryCount(lotteryCount); + activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); + } + } + + @Override + public boolean saveOrUpdate(WxVtwoActivityGrant activityGrant) { + Date now = new Date(); + if(activityGrant.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityGrant.setId(idWorker.nextId()); + activityGrant.setCreateDate(now); + activityGrant.setCreateDate(now); + wxVtwoActivityGrantMapper.insert(activityGrant); + } + else{ + activityGrant.setUpdateDate(now); + wxVtwoActivityGrantMapper.updateById(activityGrant); + } + return true; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index d80a9213c..82d2c14fd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -1,11 +1,24 @@ 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.enums.EnumOfflineActivityAwardsModeType; +import com.iformall.enums.EnumYesOrNo; 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.ArrayList; +import java.util.Comparator; +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_settlement(线下活动发放奖励结算)】的数据库操作Service实现 @@ -15,6 +28,99 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl implements WxVtwoActivityGrantSettlementService{ + @Autowired + private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; + + @Override + public void saveGrantSettlement(WxVtwoActivityGrant activityGrant) { + List amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) + .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + List cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + + List grantAwardList = activityGrant.getGrantAwardList(); + Map> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantAward::getModeType)); + List amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + List settlementList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ + handleOrderRatio(amountOrderList); + Map amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + for (WxVtwoActivityGrantAward grant : amountGrantAwardList) { + if(grant.getOrderId() != null){ + WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId()); + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true); + settlementList.add(settlement); + }else{ + for (WxVtwoActivityOrder order : amountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + } + if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){ + handleOrderRatio(cmountOrderList); + for (WxVtwoActivityGrantAward grant : countGrantAwardList) { + for (WxVtwoActivityOrder order : amountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + + wxVtwoActivityGrantSettlementMapper.insertList(settlementList); + } + + private void handleOrderRatio(List orderList){ + BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + int size = orderList.size() - 1; + BigDecimal lastRatio = new BigDecimal(100); + for(int i=0; i findGrantOrder(TenantEntity tenantInfo, List idList, List filterIdList) { + WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); + orderQ.updateTenantInfo(tenantInfo); + orderQ.setIds(idList); + List list = this.findList(orderQ, null); + if(filterIdList == null || filterIdList.isEmpty()){ + for (WxVtwoActivityOrder order : list) { + order.setIsAmount(EnumYesOrNo.YES.getCode()); + } + }else{ + for (WxVtwoActivityOrder order : list) { + if(filterIdList.contains(order.getId())) { + order.setIsAmount(EnumYesOrNo.YES.getCode()); + }else{ + order.setIsAmount(EnumYesOrNo.NO.getCode()); + } + } + } + return this.findList(orderQ,null); + } + + @Override + public Integer getJointCount(Integer relatedModel, List orderList) { + Integer jointCount = 0; + if(orderList == null || orderList.isEmpty()){ + return jointCount; + } + if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(relatedModel)){ + //商户联单 + List merchantIds = orderList.stream().map(WxVtwoActivityOrder::getMerchantId).distinct().collect(toList()); + jointCount = merchantIds.size(); + }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(relatedModel)){ + //业态联单 + List businessIds = orderList.stream().map(WxVtwoActivityOrder::getBusinessId).distinct().collect(toList()); + jointCount = businessIds.size(); + } + return jointCount; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index be40c5bb2..52e79cd35 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -37,9 +37,6 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); amountGiftActivity.setAwardList(activityAwardList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){ List activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index 21b81bc5b..acc9553e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -37,9 +37,6 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + List activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId); Map> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType)); cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); cashBackActivity.setRelatedRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java index 6a502da7a..42e54324a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java @@ -12,9 +12,9 @@ import com.iformall.mapper.WxVtwoCashBackAwardMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author xiaohu @@ -71,6 +71,20 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl findActivityAwardList(Long activityId, String tenantId) { + WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); + cashBackAwardQ.setTenantId(tenantId); + cashBackAwardQ.setActivityId(activityId); + return wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + } + + @Override + public Map findActivityAwardMap(Long activityId, String tenantId) { + List activityAwardList = this.findActivityAwardList(activityId, tenantId); + return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index 0135ef7c5..a19cdb4fb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -12,10 +12,7 @@ import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.TenantEntity; -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.domain.vo.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -27,9 +24,12 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; + +import static java.util.stream.Collectors.*; /** * @author xiaohu @@ -43,9 +43,6 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { handlerQuery(prizeDrawActivity); @@ -214,10 +227,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); prizeDrawActivity.setAwardList(activityAwardList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){ List activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); @@ -246,6 +256,104 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + activityGrant.setAwardList(activityAwardList); + + int limitCount = 0; + List grantRuleList = new ArrayList<>(); + if(EnumOfflineActivityMode.ONE.getCode().equals(prizeDrawActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + Integer order_limit = 0; + for (WxVtwoActivityRuleDetail rule :prizeDrawActivity.getAmountRulesObject().getRuleList()){ + if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){ + order_limit = rule.getAwardCount(); + } + } + if(order_limit != null && order_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setOrderId(order.getId()); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantRule.setName("订单抽奖("+order.getOrderNo()+")"); + grantRule.setAwardLimit(order_limit); + grantRuleList.add(grantRule); + + limitCount += order_limit; + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal limitAmount = prizeDrawActivity.getAmountRulesObject().getLimitAmount(); + BigDecimal awardAmount = prizeDrawActivity.getAmountRulesObject().getAwardAmount(); + if(limitAmount == null || orderMoneySum.compareTo(limitAmount) > 0){ + if(awardAmount != null && awardAmount.compareTo(BigDecimal.ZERO) > 0){ + Integer order_limit = orderMoneySum.divide(awardAmount,0, RoundingMode.HALF_DOWN).intValue(); + if(order_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantRule.setName("订单总金额抽奖"); + grantRule.setAwardLimit(order_limit); + grantRuleList.add(grantRule); + + limitCount += order_limit; + } + } + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(prizeDrawActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = prizeDrawActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity())); + WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount); + if(relatedRule != null && relatedRule.getAwardCount() != null){ + Integer joint_limit = relatedRule.getAwardCount(); + if(joint_limit > 0){ + WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); + grantRule.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantRule.setName("联单抽奖"); + grantRule.setAwardLimit(joint_limit); + grantRuleList.add(grantRule); + + limitCount += joint_limit; + } + } + } + + if(prizeDrawActivity.getAwardsLimit() != null && prizeDrawActivity.getAwardsLimit() > 0 + && prizeDrawActivity.getAwardsLimit() < limitCount){ + limitCount = prizeDrawActivity.getAwardsLimit(); + } + + activityGrant.setAwardLimit(limitCount); + activityGrant.setRuleList(grantRuleList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + + wxVtwoActivityGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml index 037fb6ac0..5c47656a8 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml @@ -12,18 +12,14 @@ - - - - - + @@ -34,11 +30,10 @@ id,tenant_id,parent_tenant_id, activity_id,activity_name,grant_id, - order_id,order_amount,mode_type, - min_amount,max_amount,related_count, + order_id,mode_type, award_id,award_grade,award_name, award_price,award_count,grant_price, - money_rule,mall_share_rate,merchant_share_rate, + share_rule,mall_share_rate,merchant_share_rate, status,create_date,update_date @@ -91,4 +86,25 @@ select from wx_vtwo_activity_grant_award where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_grant_award + (id, + activity_id,activity_name,grant_id, + order_id,mode_type, + award_id,award_grade,award_name, + award_price,award_count,grant_price, + share_rule,mall_share_rate,merchant_share_rate, + create_date,update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, + #{item.orderId,jdbcType=BIGINT},#{item.modeType,jdbcType=SMALLINT}, + #{item.awardId,jdbcType=BIGINT},#{item.awardGrade,jdbcType=INTEGER},#{item.awardName,jdbcType=VARCHAR}, + #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL}, + #{item.shareRule,jdbcType=SMALLINT},#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, + #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml index 0ac95f1d2..ceb582773 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml @@ -64,4 +64,17 @@ select from wx_vtwo_activity_grant_order where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_grant_order + (id, + grant_id,activity_id,order_id, + is_amount, status) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT}, + #{item.isAmount,jdbcType=SMALLINT},#{item.status,jdbcType=SMALLINT}) + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml index fadd21e2d..85dedc94a 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml @@ -92,4 +92,27 @@ FROM wx_vtwo_activity_grant_settlement + + + insert into wx_vtwo_activity_grant_settlement + (id, + activity_id,grant_id,grant_award_id, + award_id,grant_price,order_id, + order_no,order_amount,merchant_id, + order_ratio,order_grant_price,mall_share_rate, + merchant_share_rate,order_mall_share_price,order_merchant_share_price, + tax_amount,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantAwardId,jdbcType=BIGINT}, + #{item.awardId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL},#{item.orderId,jdbcType=BIGINT}, + #{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT}, + #{item.orderRatio,jdbcType=DECIMAL},#{item.orderGrantPrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL}, + #{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderMallSharePrice,jdbcType=DECIMAL},#{item.orderMerchantSharePrice,jdbcType=DECIMAL}, + #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP}, + #{item.updateDate,jdbcType=TIMESTAMP}) + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml index be65499e0..f0f464ee2 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml @@ -11,7 +11,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -35,10 +35,10 @@ id,tenant_id,parent_tenant_id, activity_id,activity_name,grant_id, - record_id,order_amount,mode_type, + order_id,order_amount,mode_type, min_amount,max_amount,related_count, award_id,award_name,cash_back_ratio, - cash_back_rule,cash_back,money_rule, + cash_back_rule,cash_back,share_rule, mall_share_rate,merchant_share_rate,tax_deduction_rules, tax_amount,status,create_date, update_date @@ -61,8 +61,8 @@ and `grant_id` = #{grantId} - - and `record_id` = #{recordId} + + and `order_id` = #{orderId} @@ -83,4 +83,28 @@ select from wx_vtwo_cash_back_grant_award where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_cash_back_grant_award + (id, + activity_id,activity_name,grant_id, + order_id,order_amount,mode_type, + min_amount,max_amount,related_count, + award_id,award_name,cash_back_ratio, + cash_back_rule,cash_back,share_rule, + mall_share_rate,merchant_share_rate,tax_deduction_rules, + tax_amount,create_date, + update_date) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, + #{item.orderId,jdbcType=BIGINT},#{item.orderAmount,jdbcType=DECIMAL},#{item.modeType,jdbcType=SMALLINT}, + #{item.minAmount,jdbcType=DECIMAL},#{item.maxAmount,jdbcType=DECIMAL},#{item.relatedCount,jdbcType=INTEGER}, + #{item.awardId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.cashBackRatio,jdbcType=DECIMAL}, + #{item.cashBackRule,jdbcType=SMALLINT},#{item.cashBack,jdbcType=DECIMAL},#{item.shareRule,jdbcType=SMALLINT}, + #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxDeductionRules,jdbcType=VARCHAR}, + #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + From 93357da0e9fab2aa8adf2f667a29a26943854794 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 25 May 2025 18:50:17 +0800 Subject: [PATCH 16/35] //activity v.2 --- .../WxVtwoPrizeDrawActivityController.java | 1 + .../domain/po/WxVtwoActivityGrant.java | 2 + .../domain/po/WxVtwoActivityGrantExport.java | 10 +- .../WxVtwoActivityGrantExportMapper.java | 4 + .../WxVtwoActivityGrantExportService.java | 5 + .../WxVtwoActivityGrantExportServiceImpl.java | 92 +++++++++++++++++++ ...twoActivityGrantSettlementServiceImpl.java | 7 ++ .../WxVtwoActivityGrantExportMapper.xml | 43 +++++++-- 8 files changed, 152 insertions(+), 12 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index ea4788d1e..7da141f62 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -301,6 +301,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { // return new ResultData(Result.ERROR,"签名为空"); // } activityGrant.setCreateBy(getUserId()); + activityGrant.setCreateByName(getUser().getName()); try{ wxVtwoPrizeDrawActivityService.grantAward(prizeDrawActivity, activityGrant); return new ResultData(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 4d5cd246c..44c93da53 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -140,6 +140,8 @@ public class WxVtwoActivityGrant extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; + @TableField(exist = false) + private String createByName; /** * 创建时间 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java index ff86eccab..b1398a71a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java @@ -103,31 +103,31 @@ public class WxVtwoActivityGrantExport extends TenantEntity { /** * 审批状态 */ - @TableField(value = "order_audit_status") + @TableField(exist = false) private Integer orderAuditStatus; /** * 审核人 */ - @TableField(value = "order_audit_by") + @TableField(exist = false) private Long orderAuditBy; /** * */ - @TableField(value = "order_audit_name") + @TableField(exist = false) private String orderAuditName; /** * 审批意见 */ - @TableField(value = "order_audit_remark") + @TableField(exist = false) private String orderAuditRemark; /** * 审核时间 */ - @TableField(value = "order_audit_time") + @TableField(exist = false) private Date orderAuditTime; /** diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java index f439564c0..d6187278d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrantExport; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantExportMapper extends CommonMapper { + void insertList(@Param("grantExportList")List grantExportList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java index 79c2bb3a1..9d091c61e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java @@ -1,7 +1,11 @@ package com.iformall.service; +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 java.util.List; /** * @author xiaohu @@ -10,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoActivityGrantExportService extends IService { + void saveGrantExport(WxVtwoActivityGrant activityGrant, List settlementList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index 68e87cb01..a313ce407 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -1,11 +1,25 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxVtwoActivityGrant; import com.iformall.domain.po.WxVtwoActivityGrantExport; +import com.iformall.domain.po.WxVtwoActivityGrantSettlement; +import com.iformall.domain.po.WxVtwoActivityOrder; import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.mapper.WxVtwoActivityGrantExportMapper; +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.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 +29,84 @@ import org.springframework.stereotype.Service; public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl implements WxVtwoActivityGrantExportService{ + @Autowired + private WxVtwoActivityGrantExportMapper wxVtwoActivityGrantExportMapper; + + @Override + public void saveGrantExport(WxVtwoActivityGrant activityGrant, List settlementList) { + + Map> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); + Map orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + List grantExportList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + orderSettlementMap.keySet().forEach(orderId -> { + List orderSettlementList = orderSettlementMap.get(orderId); + WxVtwoActivityOrder order = orderMap.get(orderId); + + WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList); + grantExport.setId(idWorker.nextId()); + grantExport.setActivityId(activityGrant.getActivityId()); + grantExport.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()); + + + }); + wxVtwoActivityGrantExportMapper.insertList(grantExportList); + } + + private WxVtwoActivityGrantExport getGrantExport(WxVtwoActivityOrder order,List orderSettlementList){ + WxVtwoActivityGrantExport grantExport = new WxVtwoActivityGrantExport(); + grantExport.updateTenantInfo(order); + grantExport.setOrderId(order.getId()); + grantExport.setOrderNo(order.getOrderNo()); + grantExport.setOrderAmount(order.getOrderMoney()); + grantExport.setMerchantId(order.getMerchantId()); + grantExport.setMerchantName(order.getMerchantName()); + grantExport.setMerchantShopNum(order.getShopNumber()); + grantExport.setBusinessId(order.getBusinessId()); + grantExport.setBusinessName(order.getBusinessName()); + grantExport.setLotteryNum(order.getLotteryNumStr()); + grantExport.setLotteryNum(order.getLotteryNum()); + grantExport.setAnniversaryLotteryNum(order.getAnniversaryLotteryNum()); + grantExport.setOrderCreateTime(order.getCreateDate()); + grantExport.setVipNum(order.getVipNum()); + grantExport.setCusName(order.getCusName()); + grantExport.setCusPhone(order.getCusPhone()); + grantExport.setCusAddress(order.getCusAddress()); + grantExport.setLegionId(order.getLegionId()); + grantExport.setLegionName(order.getLegionName()); + grantExport.setUnionId(order.getUnionId()); + grantExport.setUnionName(order.getUnionName()); + + grantExport.setGrantDetail(JSONObject.toJSONString(orderSettlementList)); + BigDecimal grantPrice = BigDecimal.ZERO; + BigDecimal mallSharePrice = BigDecimal.ZERO; + BigDecimal merchantSharePrice = BigDecimal.ZERO; + BigDecimal taxAmount = BigDecimal.ZERO; + for (WxVtwoActivityGrantSettlement grantSettlement:orderSettlementList){ + grantPrice = grantPrice.add(grantSettlement.getOrderGrantPrice()); + mallSharePrice = mallSharePrice.add(grantSettlement.getOrderMallSharePrice()); + merchantSharePrice = merchantSharePrice.add(grantSettlement.getOrderMerchantSharePrice()); + if(grantSettlement.getTaxAmount() != null ){ + taxAmount = taxAmount.add(grantSettlement.getTaxAmount()); + } + } + grantExport.setGrantPrice(grantPrice); + grantExport.setMallSharePrice(mallSharePrice); + grantExport.setMerchantSharePrice(merchantSharePrice); + grantExport.setMallShareRate(mallSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100))); + grantExport.setMerchantShareRate(merchantSharePrice.divide(grantPrice,4, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100))); + grantExport.setTaxAmount(taxAmount); + return grantExport; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index 82d2c14fd..fa190df6c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -5,6 +5,8 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.*; import com.iformall.enums.EnumOfflineActivityAwardsModeType; import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxVtwoActivityGrantMapper; +import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.service.WxVtwoActivityGrantSettlementService; import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +33,9 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) @@ -70,6 +75,8 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl orderList){ diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index 21030bdd9..acb7d9347 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -21,11 +21,6 @@ - - - - - @@ -59,8 +54,7 @@ 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, @@ -110,4 +104,39 @@ select from wx_vtwo_activity_grant_export where id = #{id} and tenant_id=#{tenantId} + + + insert into wx_vtwo_activity_grant_export + (id, + activity_id,order_id,order_no, + order_amount,merchant_id,merchant_name, + merchant_shop_num,business_id,business_name, + lottery_num,lottery_count,anniversary_lottery_num, + order_create_time, + vip_num,cus_name,cus_phone, + cus_card,cus_address,legion_id, + legion_name,union_id,union_name, + grant_id,grant_user_name,grant_user_card, + grant_by,grant_by_name,grant_time,grant_remark, + sign_img,grant_detail,grant_price, + mall_share_price,merchant_share_price,mall_share_rate, + merchant_share_rate,tax_amount) + values + + (#{item.id,jdbcType=BIGINT}, + #{item.activityId,jdbcType=BIGINT},#{item.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},#{itemLegionId,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}) + + From 2ddf8f5dced8d2157eba835964cf375287ac2bce Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 25 May 2025 22:06:45 +0800 Subject: [PATCH 17/35] //activity v.2 --- .../WxVtwoAmountGiftActivityController.java | 98 ++++++++- .../WxVtwoCashBackActivityController.java | 102 ++++++++- .../WxVtwoPrizeDrawActivityController.java | 15 +- .../domain/po/WxVtwoActivityGrantAward.java | 4 + .../domain/po/WxVtwoCashBackActivity.java | 4 +- .../domain/po/WxVtwoCashBackAward.java | 2 +- .../domain/po/WxVtwoCashBackGrant.java | 52 ++++- .../domain/po/WxVtwoCashBackGrantAward.java | 4 + .../WxVtwoAmountGiftActivityService.java | 9 +- .../WxVtwoCashBackActivityService.java | 9 +- .../service/WxVtwoCashBackGrantService.java | 6 + .../WxVtwoAmountGiftActivityServiceImpl.java | 111 +++++++++- .../WxVtwoCashBackActivityServiceImpl.java | 200 +++++++++++++++++- .../impl/WxVtwoCashBackGrantServiceImpl.java | 61 ++++++ .../WxVtwoPrizeDrawActivityServiceImpl.java | 2 +- .../mapper/WxVtwoCashBackActivityMapper.xml | 2 +- .../mapper/WxVtwoCashBackAwardMapper.xml | 2 +- .../mapper/WxVtwoCashBackGrantMapper.xml | 6 +- 18 files changed, 636 insertions(+), 53 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 3ef376e12..94fba3971 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -2,6 +2,7 @@ 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; @@ -11,6 +12,7 @@ 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.EnumOfflineActivityMode; import com.iformall.enums.EnumOfflineActivityStatus; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityOrderService; @@ -164,14 +166,15 @@ public class WxVtwoAmountGiftActivityController extends BaseController { activityOrder.setCreateDateBegin(activity.getStartTime()); activityOrder.setCreateDateEnd(activity.getEndTime()); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); if(orderOne == null){ - Map result = new HashMap<>(); - result.put("cus_name","查无此人"); - result.put("cus_phone",activityOrder.getCusPhone()); - return new ResultData(result); + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); } - Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + statisticsMap.put("cus_name",orderOne.getCusName()); statisticsMap.put("cus_phone",orderOne.getCusPhone()); return new ResultData(statisticsMap); @@ -227,4 +230,89 @@ public class WxVtwoAmountGiftActivityController extends BaseController { 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.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); + } + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index 31ec4ccae..d6dbc98d1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -2,6 +2,7 @@ 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; @@ -11,6 +12,7 @@ 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.EnumOfflineActivityMode; import com.iformall.enums.EnumOfflineActivityStatus; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityOrderService; @@ -178,7 +180,7 @@ public class WxVtwoCashBackActivityController extends BaseController { } TenantEntity tenantInfo = getTenantInfo(); - WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId()); if(activity == null){ return new ResultData(Result.ERROR,"未查询到活动"); } @@ -186,14 +188,15 @@ public class WxVtwoCashBackActivityController extends BaseController { activityOrder.setCreateDateBegin(activity.getStartTime()); activityOrder.setCreateDateEnd(activity.getEndTime()); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); if(orderOne == null){ - Map result = new HashMap<>(); - result.put("cus_name","查无此人"); - result.put("cus_phone",activityOrder.getCusPhone()); - return new ResultData(result); + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); } - Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + statisticsMap.put("cus_name",orderOne.getCusName()); statisticsMap.put("cus_phone",orderOne.getCusPhone()); return new ResultData(statisticsMap); @@ -212,7 +215,7 @@ public class WxVtwoCashBackActivityController extends BaseController { } TenantEntity tenantInfo = getTenantInfo(); - WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getById(activityOrder.getActivityId(), tenantInfo.getTenantId()); + WxVtwoCashBackActivity activity = wxVtwoCashBackActivityService.getInfoById(activityOrder.getActivityId(), tenantInfo.getTenantId()); if(activity == null){ return new ResultData(Result.ERROR,"未查询到活动"); } @@ -249,4 +252,89 @@ public class WxVtwoCashBackActivityController extends BaseController { 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.getById(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.getById(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.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); + } + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 7da141f62..92e6ef4e6 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -166,14 +166,15 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { activityOrder.setCreateDateBegin(activity.getStartTime()); activityOrder.setCreateDateEnd(activity.getEndTime()); + Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + WxVtwoActivityOrder orderOne = wxVtwoActivityOrderService.getlimitOne(activityOrder); if(orderOne == null){ - Map result = new HashMap<>(); - result.put("cus_name","查无此人"); - result.put("cus_phone",activityOrder.getCusPhone()); - return new ResultData(result); + statisticsMap.put("cus_name","查无此人"); + statisticsMap.put("cus_phone",activityOrder.getCusPhone()); + return new ResultData(statisticsMap); } - Map statisticsMap = wxVtwoActivityOrderService.getStatistics(activityOrder); + statisticsMap.put("cus_name",orderOne.getCusName()); statisticsMap.put("cus_phone",orderOne.getCusPhone()); return new ResultData(statisticsMap); @@ -241,7 +242,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); } - WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); + WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); if(prizeDrawActivity == null){ return new ResultData(Result.ERROR,"查询不到活动"); } @@ -280,7 +281,7 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); } - WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); + WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); if(prizeDrawActivity == null){ return new ResultData(Result.ERROR,"查询不到活动"); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java index 2a8ebe259..96683bf14 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java @@ -16,6 +16,10 @@ import lombok.Data; @TableName(value ="wx_vtwo_activity_grant_award") @Data public class WxVtwoActivityGrantAward extends TenantEntity { + + @TableField(exist = false) + private String name; + /** * */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java index 6c6446c7a..9cb30519f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackActivity.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -70,7 +72,7 @@ public class WxVtwoCashBackActivity extends TenantEntity { * 返现总金额限制 */ @TableField(value = "cash_back_limit") - private Integer cashBackLimit; + private BigDecimal cashBackLimit; /** * 返现计算规则 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java index 30259427d..79d6b22cb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackAward.java @@ -68,7 +68,7 @@ public class WxVtwoCashBackAward extends TenantEntity { * 返现金额限制 */ @TableField(value = "cash_back_limit") - private Integer cashBackLimit; + private BigDecimal cashBackLimit; /** * 分担规则(0-商管 1-商户 2-分担) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java index b6b3a8c4b..ad7a96ce4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -7,6 +9,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + +import com.iformall.domain.vo.WxVtwoActivityGrantRule; import lombok.Data; /** @@ -63,6 +68,18 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "lottery_num") private String lotteryNum; + @TableField(exist = false) + private List lotteryNumList; + public List getLotteryNumList() { + if(StringUtils.isNotBlank(lotteryNum)){ + try { + List stringList = JSON.parseArray(lotteryNum, String.class); + stringList.removeIf(String::isEmpty); + lotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return lotteryNumList; + } /** * 抽奖券数量 @@ -75,6 +92,18 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "anniversary_lottery_num") private String anniversaryLotteryNum; + @TableField(exist = false) + private List anniversaryLotteryNumList; + public List getAnniversaryLotteryNumList() { + if(StringUtils.isNotBlank(anniversaryLotteryNum)){ + try { + List stringList = JSON.parseArray(anniversaryLotteryNum, String.class); + stringList.removeIf(String::isEmpty); + anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; + } catch (Exception e){} + } + return anniversaryLotteryNumList; + } /** * 实际领奖人 @@ -94,12 +123,6 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "cash_back_limit") private BigDecimal cashBackLimit; - /** - * 返现金额计算规则 - */ - @TableField(value = "cash_back_rule") - private Integer cashBackRule; - /** * 返现金额 */ @@ -121,7 +144,7 @@ public class WxVtwoCashBackGrant extends TenantEntity { /** * 实际返现金额 */ - @TableField(value = "real_cash_back") + @TableField(exist = false) private BigDecimal realCashBack; /** @@ -147,6 +170,8 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "create_by") private Long createBy; + @TableField(exist = false) + private String createByName; /** * 创建时间 @@ -159,4 +184,17 @@ public class WxVtwoCashBackGrant extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List grantAwardList; + + @TableField(exist = false) + private List orderIdList; + + @TableField(exist = false) + private List orderFilterIdList; + + @TableField(exist = false) + private List orderList; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java index 3e2dfb9e2..5a6524110 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java @@ -16,6 +16,10 @@ import lombok.Data; @TableName(value ="wx_vtwo_cash_back_grant_award") @Data public class WxVtwoCashBackGrantAward extends TenantEntity { + + @TableField(exist = false) + private String name; + /** * */ diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java index a85402472..02f48a82f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java @@ -1,11 +1,8 @@ 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.WxVtwoCashBackActivity; -import com.iformall.domain.po.WxVtwoPrizeDrawActivity; -import com.iformall.domain.po.WxVtwoSpecialTopicActivity; import com.iformall.domain.po.base.TenantEntity; /** @@ -22,4 +19,8 @@ public interface WxVtwoAmountGiftActivityService extends IService { + void handleFromOrder(String activityName, WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 52e79cd35..53d9a43c0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -8,22 +8,27 @@ 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.WxVtwoActivityRuleDetail; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; -import com.iformall.service.ExcelService; -import com.iformall.service.WxVtwoActivityAwardService; -import com.iformall.service.WxVtwoActivityMerchantService; -import com.iformall.service.WxVtwoAmountGiftActivityService; +import com.iformall.service.*; 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.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import static java.util.stream.Collectors.toMap; /** * @author xiaohu @@ -55,6 +60,21 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + activityGrant.setAwardList(activityAwardList); + + List grantAwardList = new ArrayList<>(); + if(EnumOfflineActivityMode.ONE.getCode().equals(amountGiftActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + Integer awardGrade = 0; + for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){ + if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){ + awardGrade = rule.getAwardGrade(); + } + } + if(awardGrade != null){ + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setOrderId(order.getId()); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setName("订单赠礼("+order.getOrderNo()+")"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + Integer awardGrade = 0; + for (WxVtwoActivityRuleDetail rule :amountGiftActivity.getAmountRulesObject()){ + if((rule.getMinAmount() == null || orderMoneySum.compareTo(rule.getMinAmount()) >= 0) + && (rule.getMaxAmount() == null || orderMoneySum.compareTo(rule.getMaxAmount()) <= 0)){ + awardGrade = rule.getAwardGrade(); + } + } + if(awardGrade != null){ + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setName("订单金额赠礼"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(amountGiftActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = amountGiftActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity())); + WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount); + if(relatedRule != null && relatedRule.getAwardGrade() != null){ + Integer awardGrade = relatedRule.getAwardGrade(); + WxVtwoActivityGrantAward grantAward = new WxVtwoActivityGrantAward(); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantAward.setName("联单赠礼"); + grantAward.setAwardGrade(awardGrade); + grantAwardList.add(grantAward); + } + } + activityGrant.setGrantAwardList(grantAwardList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoAmountGiftActivity amountGiftActivity,WxVtwoActivityGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + + wxVtwoActivityGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index acc9553e3..5d47d23ef 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -20,11 +20,15 @@ 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 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.toList; +import static java.util.stream.Collectors.toMap; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_activity(线下返现活动)】的数据库操作Service实现 @@ -55,6 +59,12 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId); Map> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType)); cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); @@ -236,6 +243,187 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + + wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + + List grantAwardList = new ArrayList<>(); + BigDecimal cashBackTotal = BigDecimal.ZERO; + List sortAmountAwardList = cashBackActivity.getAmountRulesObject().stream().sorted(Comparator.comparing(WxVtwoCashBackAward::getMinAmount)).collect(toList()); + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || order.getOrderMoney().compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || order.getOrderMoney().compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = order.getOrderMoney().multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + if(cashBackAward.getCashBackLimit() != null && cashBackAward.getCashBackLimit().compareTo(BigDecimal.ZERO) > 0 + && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ + cashBackPrice = cashBackAward.getCashBackLimit(); + } + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单返现("+order.getOrderNo()+")"); + grantAward.setOrderId(order.getId()); + grantAward.setOrderAmount(order.getOrderMoney()); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || orderMoneySum.compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || orderMoneySum.compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单金额返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(cashBackActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = cashBackActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoCashBackAward::getRelatedCount, Function.identity())); + WxVtwoCashBackAward cashBackAward = jointCountMap.get(jointCount); + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("联单返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //计算返现金额最大限制 + BigDecimal prop = BigDecimal.ONE; + if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ + prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4,RoundingMode.HALF_UP); + } + BigDecimal realCashBackTotal = BigDecimal.ZERO; + if(prop.compareTo(BigDecimal.ONE) < 0){ + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); + realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); + } + } + + activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); + activityGrant.setCashBack(realCashBackTotal); + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + //单独算税点 + BigDecimal taxAmount = BigDecimal.ZERO; + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); + 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()); + 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)); + + //税点分摊到发奖上面 + } + } + + + + + 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 + @Transactional(rollbackFor = Exception.class) + public void grantAward(WxVtwoCashBackActivity cashBackActivity,WxVtwoCashBackGrant activityGrant) { + + List orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); + +// wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); +// +// wxVtwoActivityGrantService.saveOrUpdate(activityGrant); +// +// wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); +// +// wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant); +// +// wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java index 974061879..716b25857 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java @@ -1,11 +1,22 @@ 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.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.Date; +import java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_grant(线下返现活动发奖)】的数据库操作Service实现 @@ -15,6 +26,56 @@ import org.springframework.stereotype.Service; public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl implements WxVtwoCashBackGrantService{ + @Autowired + private WxVtwoCashBackGrantMapper wxVtwoCashBackGrantMapper; + + @Override + public void handleFromOrder(String activityName, WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant) { + activityGrant.setActivityName(activityName); + activityGrant.setOrderList(orderList); + BigDecimal orderMoneySum = BigDecimal.ZERO; + List lotteryNumList = new ArrayList<>(); + int lotteryCount = 0; + List anniversaryLotteryNumList = new ArrayList<>(); + for (WxVtwoActivityOrder order : orderList) { + orderMoneySum = orderMoneySum.add(order.getOrderMoney()); + if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){ + lotteryNumList.addAll(order.getLotteryNumList()); + } + if(order.getLotteryCount() != null){ + lotteryCount = lotteryCount + order.getLotteryCount(); + } + if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){ + anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum()); + } + } + activityGrant.setOrderMoneySum(orderMoneySum); + activityGrant.setOrderCount(orderList.size()); + activityGrant.setCusName(orderList.get(0).getCusName()); + activityGrant.setCusPhone(orderList.get(0).getCusPhone()); + if(!isGrant){ + activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList)); + activityGrant.setLotteryCount(lotteryCount); + activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); + } + } + + @Override + public boolean saveOrUpdate(WxVtwoCashBackGrant activityGrant) { + Date now = new Date(); + if(activityGrant.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + activityGrant.setId(idWorker.nextId()); + activityGrant.setCreateDate(now); + activityGrant.setCreateDate(now); + wxVtwoCashBackGrantMapper.insert(activityGrant); + } + else{ + activityGrant.setUpdateDate(now); + wxVtwoCashBackGrantMapper.updateById(activityGrant); + } + return true; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index a19cdb4fb..ac1eb8148 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -299,7 +299,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl 0){ WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); - grantRule.setName("订单总金额抽奖"); + grantRule.setName("订单金额抽奖"); grantRule.setAwardLimit(order_limit); grantRuleList.add(grantRule); diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml index 1c7bbc601..e60da9d1c 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackActivityMapper.xml @@ -14,7 +14,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml index c836fd795..8abb585d5 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackAwardMapper.xml @@ -15,7 +15,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml index f090237b5..d919ad53a 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml @@ -20,11 +20,9 @@ - - @@ -39,8 +37,8 @@ order_count,cus_name,cus_phone, lottery_num,lottery_count,anniversary_lottery_num, real_name,real_card,cash_back_limit, - cash_back_rule,cash_back,tax_deduction_rules, - tax_amount,real_cash_back,remark,sign_img, + cash_back,tax_deduction_rules, + tax_amount,remark,sign_img, status,create_by,create_date, update_date From 78f6d8ffcbdde8953e380558b78b72578a4ceb4e Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 25 May 2025 22:44:39 +0800 Subject: [PATCH 18/35] //activity v.2 --- .../com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java index 50c78ad88..edf3c5b70 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivitySpecialTopicMapper.java @@ -3,7 +3,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivitySpecialTopic; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.lettuce.core.dynamic.annotation.Param; +import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; @@ -22,7 +22,7 @@ public interface WxVtwoActivitySpecialTopicMapper extends CommonMapper Date: Sun, 25 May 2025 23:23:32 +0800 Subject: [PATCH 19/35] //activity v.2 --- .../domain/po/WxVtwoActivityOrder.java | 6 + .../WxVtwoActivityGrantExportService.java | 3 + .../WxVtwoActivityGrantSettlementService.java | 3 + .../WxVtwoCashBackGrantAwardService.java | 8 + .../WxVtwoActivityGrantExportServiceImpl.java | 30 ++- ...twoActivityGrantSettlementServiceImpl.java | 84 +++++++- .../impl/WxVtwoActivityOrderServiceImpl.java | 3 + .../WxVtwoCashBackActivityServiceImpl.java | 183 ++-------------- .../WxVtwoCashBackGrantAwardServiceImpl.java | 203 +++++++++++++++++- 9 files changed, 353 insertions(+), 170 deletions(-) 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 6ae5aab63..849dea992 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java @@ -252,6 +252,12 @@ public class WxVtwoActivityOrder extends TenantEntity { @TableField(exist = false) private Long activityId; + /** + * 是否可以发奖 + */ + @TableField(exist = false) + private Integer grantStatus; + /** * 是否参与总金额计算 */ diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java index 9d091c61e..f3df84bed 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java @@ -4,6 +4,7 @@ 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; @@ -15,4 +16,6 @@ import java.util.List; public interface WxVtwoActivityGrantExportService extends IService { void saveGrantExport(WxVtwoActivityGrant activityGrant, List settlementList); + + void saveGrantExport(WxVtwoCashBackGrant activityGrant, List settlementList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java index 8f4e26352..cdfb938c9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java @@ -3,6 +3,7 @@ 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; /** * @author xiaohu @@ -12,4 +13,6 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface WxVtwoActivityGrantSettlementService extends IService { void saveGrantSettlement(WxVtwoActivityGrant activityGrant); + + void saveGrantSettlement(WxVtwoCashBackGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java index 651f90b08..0f60ffdb4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java @@ -1,8 +1,13 @@ 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 java.util.List; + /** * @author xiaohu * @description 针对表【wx_vtwo_cash_back_grant_award(线下返现活动发放奖励)】的数据库操作Service @@ -10,4 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface WxVtwoCashBackGrantAwardService extends IService { + void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List orderList); + + void saveGrantAward(WxVtwoCashBackGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index a313ce407..1890b202f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -3,10 +3,7 @@ package com.iformall.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxVtwoActivityGrant; -import com.iformall.domain.po.WxVtwoActivityGrantExport; -import com.iformall.domain.po.WxVtwoActivityGrantSettlement; -import com.iformall.domain.po.WxVtwoActivityOrder; +import com.iformall.domain.po.*; import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.mapper.WxVtwoActivityGrantExportMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -107,6 +104,31 @@ public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl settlementList) { + Map> orderSettlementMap = settlementList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantSettlement::getOrderId)); + Map orderMap = activityGrant.getOrderList().stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + List grantExportList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + orderSettlementMap.keySet().forEach(orderId -> { + List orderSettlementList = orderSettlementMap.get(orderId); + WxVtwoActivityOrder order = orderMap.get(orderId); + + WxVtwoActivityGrantExport grantExport = getGrantExport(order,orderSettlementList); + grantExport.setId(idWorker.nextId()); + grantExport.setActivityId(activityGrant.getActivityId()); + grantExport.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()); + }); + wxVtwoActivityGrantExportMapper.insertList(grantExportList); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index fa190df6c..9618a2432 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -79,6 +79,40 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl orderList){ BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); int size = orderList.size() - 1; @@ -94,7 +128,52 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) + .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + List cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); + + List grantAwardList = activityGrant.getGrantAwardList(); + Map> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackGrantAward::getModeType)); + List amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + List settlementList = new ArrayList<>(); + final IdWorker idWorker = IdWorker.get(); + if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ + handleOrderRatio(amountOrderList); + Map amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + for (WxVtwoCashBackGrantAward grant : amountGrantAwardList) { + if(grant.getOrderId() != null){ + WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId()); + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true); + settlementList.add(settlement); + }else{ + for (WxVtwoActivityOrder order : amountOrderList){ + WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); + settlementList.add(settlement); + } + } + } + } + if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){ + handleOrderRatio(cmountOrderList); + for (WxVtwoCashBackGrantAward grant : countGrantAwardList) { + for (WxVtwoActivityOrder order : amountOrderList){ + 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); @@ -102,8 +181,7 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl grantAwardList = new ArrayList<>(); - BigDecimal cashBackTotal = BigDecimal.ZERO; - List sortAmountAwardList = cashBackActivity.getAmountRulesObject().stream().sorted(Comparator.comparing(WxVtwoCashBackAward::getMinAmount)).collect(toList()); - if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ - for(WxVtwoActivityOrder order:orderList){ - WxVtwoCashBackAward cashBackAward = null; - for(WxVtwoCashBackAward award:sortAmountAwardList){ - if((award.getMinAmount() == null || order.getOrderMoney().compareTo(award.getMinAmount()) >= 0) - && (award.getMaxAmount() == null || order.getOrderMoney().compareTo(award.getMaxAmount()) <= 0)){ - cashBackAward = award; - } - } - if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ - BigDecimal cashBackPrice = order.getOrderMoney().multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); - if(cashBackAward.getCashBackLimit() != null && cashBackAward.getCashBackLimit().compareTo(BigDecimal.ZERO) > 0 - && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ - cashBackPrice = cashBackAward.getCashBackLimit(); - } - cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); - if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ - cashBackTotal = cashBackTotal.add(cashBackPrice); - WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); - grantAward.setName("订单返现("+order.getOrderNo()+")"); - grantAward.setOrderId(order.getId()); - grantAward.setOrderAmount(order.getOrderMoney()); - grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); - grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); - grantAward.setCashBack(cashBackPrice); - handleGrantAward(grantAward,cashBackAward); - grantAwardList.add(grantAward); - } - } - } - }else{ - BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) - .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - WxVtwoCashBackAward cashBackAward = null; - for(WxVtwoCashBackAward award:sortAmountAwardList){ - if((award.getMinAmount() == null || orderMoneySum.compareTo(award.getMinAmount()) >= 0) - && (award.getMaxAmount() == null || orderMoneySum.compareTo(award.getMaxAmount()) <= 0)){ - cashBackAward = award; - } - } - if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ - BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); - cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); - - if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ - cashBackTotal = cashBackTotal.add(cashBackPrice); - WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); - grantAward.setName("订单金额返现"); - grantAward.setOrderAmount(orderMoneySum); - grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); - grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); - grantAward.setCashBack(cashBackPrice); - handleGrantAward(grantAward,cashBackAward); - grantAwardList.add(grantAward); - } - } - } - - //联单 - Integer jointCount = wxVtwoActivityOrderService.getJointCount(cashBackActivity.getRelatedModel(),orderList); - if(jointCount != 0){ - Map jointCountMap = cashBackActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoCashBackAward::getRelatedCount, Function.identity())); - WxVtwoCashBackAward cashBackAward = jointCountMap.get(jointCount); - if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ - BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); - cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); - - if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ - cashBackTotal = cashBackTotal.add(cashBackPrice); - WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); - grantAward.setName("联单返现"); - grantAward.setOrderAmount(orderMoneySum); - grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); - grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); - grantAward.setCashBack(cashBackPrice); - handleGrantAward(grantAward,cashBackAward); - grantAwardList.add(grantAward); - } - } - } - - //计算返现金额最大限制 - BigDecimal prop = BigDecimal.ONE; - if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ - prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4,RoundingMode.HALF_UP); - } - BigDecimal realCashBackTotal = BigDecimal.ZERO; - if(prop.compareTo(BigDecimal.ONE) < 0){ - for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ - grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); - realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); - } - } - - activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); - activityGrant.setCashBack(realCashBackTotal); - if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ - //单独算税点 - BigDecimal taxAmount = BigDecimal.ZERO; - for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ - grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); - 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()); - 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)); - - //税点分摊到发奖上面 - } - } - - - + wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); - 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 @Transactional(rollbackFor = Exception.class) @@ -413,15 +270,17 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); -// wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); -// -// wxVtwoActivityGrantService.saveOrUpdate(activityGrant); -// -// wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); -// -// wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant); -// -// wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); + wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + + wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); + + wxVtwoCashBackGrantService.saveOrUpdate(activityGrant); + + wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); + + wxVtwoCashBackGrantAwardService.saveGrantAward(activityGrant); + + wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java index bc5f36931..b7c7fdd23 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java @@ -1,11 +1,30 @@ 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.WxVtwoActivityTaxDeductionRule; +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.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +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 +34,188 @@ import org.springframework.stereotype.Service; public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl implements WxVtwoCashBackGrantAwardService{ + @Autowired + private WxVtwoCashBackGrantAwardMapper wxVtwoCashBackGrantAwardMapper; + + @Autowired + private WxVtwoActivityOrderService wxVtwoActivityOrderService; + + @Override + public void handleGrantAwardList(WxVtwoCashBackActivity cashBackActivity, WxVtwoCashBackGrant activityGrant, List orderList) { + List grantAwardList = new ArrayList<>(); + BigDecimal cashBackTotal = BigDecimal.ZERO; + List sortAmountAwardList = cashBackActivity.getAmountRulesObject().stream().sorted(Comparator.comparing(WxVtwoCashBackAward::getMinAmount)).collect(toList()); + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + for(WxVtwoActivityOrder order:orderList){ + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || order.getOrderMoney().compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || order.getOrderMoney().compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = order.getOrderMoney().multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + if(cashBackAward.getCashBackLimit() != null && cashBackAward.getCashBackLimit().compareTo(BigDecimal.ZERO) > 0 + && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ + cashBackPrice = cashBackAward.getCashBackLimit(); + } + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单返现("+order.getOrderNo()+")"); + grantAward.setOrderId(order.getId()); + grantAward.setOrderAmount(order.getOrderMoney()); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + }else{ + BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) + .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + WxVtwoCashBackAward cashBackAward = null; + for(WxVtwoCashBackAward award:sortAmountAwardList){ + if((award.getMinAmount() == null || orderMoneySum.compareTo(award.getMinAmount()) >= 0) + && (award.getMaxAmount() == null || orderMoneySum.compareTo(award.getMaxAmount()) <= 0)){ + cashBackAward = award; + } + } + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("订单金额返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //联单 + Integer jointCount = wxVtwoActivityOrderService.getJointCount(cashBackActivity.getRelatedModel(),orderList); + if(jointCount != 0){ + Map jointCountMap = cashBackActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoCashBackAward::getRelatedCount, Function.identity())); + WxVtwoCashBackAward cashBackAward = jointCountMap.get(jointCount); + if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ + BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); + cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule()); + + if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ + cashBackTotal = cashBackTotal.add(cashBackPrice); + WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); + grantAward.setName("联单返现"); + grantAward.setOrderAmount(orderMoneySum); + grantAward.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); + grantAward.setCashBackRule(cashBackActivity.getCashBackRule()); + grantAward.setCashBack(cashBackPrice); + handleGrantAward(grantAward,cashBackAward); + grantAwardList.add(grantAward); + } + } + } + + //计算返现金额最大限制 + BigDecimal prop = BigDecimal.ONE; + if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ + prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP); + } + BigDecimal realCashBackTotal = BigDecimal.ZERO; + if(prop.compareTo(BigDecimal.ONE) < 0){ + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule())); + realCashBackTotal = realCashBackTotal.add(grantAward.getCashBack()); + } + } + + activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); + activityGrant.setCashBack(realCashBackTotal); + if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ + //单独算税点 + BigDecimal taxAmount = BigDecimal.ZERO; + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + grantAward.setTaxDeductionRules(cashBackActivity.getTaxDeductionRules()); + 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()); + 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){ + BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; + grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); + } + } + } + activityGrant.setGrantAwardList(grantAwardList); + } + + private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){ + BigDecimal awardsRulePrice = BigDecimal.ZERO; + if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.setScale(2, RoundingMode.HALF_UP); + } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(awardsRule)) { + awardsRulePrice = awardsPrice.setScale(0, RoundingMode.HALF_UP); + }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(awardsRule)){ + awardsRulePrice = awardsPrice.divide(new BigDecimal(10)) + .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); + } + return awardsRulePrice; + } + + private void handleGrantAward(WxVtwoCashBackGrantAward grantAward,WxVtwoCashBackAward cashBackAward){ + grantAward.setMinAmount(cashBackAward.getMinAmount()); + grantAward.setMaxAmount(cashBackAward.getMaxAmount()); + grantAward.setAwardId(cashBackAward.getId()); + grantAward.setAwardName(cashBackAward.getName()); + grantAward.setCashBackRatio(cashBackAward.getCashBackRatio()); + + grantAward.setShareRule(cashBackAward.getShareRule()); + grantAward.setMallShareRate(cashBackAward.getMallShareRate()); + grantAward.setMerchantShareRate(cashBackAward.getMerchantShareRate()); + } + + @Override + public void saveGrantAward(WxVtwoCashBackGrant activityGrant) { + List grantAwardList = activityGrant.getGrantAwardList(); + final IdWorker idWorker = IdWorker.get(); + for (WxVtwoCashBackGrantAward grantAward : grantAwardList) { + grantAward.setId(idWorker.nextId()); + grantAward.updateTenantInfo(activityGrant); + grantAward.setActivityId(activityGrant.getActivityId()); + grantAward.setActivityName(activityGrant.getActivityName()); + grantAward.setGrantId(activityGrant.getId()); + + grantAward.setCreateDate(activityGrant.getUpdateDate()); + grantAward.setUpdateDate(activityGrant.getUpdateDate()); + } + wxVtwoCashBackGrantAwardMapper.insertList(grantAwardList); + activityGrant.setGrantAwardList(grantAwardList); + } } From 69156ce5bb0590a6132d10242d6144e50c96c95b Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sun, 25 May 2025 23:34:32 +0800 Subject: [PATCH 20/35] //activity v.2 --- .../iformall/service/impl/WxVtwoActivityOrderServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) 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 2b9b3c137..a7ab804d1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -145,6 +145,8 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl Date: Mon, 26 May 2025 02:30:41 +0800 Subject: [PATCH 21/35] //activity v.2 --- .../WxVtwoAmountGiftActivityController.java | 13 +++ .../WxVtwoCashBackActivityController.java | 14 +++ .../WxVtwoPrizeDrawActivityController.java | 17 +++- .../WxVtwoActivityGrantExportMapper.java | 2 + .../mapper/WxVtwoActivityOrderMapper.java | 1 + .../WxVtwoActivityGrantAwardService.java | 3 +- .../WxVtwoActivityGrantExportService.java | 5 + .../service/WxVtwoActivityGrantService.java | 3 + .../service/WxVtwoActivityOrderService.java | 8 ++ .../WxVtwoAmountGiftActivityService.java | 5 + .../WxVtwoCashBackActivityService.java | 5 + .../service/WxVtwoCashBackGrantService.java | 2 + .../WxVtwoPrizeDrawActivityService.java | 2 + .../WxVtwoActivityGrantAwardServiceImpl.java | 9 +- .../WxVtwoActivityGrantExportServiceImpl.java | 91 +++++++++++++++++++ .../impl/WxVtwoActivityGrantServiceImpl.java | 3 + ...twoActivityGrantSettlementServiceImpl.java | 5 + .../impl/WxVtwoActivityOrderServiceImpl.java | 22 ++++- .../WxVtwoAmountGiftActivityServiceImpl.java | 66 ++++++++++++-- .../WxVtwoCashBackActivityServiceImpl.java | 50 +++++++++- .../WxVtwoPrizeDrawActivityServiceImpl.java | 57 +++++++++++- .../WxVtwoActivityGrantExportMapper.xml | 3 +- .../mapper/WxVtwoActivityOrderMapper.xml | 9 ++ 23 files changed, 370 insertions(+), 25 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 94fba3971..13dc63fae 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -15,6 +15,7 @@ import com.iformall.enums.EnumOfflineActivityMerchantType; import com.iformall.enums.EnumOfflineActivityMode; import com.iformall.enums.EnumOfflineActivityStatus; 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; @@ -315,4 +316,16 @@ public class WxVtwoAmountGiftActivityController extends BaseController { } } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoAmountGiftActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index d6dbc98d1..b7b75a291 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -18,6 +18,7 @@ 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; @@ -51,6 +52,7 @@ public class WxVtwoCashBackActivityController extends BaseController { @Autowired private WxVtwoActivityOrderService wxVtwoActivityOrderService; + @ApiVersion(group = SwaggerConstant.V_A_2_0) @ApiOperation("分页列表接口") @GetMapping("list") @@ -337,4 +339,16 @@ public class WxVtwoCashBackActivityController extends BaseController { } } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoCashBackGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoCashBackActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index 92e6ef4e6..a9c81149d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -14,10 +14,7 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.OfflineActivityAwardsItemVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; -import com.iformall.service.WxOfflineActivityGrantAwardService; -import com.iformall.service.WxOfflineActivityService; -import com.iformall.service.WxVtwoActivityOrderService; -import com.iformall.service.WxVtwoPrizeDrawActivityService; +import com.iformall.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -315,4 +312,16 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { } } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("活动发奖明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxVtwoActivityGrant activityGrant, HttpServletRequest request, HttpServletResponse response) { + + if(activityGrant.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + activityGrant.updateTenantInfo(getTenantInfo()); + wxVtwoPrizeDrawActivityService.grantExport(request,response,activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java index d6187278d..ffec39e70 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantExportMapper.java @@ -16,6 +16,8 @@ import java.util.List; public interface WxVtwoActivityGrantExportMapper extends CommonMapper { void insertList(@Param("grantExportList")List grantExportList); + + List findList(WxVtwoActivityGrantExport exportQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java index 7b9af184b..0647a3697 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityOrderMapper.java @@ -40,6 +40,7 @@ public interface WxVtwoActivityOrderMapper extends CommonMapper getBusinessStatistics(WxVtwoActivityOrder record); + List findAuditDetailList(WxVtwoActivityOrder orderQ); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java index 4c9e8af0a..fefc4e4a2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java @@ -1,5 +1,6 @@ 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; @@ -13,5 +14,5 @@ import java.util.List; */ public interface WxVtwoActivityGrantAwardService extends IService { - void saveGrantAward(WxVtwoActivityGrant activityGrant); + void saveGrantAward(WxVtwoActivityGrant activityGrant,List awardList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java index f3df84bed..0e30365d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantExportService.java @@ -1,5 +1,6 @@ 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; @@ -18,4 +19,8 @@ public interface WxVtwoActivityGrantExportService extends IService settlementList); void saveGrantExport(WxVtwoCashBackGrant activityGrant, List settlementList); + + List findActivityGrantList(Long activityId, String tenantId); + + List getExportHeadList(); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java index 83c40ecff..fe7dfb139 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java @@ -4,6 +4,8 @@ import com.iformall.domain.po.WxVtwoActivityGrant; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxVtwoActivityOrder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -14,4 +16,5 @@ import java.util.List; public interface WxVtwoActivityGrantService extends IService { void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 8ad19d03f..1261ac2ad 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -42,4 +42,12 @@ public interface WxVtwoActivityOrderService extends IService findGrantOrder(TenantEntity tenantInfo, List idList, List filterIdList); Integer getJointCount(Integer relatedModel, List orderList); + + /** + * 只查询审核信息 + * @param ids + * @param tenantId + * @return + */ + Map findAuditDetailMap(List ids, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java index 02f48a82f..bae8ebf87 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoAmountGiftActivityService.java @@ -5,6 +5,9 @@ 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 * @description 针对表【wx_vtwo_amount_gift_activity(线下满额赠礼活动)】的数据库操作Service @@ -23,4 +26,6 @@ public interface WxVtwoAmountGiftActivityService extends IService awardList) { - Map activityAwardMap = wxVtwoActivityAwardService.findActivityAwardMap(activityGrant.getActivityId(), activityGrant.getTenantId()); + Map activityAwardMap = awardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); List grantAwardList = activityGrant.getGrantAwardList(); boolean isAwardId = grantAwardList.stream().anyMatch(grantAward -> grantAward.getAwardId() == null); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index 1890b202f..579253e91 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -1,17 +1,21 @@ 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.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; @@ -29,6 +33,9 @@ public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl settlementList) { @@ -129,6 +136,90 @@ public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl findActivityGrantList(Long activityId, String tenantId) { + WxVtwoActivityGrantExport exportQ = new WxVtwoActivityGrantExport(); + exportQ.setTenantId(tenantId); + exportQ.setActivityId(activityId); + List exportList = wxVtwoActivityGrantExportMapper.findList(exportQ); + + if(exportList != null && !exportList.isEmpty()){ + List orderIds = exportList.stream().map(e -> e.getOrderId()).distinct().collect(Collectors.toList()); + Map auditDetailMap = wxVtwoActivityOrderService.findAuditDetailMap(orderIds,tenantId); + for(WxVtwoActivityGrantExport export : exportList){ + WxVtwoActivityOrder order = auditDetailMap.get(export.getOrderId()); + export.setOrderAuditStatus(order.getAuditStatus()); + export.setOrderAuditRemark(order.getAuditRemark()); + export.setOrderAuditBy(order.getAuditBy()); + export.setOrderAuditName(order.getAuditByName()); + export.setOrderAuditTime(order.getAuditTime()); + } + } + return exportList; + } + + @Override + public List getExportHeadList() { + List headList = new ArrayList<>(); + ExcelExportEntity entity1 = new ExcelExportEntity("订单编号","orderNo",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("订单金额","orderAmount",20); + headList.add(entity2); + ExcelExportEntity entity3 = new ExcelExportEntity("订单地址","cusAddress",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商户名称","merchantName",20); + headList.add(entity4); + ExcelExportEntity entity5 = new ExcelExportEntity("铺位号","merchantShopNum",20); + headList.add(entity5); + ExcelExportEntity entity6 = new ExcelExportEntity("业态","businessName",20); + headList.add(entity6); + ExcelExportEntity entity7 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); + headList.add(entity7); + ExcelExportEntity entity8 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); + headList.add(entity8); + ExcelExportEntity entity9 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); + headList.add(entity9); + ExcelExportEntity entity10 = new ExcelExportEntity("提交时间","orderCreateTime",20); + entity10.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity10); + ExcelExportEntity entity11 = new ExcelExportEntity("订单状态","orderAuditStatus",20); + entity11.setReplace(new String[]{"审核中_0", "已审批_1", "已驳回_2", "已退单_3", "已发奖_10"}); + headList.add(entity11); + ExcelExportEntity entity12 = new ExcelExportEntity("审核人","orderAuditName",20); + headList.add(entity12); + ExcelExportEntity entity13 = new ExcelExportEntity("审核时间","orderAuditTime",20); + entity13.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity13); + + ExcelExportEntity entity21 = new ExcelExportEntity("客户姓名","cusName",20); + headList.add(entity21); + ExcelExportEntity entity22 = new ExcelExportEntity("客户电话","cusPhone",20); + headList.add(entity22); + ExcelExportEntity entity23 = new ExcelExportEntity("vip卡","vipNum",20); + headList.add(entity23); + ExcelExportEntity entity24 = new ExcelExportEntity("所属军团","legionName",20); + headList.add(entity24); + ExcelExportEntity entity25 = new ExcelExportEntity("所属联盟","unionName",20); + headList.add(entity25); + + + ExcelExportEntity entity31 = new ExcelExportEntity("领奖人","grantUserName",20); + headList.add(entity31); + ExcelExportEntity entity32 = new ExcelExportEntity("领奖人身份证号","grantUserCard",20); + headList.add(entity32); + ExcelExportEntity entity33 = new ExcelExportEntity("发奖人","grantByName",20); + headList.add(entity33); + ExcelExportEntity entity34 = new ExcelExportEntity("发奖时间","grantTime",20); + entity25.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity34); + ExcelExportEntity entity35 = new ExcelExportEntity("签名图片","signImg",40); +// entity35.setType(BaseEntityTypeConstants.IMAGE_TYPE); +// entity35.setExportImageType(1); +// entity35.setHeight(20); + headList.add(entity35); + return headList; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java index 0749d86b4..e8c59c701 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantServiceImpl.java @@ -15,6 +15,8 @@ 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.Date; @@ -79,6 +81,7 @@ public class WxVtwoActivityGrantServiceImpl extends ServiceImpl list = this.findList(record, activityId); - excelService.exportExcel(list, null, "活动订单列表", WxOfflineActivityRecord.class, "活动订单列表.xlsx", response, false); + excelService.exportExcel(list, null, "活动订单列表", WxVtwoActivityOrder.class, "活动订单列表.xlsx", response, false); } @Override @@ -421,6 +421,26 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl findAuditDetailMap(List ids, String tenantId) { + WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); + orderQ.setTenantId(tenantId); + orderQ.setIds(ids); + List auditDetailList = wxVtwoActivityOrderMapper.findAuditDetailList(orderQ); + + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.setTenantId(tenantId); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + + for (WxVtwoActivityOrder record : auditDetailList) { + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + } + + return auditDetailList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 53d9a43c0..68914b7f6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -1,5 +1,6 @@ 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; @@ -15,20 +16,21 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; 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 javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; -import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.*; +import static java.util.stream.Collectors.toList; /** * @author xiaohu @@ -75,6 +77,9 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); - activityGrant.setAwardList(activityAwardList); + activityGrant.setAwardList(amountGiftActivity.getAwardList()); List grantAwardList = new ArrayList<>(); if(EnumOfflineActivityMode.ONE.getCode().equals(amountGiftActivity.getAmountModel())){ @@ -331,11 +335,57 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(activityAwardList == null || activityAwardList.isEmpty()){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + + List headList = wxVtwoActivityGrantExportService.getExportHeadList(); + for (WxVtwoActivityAward activityAward:activityAwardList){ + ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20); + headList.add(entity_); + } + + ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity6); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + Map awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount))); + map = BeanUtils.toMap(e); + for (Long awardId : awardCountMap.keySet()) { + map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId)); + } + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index 7fa3f64b2..a1eb67220 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -1,5 +1,6 @@ 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; @@ -15,19 +16,22 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; 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 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.toList; -import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.*; +import static java.util.stream.Collectors.summingInt; /** * @author xiaohu @@ -74,6 +78,9 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl headList = wxVtwoActivityGrantExportService.getExportHeadList(); + + ExcelExportEntity entity1 = new ExcelExportEntity("返现总金额","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("税金额","taxAmount",20); + headList.add(entity6); + ExcelExportEntity entity10= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity10); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + map = BeanUtils.toMap(e); + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index ac1eb8148..2f5ee281f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -17,6 +18,7 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; 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; @@ -28,6 +30,7 @@ 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.*; @@ -76,6 +79,9 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); - activityGrant.setAwardList(activityAwardList); + activityGrant.setAwardList(prizeDrawActivity.getAwardList()); int limitCount = 0; List grantRuleList = new ArrayList<>(); @@ -349,11 +354,57 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); + if(activityAwardList == null || activityAwardList.isEmpty()){ + throw new MallinkException(Result.ERROR,"未查询到活动"); + } + + List headList = wxVtwoActivityGrantExportService.getExportHeadList(); + for (WxVtwoActivityAward activityAward:activityAwardList){ + ExcelExportEntity entity_ = new ExcelExportEntity(activityAward.getName(),String.valueOf(activityAward.getId())+"_count",20); + headList.add(entity_); + } + + ExcelExportEntity entity1 = new ExcelExportEntity("奖品总价值","grantPrice",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("商管承担总比例","mallShareRate",20); + headList.add(entity2); + ExcelExportEntity entity3= new ExcelExportEntity("商户承担总比例","merchantShareRate",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商管承担总金额","mallShareRate",20); + headList.add(entity4); + ExcelExportEntity entity5= new ExcelExportEntity("商户承担总金额","merchantShareRate",20); + headList.add(entity5); + ExcelExportEntity entity6= new ExcelExportEntity("备注","grantRemark",20); + headList.add(entity6); + + List activityGrantExportList = wxVtwoActivityGrantExportService.findActivityGrantList(activityGrant.getActivityId(),activityGrant.getTenantId()); + List> grantObjectList = new ArrayList<>(); + if(activityGrantExportList != null && !activityGrantExportList.isEmpty()){ + grantObjectList = activityGrantExportList.stream().map(e -> { + Map map = new HashMap<>(); + try { + Map awardCountMap = JSONObject.parseArray(e.getGrantDetail(), WxVtwoActivityGrantSettlement.class).stream().collect(groupingBy(WxVtwoActivityGrantSettlement::getAwardId, summingInt(WxVtwoActivityGrantSettlement::getAwardCount))); + map = BeanUtils.toMap(e); + for (Long awardId : awardCountMap.keySet()) { + map.put(String.valueOf(awardId) + "_count", awardCountMap.get(awardId)); + } + } catch (Exception ex) { + } + return map; + }).collect(toList()); + } + excelService.exportExcel(headList, grantObjectList, null, "抽奖活动发放明细", "抽奖活动发放明细.xlsx",true, response); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index acb7d9347..f54478a8e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -92,7 +92,8 @@ #{idItem} - order by ${sortColumns} + + order by grant_time desc + select + id,tenant_id,parent_tenant_id, + audit_status,audit_remark, + audit_by,audit_time + from wx_vtwo_activity_order + + From f4f8822df575eaf850b191e366a39e0b359b8290 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 27 May 2025 16:48:43 +0800 Subject: [PATCH 22/35] //activity v.2 --- .../WxVtwoActivitySpecialTopicController.java | 140 +++++++++++- .../WxVtwoAmountGiftActivityController.java | 8 +- .../WxVtwoCashBackActivityController.java | 8 +- .../WxVtwoPrizeDrawActivityController.java | 5 + .../domain/po/WxVtwoActivityGrant.java | 8 + .../domain/po/WxVtwoActivityGrantAward.java | 5 + .../domain/po/WxVtwoActivityGrantExport.java | 9 + .../po/WxVtwoActivityGrantSettlement.java | 16 ++ .../domain/po/WxVtwoActivitySpecialTopic.java | 3 + .../domain/po/WxVtwoCashBackGrant.java | 8 + .../domain/po/WxVtwoCashBackGrantAward.java | 5 + .../domain/vo/WxVtwoActivityStatisticsVo.java | 22 ++ .../domain/vo/WxVtwoAwardGrantStatistics.java | 23 ++ .../domain/vo/WxVtwoAwardStatistics.java | 28 +++ .../WxVtwoMerchantSettlementStatistics.java | 22 ++ .../vo/WxVtwoOrderBusinessStatistics.java | 2 +- .../domain/vo/WxVtwoSettlementStatistics.java | 18 ++ .../WxVtwoActivityGrantAwardMapper.java | 9 + .../mapper/WxVtwoActivityGrantMapper.java | 6 + .../WxVtwoActivityGrantSettlementMapper.java | 13 +- .../WxVtwoCashBackGrantAwardMapper.java | 3 + .../mapper/WxVtwoCashBackGrantMapper.java | 6 + ...OfflineActivityGrantSettlementService.java | 1 + .../WxVtwoActivityGrantAwardService.java | 9 + .../service/WxVtwoActivityGrantService.java | 7 +- .../WxVtwoActivityGrantSettlementService.java | 15 ++ .../WxVtwoActivityGrantStatisticsService.java | 22 ++ .../service/WxVtwoActivityOrderService.java | 9 + .../WxVtwoActivitySpecialTopicService.java | 5 + .../service/WxVtwoCashBackAwardService.java | 2 + .../WxVtwoCashBackGrantAwardService.java | 4 + .../service/WxVtwoCashBackGrantService.java | 10 +- .../WxVtwoSpecialTopicActivityService.java | 2 +- .../WxVtwoActivityGrantAwardServiceImpl.java | 34 +++ .../WxVtwoActivityGrantExportServiceImpl.java | 4 + .../impl/WxVtwoActivityGrantServiceImpl.java | 31 ++- ...twoActivityGrantSettlementServiceImpl.java | 58 ++++- ...twoActivityGrantStatisticsServiceImpl.java | 214 ++++++++++++++++++ .../impl/WxVtwoActivityOrderServiceImpl.java | 59 +++++ ...WxVtwoActivitySpecialTopicServiceImpl.java | 47 +++- .../WxVtwoAmountGiftActivityServiceImpl.java | 4 +- .../WxVtwoCashBackActivityServiceImpl.java | 4 +- .../impl/WxVtwoCashBackAwardServiceImpl.java | 13 ++ .../WxVtwoCashBackGrantAwardServiceImpl.java | 23 +- .../impl/WxVtwoCashBackGrantServiceImpl.java | 29 ++- .../WxVtwoPrizeDrawActivityServiceImpl.java | 4 +- ...WxVtwoSpecialTopicActivityServiceImpl.java | 18 +- .../mapper/WxVtwoActivityGrantAwardMapper.xml | 33 +++ .../WxVtwoActivityGrantExportMapper.xml | 11 +- .../mapper/WxVtwoActivityGrantMapper.xml | 33 ++- .../WxVtwoActivityGrantSettlementMapper.xml | 80 +++++++ .../mapper/WxVtwoCashBackGrantAwardMapper.xml | 21 ++ .../mapper/WxVtwoCashBackGrantMapper.xml | 32 ++- 53 files changed, 1150 insertions(+), 55 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java index 2a11cb11e..8feec54bb 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoActivitySpecialTopicController.java @@ -1,8 +1,8 @@ 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; @@ -10,8 +10,9 @@ 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.WxVtwoActivityCreditRule; +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; @@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.util.List; /** * @author alascor @@ -46,6 +48,15 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { @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") @@ -129,9 +140,16 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { return new ResultData(Result.ERROR,"活动参数异常"); } } - - wxVtwoActivitySpecialTopicService.saveOrUpdate(specialTopic); - return new ResultData(specialTopic); + 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) @@ -173,4 +191,116 @@ public class WxVtwoActivitySpecialTopicController extends BaseController { return new ResultData(specialTopic); } + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单数据报表") + @GetMapping("orderStatistics") + public ResultData recordStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderCountStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单数据折线图") + @GetMapping("orderStatisticsChart") + public ResultData recordStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderCountStatisticsChart(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动营销费用") + @GetMapping("settlementStatistics") + public ResultData settlementStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityGrantSettlementService.activitySettlementStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取参与订单品类分布") + @GetMapping("orderBusinessStatistics") + public ResultData orderBusinessStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + return new ResultData(wxVtwoActivityOrderService.orderBusinessStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项数据统计") + @GetMapping("activityAwardStatistics") + public ResultData activityAwardStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatistics(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项数据统计折现图") + @GetMapping("activityAwardStatisticsChart") + public ResultData activityAwardStatisticsChart(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.activityAwardStatisticsChart(statisticsVo)); + } + + @ApiVersion(group = SwaggerConstant.V_A_2_0) + @ApiOperation("获取活动项奖品分布") + @GetMapping("awardItemStatistics") + public ResultData awardItemStatistics(@ModelAttribute WxVtwoActivityStatisticsVo statisticsVo) { + if(statisticsVo.getId() == null){ + return new ResultData(Result.ERROR,"ID为空"); + } + if(statisticsVo.getActivityId() == null){ + return new ResultData(Result.ERROR,"活动ID为空"); + } + if(statisticsVo.getActivityType() == null || EnumOfflineActivityType.getEnum(statisticsVo.getActivityType()) == null){ + return new ResultData(Result.ERROR,"活动类型为空"); + } + TenantEntity tenantInfo = getTenantInfo(); + statisticsVo.updateTenantInfo(tenantInfo); + wxVtwoActivitySpecialTopicService.handleStatisticsVo(statisticsVo); + + return new ResultData(wxVtwoActivityGrantStatisticsService.awardItemStatistics(statisticsVo)); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java index 13dc63fae..ee33f8f83 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoAmountGiftActivityController.java @@ -10,10 +10,7 @@ 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.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityMode; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityGrantService; import com.iformall.service.WxVtwoActivityOrderService; @@ -289,6 +286,7 @@ public class WxVtwoAmountGiftActivityController extends BaseController { 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,"请筛选订单"); @@ -302,6 +300,8 @@ public class WxVtwoAmountGiftActivityController extends BaseController { // 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{ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index b7b75a291..2a6927f0c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -10,10 +10,7 @@ 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.enums.EnumOfflineActivityAwardsMoneyRule; -import com.iformall.enums.EnumOfflineActivityMerchantType; -import com.iformall.enums.EnumOfflineActivityMode; -import com.iformall.enums.EnumOfflineActivityStatus; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxVtwoActivityOrderService; import com.iformall.service.WxVtwoAmountGiftActivityService; @@ -312,6 +309,7 @@ public class WxVtwoCashBackActivityController extends BaseController { 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,"请筛选订单"); @@ -325,6 +323,8 @@ public class WxVtwoCashBackActivityController extends BaseController { // 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{ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java index a9c81149d..f8e5dbffc 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoPrizeDrawActivityController.java @@ -12,6 +12,9 @@ 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.*; @@ -298,6 +301,8 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { // 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{ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java index 44c93da53..da5e1831e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrant.java @@ -33,6 +33,9 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -149,6 +152,11 @@ public class WxVtwoActivityGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java index 96683bf14..77568d6a8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantAward.java @@ -122,6 +122,11 @@ public class WxVtwoActivityGrantAward extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java index b1398a71a..e06f1f0e2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantExport.java @@ -28,6 +28,15 @@ public class WxVtwoActivityGrantExport extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + /** + * + */ + @TableField(value = "activity_type") + private Integer activityType; + + @TableField(value = "activity_name") + private String activityName; + /** * 订单id */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java index 8a3de4b0f..61dd5464d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityGrantSettlement.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import lombok.Data; /** @@ -133,9 +135,23 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ @TableField(value = "update_date") private Date updateDate; + + @TableField(exist = false) + private List activityIdList; + + @TableField(exist = false) + private List merchantIdList; + + @TableField(exist = false) + private List awardIdList; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java index 4f24928c0..1505087c7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivitySpecialTopic.java @@ -87,6 +87,9 @@ public class WxVtwoActivitySpecialTopic extends TenantEntity { private Date begin; @TableField(exist = false) private Date end; + + @TableField(exist = false) + private Long activityId; /** * 是否过期 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java index ad7a96ce4..3be121d84 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrant.java @@ -33,6 +33,9 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "activity_id") private Long activityId; + @TableField(value = "activity_type") + private Integer activityType; + /** * */ @@ -179,6 +182,11 @@ public class WxVtwoCashBackGrant extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java index 5a6524110..daeae0cfd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxVtwoCashBackGrantAward.java @@ -152,6 +152,11 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { @TableField(value = "create_date") private Date createDate; + @TableField(exist = false) + private Date createDateBegin; + @TableField(exist = false) + private Date createDateEnd; + /** * 更新时间 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java new file mode 100644 index 000000000..dfa5facd4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoActivityStatisticsVo.java @@ -0,0 +1,22 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumYesOrNo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class WxVtwoActivityStatisticsVo extends TenantEntity { + + private Long id; + private Long activityId; + private Integer activityType; + + private Date createDateBegin; + private Date createDateEnd; + + private List activityIdList; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java new file mode 100644 index 000000000..c9ed78b82 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardGrantStatistics.java @@ -0,0 +1,23 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WxVtwoAwardGrantStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long awardId; + private String awardName; + private BigDecimal cashBackRatio; + + private Integer awardCount; + private BigDecimal awardPrice; + + private Double priceRatio; + private Double countRatio; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java new file mode 100644 index 000000000..e76032969 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoAwardStatistics.java @@ -0,0 +1,28 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WxVtwoAwardStatistics implements Serializable { + + private static final long serialVersionUID = 1L; + + private String xTime; + + private Integer grantCount;//发奖人数(次数) + private Integer orderCount;//订单数量 + private BigDecimal orderMoney;//订单总金额 + + private Integer awardCount;//奖品总个数 + private BigDecimal awardPrice;//奖品(返现)总价值 + + private BigDecimal mallPrice;//商场承担 + private BigDecimal merchantPrice;//商户承担 + + private BigDecimal amountCashBack;//金额返现* + private BigDecimal relatedCashBack;//联单返现* + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java new file mode 100644 index 000000000..8fad169c1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoMerchantSettlementStatistics.java @@ -0,0 +1,22 @@ +package com.iformall.domain.vo; + +import com.iformall.common.SortColumn; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class WxVtwoMerchantSettlementStatistics extends TenantEntity { + + private Long merchantId; + private String merchantName; + + private Integer orderCount; +// private BigDecimal orderMoney; + private BigDecimal grantPrice; + private BigDecimal mallPrice; + private BigDecimal merchantPrice; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java index 8a6f74128..02caa27a2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java @@ -16,6 +16,6 @@ public class WxVtwoOrderBusinessStatistics implements Serializable { private Integer businessCount; private BigDecimal sumMoney; + private Double countRatio; private Double moneyRatio; - } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java new file mode 100644 index 000000000..c73283105 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java @@ -0,0 +1,18 @@ +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; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java index 9b96e2a74..817c09d13 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantAwardMapper.java @@ -3,6 +3,8 @@ 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; @@ -16,6 +18,13 @@ import java.util.List; public interface WxVtwoActivityGrantAwardMapper extends CommonMapper { void insertList(@Param("grantAwardList")List grantAwardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityGrantAward grantAward); + + List activityAwardCountStatisticsChart(WxVtwoActivityGrantAward grantAward); + + List awardItemStatistics(WxVtwoActivityGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java index 9858cf78a..35114dc1d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoActivityGrant; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoActivityGrantMapper extends CommonMapper { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrant activityGrant); + + List activityAwardStatisticsChart(WxVtwoActivityGrant activityGrant); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java index 8fc0a90ea..b9b40450d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoActivityGrantSettlementMapper.java @@ -2,7 +2,9 @@ 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; @@ -18,6 +20,15 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper settlementList); + + WxVtwoSettlementStatistics settlementStatistics(WxVtwoActivityGrantSettlement record); + + List merchantSettlementStatistics(WxVtwoActivityGrantSettlement record); + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityGrantSettlement record); + + List activityAwardStatisticsChart(WxVtwoActivityGrantSettlement record); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java index f8f1c27cd..a39eb038b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantAwardMapper.java @@ -4,6 +4,7 @@ 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; @@ -18,6 +19,8 @@ public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper grantAwardList); + List awardItemStatistics(WxVtwoCashBackGrantAward grantAward); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java index 0014b8f79..edc071318 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxVtwoCashBackGrantMapper.java @@ -3,6 +3,9 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxVtwoCashBackGrant; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.WxVtwoAwardStatistics; + +import java.util.List; /** * @author xiaohu @@ -12,6 +15,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WxVtwoCashBackGrantMapper extends CommonMapper { + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoCashBackGrant wxVtwoCashBackGrant); + + List activityAwardStatisticsChart(WxVtwoCashBackGrant wxVtwoCashBackGrant); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java index 0656ce9c8..a33cf2932 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantSettlementService.java @@ -36,4 +36,5 @@ public interface WxOfflineActivityGrantSettlementService { void exportData(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityGrantSettlement grantSettlement); OfflineActivitySettlementStatistics activitySettlementStatistics(WxOfflineActivityGrantSettlement grantSettlement); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java index fefc4e4a2..ca1eb37f6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantAwardService.java @@ -4,6 +4,9 @@ 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; @@ -15,4 +18,10 @@ import java.util.List; public interface WxVtwoActivityGrantAwardService extends IService { void saveGrantAward(WxVtwoActivityGrant activityGrant,List awardList); + + WxVtwoAwardStatistics activityAwardCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java index fe7dfb139..72db56c72 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantService.java @@ -3,6 +3,8 @@ 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; @@ -15,6 +17,9 @@ import java.util.List; */ public interface WxVtwoActivityGrantService extends IService { - void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant); + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java index cdfb938c9..c6a44532b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantSettlementService.java @@ -4,6 +4,11 @@ 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 @@ -15,4 +20,14 @@ public interface WxVtwoActivityGrantSettlementService extends IService amountAwardIdList); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java new file mode 100644 index 000000000..7c420305f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityGrantStatisticsService.java @@ -0,0 +1,22 @@ +package com.iformall.service; + +import com.iformall.domain.vo.WxVtwoAwardStatistics; +import com.iformall.domain.vo.WxVtwoActivityStatisticsVo; +import com.iformall.domain.vo.WxVtwoAwardGrantStatistics; + +import java.util.List; + +/** +* @author xiaohu +* @description 针对表【wx_vtwo_activity_grant(线下活动发奖)】的数据库操作Service +* @createDate 2025-05-16 00:37:31 +*/ +public interface WxVtwoActivityGrantStatisticsService { + + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java index 1261ac2ad..5c27ab05e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java @@ -5,6 +5,9 @@ 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; @@ -50,4 +53,10 @@ public interface WxVtwoActivityOrderService extends IService findAuditDetailMap(List ids, String tenantId); + + WxVtwoOrderCountStatistics orderCountStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); + + List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java index 793548b0b..6123c6118 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoActivitySpecialTopicService.java @@ -5,6 +5,7 @@ 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; @@ -21,5 +22,9 @@ public interface WxVtwoActivitySpecialTopicService extends IService findActivityAwardList(Long activityId, String tenantId); Map findActivityAwardMap(Long activityId, String tenantId); + + List getAmountAwardIdList(Long activityId, String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java index 0f60ffdb4..5b6661671 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantAwardService.java @@ -5,6 +5,8 @@ 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; @@ -18,4 +20,6 @@ public interface WxVtwoCashBackGrantAwardService extends IService orderList); void saveGrantAward(WxVtwoCashBackGrant activityGrant); + + List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java index 5123441e1..c1c4c119f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoCashBackGrantService.java @@ -1,12 +1,11 @@ package com.iformall.service; -import com.iformall.domain.po.WxVtwoActivityGrant; 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 javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -16,6 +15,9 @@ import java.util.List; */ public interface WxVtwoCashBackGrantService extends IService { - void handleFromOrder(String activityName, WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant); + WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo); + + List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java index ef8d28903..0884c00d2 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxVtwoSpecialTopicActivityService.java @@ -14,5 +14,5 @@ import java.util.List; */ public interface WxVtwoSpecialTopicActivityService extends IService { - void saveFromSpecialTopic(TenantEntity tenantEntity, Long specialTopicId, List activityList); + void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java index 5d5480407..35076f836 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java @@ -6,6 +6,11 @@ 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; @@ -15,6 +20,7 @@ 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; @@ -84,6 +90,34 @@ public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl activityAwardCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.activityAwardCountStatisticsChart(grantAward); + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java index 579253e91..d2d6bd764 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantExportServiceImpl.java @@ -50,6 +50,8 @@ public class WxVtwoActivityGrantExportServiceImpl extends ServiceImpl orderList, boolean isGrant) { - activityGrant.setActivityName(activityName); + public void handleFromOrder(WxVtwoActivityGrant activityGrant, List orderList, boolean isGrant) { activityGrant.setOrderList(orderList); BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); @@ -65,6 +69,7 @@ public class WxVtwoActivityGrantServiceImpl extends ServiceImpl activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrant activityGrant = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantMapper.activityAwardStatisticsChart(activityGrant); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index 6affd9ee1..a664eca60 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -3,9 +3,11 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.mapper.WxVtwoActivityGrantMapper; import com.iformall.service.WxVtwoActivityGrantExportService; import com.iformall.service.WxVtwoActivityGrantSettlementService; import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; @@ -14,10 +16,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -210,6 +209,55 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl amountAwardIdList) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ + grantSettlement.setAwardIdList(amountAwardIdList); + }else{ + grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); + } + return wxVtwoActivityGrantSettlementMapper.activityAwardStatistics(grantSettlement); + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } + + @Override + public List activityAmountCashBackStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo, List amountAwardIdList) { + WxVtwoActivityGrantSettlement grantSettlement = handleStatisticsVo(statisticsVo); + if(amountAwardIdList != null && !amountAwardIdList.isEmpty()){ + grantSettlement.setAwardIdList(amountAwardIdList); + }else{ + grantSettlement.setAwardIdList(Collections.singletonList((long) -1)); + } + return wxVtwoActivityGrantSettlementMapper.activityAwardStatisticsChart(grantSettlement); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java new file mode 100644 index 000000000..faf6b49d4 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantStatisticsServiceImpl.java @@ -0,0 +1,214 @@ +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.enums.EnumOfflineActivityType; +import com.iformall.service.*; +import com.iformall.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** +* @author xiaohu +* @description +* @createDate 2025-05-16 00:37:31 +*/ +@Service +public class WxVtwoActivityGrantStatisticsServiceImpl implements WxVtwoActivityGrantStatisticsService { + + @Autowired + private WxVtwoActivityAwardService wxVtwoActivityAwardService; + + @Autowired + private WxVtwoCashBackAwardService wxVtwoCashBackAwardService; + + @Autowired + private WxVtwoActivityGrantService wxVtwoActivityGrantService; + + @Autowired + private WxVtwoCashBackGrantService wxVtwoCashBackGrantService; + + @Autowired + private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService; + + @Autowired + private WxVtwoCashBackGrantAwardService wxVtwoCashBackGrantAwardService; + + @Autowired + private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; + + + @Override + public WxVtwoAwardStatistics activityAwardStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoAwardStatistics activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatistics(statisticsVo); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatistics(statisticsVo); + activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount()); + activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount()); + activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney()); + List amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); + WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatistics(statisticsVo,amountAwardIdList); + activityAwardStatistics.setAmountCashBack(activityAwardStatistics_2.getAwardPrice()); + activityAwardStatistics.setRelatedCashBack(activityAwardStatistics.getAwardPrice().subtract(activityAwardStatistics.getAmountCashBack())); + }else{ + WxVtwoAwardStatistics activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatistics(statisticsVo); + activityAwardStatistics.setGrantCount(activityAwardStatistics_1.getGrantCount()); + activityAwardStatistics.setOrderCount(activityAwardStatistics_1.getOrderCount()); + activityAwardStatistics.setOrderMoney(activityAwardStatistics_1.getOrderMoney()); + WxVtwoAwardStatistics activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatistics(statisticsVo); + activityAwardStatistics.setAwardCount(activityAwardStatistics_2.getAwardCount()); + } + return activityAwardStatistics; + } + + @Override + public List activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + List activityAwardStatistics = wxVtwoActivityGrantSettlementService.activityAwardStatisticsChart(statisticsVo); + Map activityAwardStatisticsMap = new HashMap<>(); + if(activityAwardStatistics != null && !activityAwardStatistics.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + Map activityGrantStatisticsMap = new HashMap<>(); + Map activityAmountCashBackStatisticsMap = new HashMap<>(); + Map activityAwardCountStatisticsMap = new HashMap<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardStatistics_1 = wxVtwoCashBackGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List amountAwardIdList = wxVtwoCashBackAwardService.getAmountAwardIdList(statisticsVo.getActivityId(),statisticsVo.getTenantId()); + List activityAwardStatistics_2 = wxVtwoActivityGrantSettlementService.activityAmountCashBackStatisticsChart(statisticsVo,amountAwardIdList); + if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ + activityAmountCashBackStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + + }else{ + List activityAwardStatistics_1 = wxVtwoActivityGrantService.activityAwardStatisticsChart(statisticsVo); + if(activityAwardStatistics_1 != null && !activityAwardStatistics_1.isEmpty()){ + activityAwardStatisticsMap = activityAwardStatistics_1.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + List activityAwardStatistics_2 = wxVtwoActivityGrantAwardService.activityAwardCountStatisticsChart(statisticsVo); + if(activityAwardStatistics_2 != null && !activityAwardStatistics_2.isEmpty()){ + activityAwardCountStatisticsMap = activityAwardStatistics_2.stream().collect(Collectors.toMap(WxVtwoAwardStatistics::getXTime, Function.identity())); + } + } + + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(statisticsVo.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(statisticsVo.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newActivityAwardStatistics = new ArrayList<>(); + for (String date : tjTimeList) { + WxVtwoAwardStatistics awardStatistics = activityAwardStatisticsMap.get(date); + if(awardStatistics == null){ + awardStatistics = new WxVtwoAwardStatistics(); + awardStatistics.setAwardPrice(BigDecimal.ZERO); + awardStatistics.setMallPrice(BigDecimal.ZERO); + awardStatistics.setMerchantPrice(BigDecimal.ZERO); + } + WxVtwoAwardStatistics grantStatistics = activityGrantStatisticsMap.get(date); + if(grantStatistics == null){ + awardStatistics.setGrantCount(0); + awardStatistics.setOrderCount(0); + awardStatistics.setOrderMoney(BigDecimal.ZERO); + }else{ + awardStatistics.setGrantCount(grantStatistics.getGrantCount()); + awardStatistics.setOrderCount(grantStatistics.getOrderCount()); + awardStatistics.setOrderMoney(grantStatistics.getOrderMoney()); + } + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + WxVtwoAwardStatistics amountCashBackStatistics = activityAmountCashBackStatisticsMap.get(date); + if(amountCashBackStatistics == null){ + awardStatistics.setAmountCashBack(BigDecimal.ZERO); + awardStatistics.setRelatedCashBack(BigDecimal.ZERO); + }else { + awardStatistics.setAmountCashBack(amountCashBackStatistics.getAwardPrice()); + awardStatistics.setRelatedCashBack(awardStatistics.getAwardPrice().subtract(awardStatistics.getAmountCashBack())); + } + }else{ + WxVtwoAwardStatistics awardSettlementStatistics = activityAwardCountStatisticsMap.get(date); + if(awardSettlementStatistics == null){ + awardStatistics.setAwardCount(0); + }else{ + awardStatistics.setAwardCount(awardSettlementStatistics.getAwardCount()); + } + } + + awardStatistics.setXTime(date.substring(5).replace("-", "/")); + newActivityAwardStatistics.add(awardStatistics); + } + return newActivityAwardStatistics; + } + + @Override + public List awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + List awardGrantStatisticsList = new ArrayList<>(); + if(EnumOfflineActivityType.CASHBACK.getCode().equals(statisticsVo.getActivityType())){ + List activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoCashBackGrantAwardService.awardItemStatistics(statisticsVo); + Map awardGrantStatisticsMap = new HashMap<>(); + BigDecimal totalPrice = BigDecimal.ZERO; + if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) { + awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity())); + totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + } + for (WxVtwoCashBackAward award : activityAwardList) { + WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId()); + if(awardGrantStatisticsItem == null){ + awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics(); + awardGrantStatisticsItem.setAwardId(award.getId()); + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio()); + awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO); + awardGrantStatisticsItem.setPriceRatio((double) 0); + }else{ + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setCashBackRatio(award.getCashBackRatio()); + awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue()); + } + awardGrantStatisticsList.add(awardGrantStatisticsItem); + } + }else{ + List activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); + List awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo); + Map awardGrantStatisticsMap = new HashMap<>(); + BigDecimal totalPrice = BigDecimal.ZERO; + Integer totalCount = 0; + if (awardGrantStatistics != null && !awardGrantStatistics.isEmpty()) { + awardGrantStatisticsMap = awardGrantStatistics.stream().collect(Collectors.toMap(WxVtwoAwardGrantStatistics::getAwardId, Function.identity())); + totalPrice = awardGrantStatistics.stream().map(WxVtwoAwardGrantStatistics::getAwardPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + totalCount = awardGrantStatistics.stream().mapToInt(WxVtwoAwardGrantStatistics::getAwardCount).sum(); + } + for (WxVtwoActivityAward award : activityAwardList) { + WxVtwoAwardGrantStatistics awardGrantStatisticsItem = awardGrantStatisticsMap.get(award.getId()); + if(awardGrantStatisticsItem == null){ + awardGrantStatisticsItem = new WxVtwoAwardGrantStatistics(); + awardGrantStatisticsItem.setAwardId(award.getId()); + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setAwardCount(0); + awardGrantStatisticsItem.setAwardPrice(BigDecimal.ZERO); + awardGrantStatisticsItem.setPriceRatio((double) 0); + awardGrantStatisticsItem.setCountRatio((double) 0); + }else{ + awardGrantStatisticsItem.setAwardName(award.getName()); + awardGrantStatisticsItem.setPriceRatio(awardGrantStatisticsItem.getAwardPrice().divide(totalPrice,4, RoundingMode.HALF_UP).doubleValue()); + awardGrantStatisticsItem.setCountRatio(new BigDecimal(awardGrantStatisticsItem.getAwardCount()).divide(new BigDecimal(totalCount),4,RoundingMode.HALF_UP).doubleValue()); + } + awardGrantStatisticsList.add(awardGrantStatisticsItem); + } + } + return awardGrantStatisticsList; + } +} + + + + 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 7730dcd28..2645ae3b7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -441,6 +441,65 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List countStatisticsChart = wxVtwoActivityOrderMapper.getCountStatisticsChart(activityOrder); + Map countStatisticsChartMap = new HashMap<>(); + if(countStatisticsChart != null && !countStatisticsChart.isEmpty()){ + countStatisticsChartMap = countStatisticsChart.stream().collect(Collectors.toMap(WxVtwoOrderCountStatistics::getXTime, Function.identity())); + } + List tjTimeList = DateUtils.getTjTimeList(DateUtils.date2String(activityOrder.getCreateDateBegin(),"yyyy-MM-dd"), + DateUtils.date2String(activityOrder.getCreateDateEnd(),"yyyy-MM-dd"), "0"); + List newCountStatisticsChart = new ArrayList<>(); + for (String date : tjTimeList) { + WxVtwoOrderCountStatistics countStatistics = countStatisticsChartMap.get(date); + if(countStatistics == null){ + countStatistics = new WxVtwoOrderCountStatistics(); + countStatistics.setUserCount(0); + countStatistics.setOrderCount(0); + countStatistics.setSumMoney(BigDecimal.ZERO); + countStatistics.setMerchantCount(0); + } + countStatistics.setXTime(date.substring(5).replace("-", "/")); + newCountStatisticsChart.add(countStatistics); + } + return newCountStatisticsChart; + } + + @Override + public List orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoActivityOrder activityOrder = handleStatisticsVo(statisticsVo); + List businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder); + if(businessStatistics != null && !businessStatistics.isEmpty()){ + Map bussinessMap = wxBusinessService.findAllMap(activityOrder); + BigDecimal totalMoney = businessStatistics.stream().map(WxVtwoOrderBusinessStatistics::getSumMoney).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.getSumMoney().divide(totalMoney,4, RoundingMode.HALF_UP).doubleValue()); + statistics.setCountRatio(new BigDecimal(statistics.getBusinessCount()).divide(new BigDecimal(totalCount),4, RoundingMode.HALF_UP).doubleValue()); + } + return businessStatistics.stream().sorted(Comparator.comparing(WxVtwoOrderBusinessStatistics::getMoneyRatio).reversed()).collect(Collectors.toList()); + } + return Collections.emptyList(); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java index 7c5cec228..afeba859d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivitySpecialTopicServiceImpl.java @@ -6,16 +6,15 @@ 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.WxVtwoActivityCreditRule; -import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; -import com.iformall.domain.vo.WxVtwoActivityRule; -import com.iformall.domain.vo.WxVtwoActivityRuleDetail; +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; @@ -27,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author xiaohu @@ -108,7 +108,7 @@ public class WxVtwoActivitySpecialTopicServiceImpl extends ServiceImpl activityIdList = specialTopic.getActivityList().stream().map(a -> a.getActivityId()).collect(Collectors.toList()); + statisticsVo.setActivityIdList(activityIdList); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 68914b7f6..684dff66f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -264,7 +264,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); activityGrant.setAwardList(amountGiftActivity.getAwardList()); @@ -329,7 +329,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(amountGiftActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoActivityGrantService.saveOrUpdate(activityGrant); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java index a1eb67220..a5a219962 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackActivityServiceImpl.java @@ -264,7 +264,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); @@ -277,7 +277,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoCashBackGrantService.handleFromOrder(cashBackActivity.getName(),activityGrant,orderList,false); + wxVtwoCashBackGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoCashBackGrantAwardService.handleGrantAwardList(cashBackActivity, activityGrant, orderList); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java index 42e54324a..c55504842 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackAwardServiceImpl.java @@ -85,6 +85,19 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl activityAwardList = this.findActivityAwardList(activityId, tenantId); return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); } + + @Override + public List getAmountAwardIdList(Long activityId, String tenantId) { + WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); + cashBackAwardQ.setTenantId(tenantId); + cashBackAwardQ.setActivityId(activityId); + cashBackAwardQ.setModelType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); + List amountAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); + if(amountAwardList != null && !amountAwardList.isEmpty()){ + return amountAwardList.stream().map(WxVtwoCashBackAward::getId).collect(Collectors.toList()); + } + return Collections.emptyList(); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java index b7c7fdd23..958614f1b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java @@ -3,7 +3,9 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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; @@ -16,10 +18,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import static java.util.stream.Collectors.toList; @@ -216,6 +215,22 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl awardItemStatistics(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrantAward grantAward = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantAwardMapper.awardItemStatistics(grantAward); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java index 716b25857..b463deef7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java @@ -7,6 +7,9 @@ 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; @@ -14,6 +17,7 @@ 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; @@ -30,8 +34,7 @@ public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl orderList, boolean isGrant) { - activityGrant.setActivityName(activityName); + public void handleFromOrder(WxVtwoCashBackGrant activityGrant, List orderList, boolean isGrant) { activityGrant.setOrderList(orderList); BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); @@ -76,6 +79,28 @@ public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl activityAwardStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo) { + WxVtwoCashBackGrant wxVtwoCashBackGrant = handleStatisticsVo(statisticsVo); + return wxVtwoCashBackGrantMapper.activityAwardStatisticsChart(wxVtwoCashBackGrant); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java index 2f5ee281f..63d3342fc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoPrizeDrawActivityServiceImpl.java @@ -267,7 +267,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); activityGrant.setAwardList(prizeDrawActivity.getAwardList()); @@ -348,7 +348,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); - wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); + wxVtwoActivityGrantService.handleFromOrder(activityGrant,orderList,false); wxVtwoActivityGrantService.saveOrUpdate(activityGrant); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java index 673e95fbf..54b7aaefe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoSpecialTopicActivityServiceImpl.java @@ -3,10 +3,13 @@ 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; @@ -28,20 +31,25 @@ public class WxVtwoSpecialTopicActivityServiceImpl extends ServiceImpl activityList) { + public void saveFromSpecialTopic(WxVtwoActivitySpecialTopic specialTopic, List activityList) { WxVtwoSpecialTopicActivity specialTopicActivityQ = new WxVtwoSpecialTopicActivity(); - specialTopicActivityQ.updateTenantInfo(tenantEntity); - specialTopicActivityQ.setSpecialTopicId(specialTopicId); + 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(tenantEntity); - specialTopicActivity.setSpecialTopicId(specialTopicId); + specialTopicActivity.updateTenantInfo(specialTopic); + specialTopicActivity.setSpecialTopicId(specialTopic.getId()); if(specialTopicActivity.getCreateDate() == null){ specialTopicActivity.setCreateDate(now); } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml index 5c47656a8..d9236a2cc 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml @@ -64,6 +64,14 @@ and `award_id` = #{awardId} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + and `status` = #{status} @@ -107,4 +115,29 @@ #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index f54478a8e..105a18f58 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -9,6 +9,8 @@ + + @@ -50,7 +52,7 @@ 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, @@ -79,6 +81,9 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + and `order_id` = #{orderId} @@ -109,7 +114,7 @@ insert into wx_vtwo_activity_grant_export (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, @@ -125,7 +130,7 @@ values (#{item.id,jdbcType=BIGINT}, - #{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR}, + #{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}, diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml index 8f4eb52e8..a9783b81b 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -29,7 +30,7 @@ id,tenant_id,parent_tenant_id, - activity_id,activity_name,order_money_sum, + activity_id,activity_type,activity_name,order_money_sum, order_count,cus_name,cus_phone, lottery_num,lottery_count,anniversary_lottery_num, real_name,real_card,remark,sign_img, @@ -53,6 +54,17 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -76,4 +88,23 @@ select from wx_vtwo_activity_grant where id = #{id} and tenant_id=#{tenantId} + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml index 85dedc94a..6d001d806 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantSettlementMapper.xml @@ -64,10 +64,43 @@ and `award_id` = #{awardId} + + and `merchant_id` = #{merchantId} + + and `status` = #{status} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and activity_id in + + #{idItem} + + + + + and merchant_id in + + #{midItem} + + + + + and award_id in + + #{idItem} + + + and id in @@ -115,4 +148,51 @@ #{item.updateDate,jdbcType=TIMESTAMP}) + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml index f0f464ee2..7c1567d8e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantAwardMapper.xml @@ -65,6 +65,18 @@ and `order_id` = #{orderId} + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + + + + and `status` = #{status} + + and id in @@ -107,4 +119,13 @@ #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) + + + diff --git a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml index d919ad53a..c67b7630e 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoCashBackGrantMapper.xml @@ -9,6 +9,7 @@ + @@ -33,7 +34,7 @@ id,tenant_id,parent_tenant_id, - activity_id,activity_name,order_money_sum, + activity_id,activity_type,activity_name,order_money_sum, order_count,cus_name,cus_phone, lottery_num,lottery_count,anniversary_lottery_num, real_name,real_card,cash_back_limit, @@ -57,6 +58,17 @@ and `activity_id` = #{activityId} + + and `activity_type` = #{activityType} + + + + and `create_date` >= #{createDateBegin} + + + + and `create_date` <= #{createDateEnd} + and `status` = #{status} @@ -80,4 +92,22 @@ select from wx_vtwo_cash_back_grant where id = #{id} and tenant_id=#{tenantId} + + + + From c81e4a949e4672e1d0ed84ab26636facad8b4807 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 27 May 2025 18:06:03 +0800 Subject: [PATCH 23/35] //activity v.2 --- .../iformall/domain/vo/WxVtwoOrderBusinessStatistics.java | 2 +- .../com/iformall/domain/vo/WxVtwoOrderCountStatistics.java | 2 +- .../com/iformall/domain/vo/WxVtwoSettlementStatistics.java | 3 +++ .../impl/WxVtwoActivityGrantSettlementServiceImpl.java | 5 ++++- .../impl/WxVtwoActivityGrantStatisticsServiceImpl.java | 4 +++- .../service/impl/WxVtwoActivityOrderServiceImpl.java | 6 +++--- .../src/main/resources/mapper/WxVtwoActivityOrderMapper.xml | 6 +++--- 7 files changed, 18 insertions(+), 10 deletions(-) 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 02caa27a2..0e3de0717 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderBusinessStatistics.java @@ -14,7 +14,7 @@ public class WxVtwoOrderBusinessStatistics implements Serializable { private String businessName; private Integer businessCount; - private BigDecimal sumMoney; + private BigDecimal orderMoney; private Double countRatio; private Double moneyRatio; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java index b5a592b39..9bd01fb3a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoOrderCountStatistics.java @@ -14,6 +14,6 @@ public class WxVtwoOrderCountStatistics implements Serializable { private Integer userCount; private Integer orderCount; - private BigDecimal sumMoney; + private BigDecimal orderMoney; private Integer merchantCount; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java index c73283105..d17ba7c2a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxVtwoSettlementStatistics.java @@ -15,4 +15,7 @@ public class WxVtwoSettlementStatistics implements Serializable { private Integer merchantCount; private BigDecimal mallPrice; private BigDecimal merchantPrice; + + private double mallRatio; + private double merchantRatio; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index a664eca60..42f3e3470 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -222,7 +222,10 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(statisticsVo.getActivityId(), statisticsVo.getTenantId()); List awardGrantStatistics = wxVtwoActivityGrantAwardService.awardItemStatistics(statisticsVo); @@ -204,8 +206,8 @@ public class WxVtwoActivityGrantStatisticsServiceImpl implements WxVtwoActivityG } awardGrantStatisticsList.add(awardGrantStatisticsItem); } + return awardGrantStatisticsList.stream().sorted(Comparator.comparing(WxVtwoAwardGrantStatistics::getCountRatio).reversed()).collect(Collectors.toList()); } - return awardGrantStatisticsList; } } 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 2645ae3b7..e9c5ae97a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java @@ -473,7 +473,7 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl businessStatistics = wxVtwoActivityOrderMapper.getBusinessStatistics(activityOrder); if(businessStatistics != null && !businessStatistics.isEmpty()){ Map bussinessMap = wxBusinessService.findAllMap(activityOrder); - BigDecimal totalMoney = businessStatistics.stream().map(WxVtwoOrderBusinessStatistics::getSumMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + 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.getSumMoney().divide(totalMoney,4, RoundingMode.HALF_UP).doubleValue()); + 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()); diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml index cac48346a..1312f1b1f 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml @@ -188,7 +188,7 @@ select business_id businessId, count(1) businessCount, - IFNULL(sum(order_money),0) sumMoney + IFNULL(sum(order_money),0) orderMoney from wx_vtwo_activity_order group by business_id From b574d899d4a24a5440ca68ebe7cbabda68ea2997 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 27 May 2025 18:25:48 +0800 Subject: [PATCH 24/35] //activity v.2 --- .../src/main/resources/db/migration/V202505000000001.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql b/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql index 077dbcf60..a6daeee34 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202505000000001.sql @@ -8,5 +8,5 @@ INSERT INTO `mallink`.`mall_permission` (`id`, `name`, `parent_id`, `available`, -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1; -UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 425, 426, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12; +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 71102]' WHERE `id` = 1; +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 3, 4, 5, 6, 7, 8, 81, 82, 83, 84, 85, 86, 87, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 221, 222, 223, 224, 225, 228, 251, 261, 299, 300, 301, 302, 303, 304, 305, 306, 309, 30901, 30902, 310, 31001, 31002, 31003, 311, 312, 313, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 41901, 41902, 41903, 41904, 41905, 41906, 41907, 41908, 41909, 41910, 420, 421, 422, 423, 431, 432, 433, 434, 435, 436, 437, 438, 439, 43901, 43902, 43903, 43904, 43905, 43906, 43907, 440, 44001, 44002, 44003, 44004, 44005, 44006, 44007, 44008, 44009, 44010, 44011, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 615, 616, 617, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 647, 651, 652, 653, 661, 662, 663, 664, 665, 666, 667, 668, 671, 672, 673, 674, 675, 676, 680, 681, 682, 683, 684, 685, 687, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 713, 714, 715, 901, 902, 903, 904, 905, 906, 907, 908, 910, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1604, 16041, 16042, 16043, 16044, 5502, 6610, 6611, 41701, 41702, 41703, 60701, 60702, 61201, 61202, 61501, 61502, 71102]' WHERE `id` = 12; From ade8004f8158c9543d1aa8f002260866b4904bde Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 27 May 2025 22:15:28 +0800 Subject: [PATCH 25/35] //activity v.2 --- .../market/WxVtwoCashBackActivityController.java | 2 +- .../impl/WxVtwoActivityGrantAwardServiceImpl.java | 2 +- .../impl/WxVtwoActivityGrantExportServiceImpl.java | 4 +++- .../WxVtwoActivityGrantSettlementServiceImpl.java | 9 ++++----- .../impl/WxVtwoCashBackGrantAwardServiceImpl.java | 13 +++++++------ .../mapper/WxVtwoActivityGrantExportMapper.xml | 2 +- .../mapper/WxVtwoActivityGrantOrderMapper.xml | 4 ++-- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index 2a6927f0c..8d70fa685 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -263,7 +263,7 @@ public class WxVtwoCashBackActivityController extends BaseController { if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); } - WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); + WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); if(cashBackActivity == null){ return new ResultData(Result.ERROR,"查询不到活动"); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java index 35076f836..cdd6eb3a9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantAwardServiceImpl.java @@ -65,7 +65,7 @@ public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl 0 && taxDeductionRulesObject.getTaxPoints() != null){ @@ -157,17 +158,17 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl 0 && taxDeductionRulesObject.getTaxPoints() != null){ activityGrant.setTaxAmount(activityGrant.getCashBack().multiply(taxDeductionRulesObject.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); - - //税点分摊到发奖上面 - for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ - BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; - grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); - } + } + //税点分摊到发奖上面 + for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ + BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);; + grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP)); } } activityGrant.setGrantAwardList(grantAwardList); diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml index 105a18f58..f7e2135cc 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantExportMapper.xml @@ -136,7 +136,7 @@ #{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},#{itemLegionId,jdbcType=BIGINT}, + #{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}, diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml index ceb582773..3dceb1350 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantOrderMapper.xml @@ -69,12 +69,12 @@ insert into wx_vtwo_activity_grant_order (id, grant_id,activity_id,order_id, - is_amount, status) + is_amount) values (#{item.id,jdbcType=BIGINT}, #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT}, - #{item.isAmount,jdbcType=SMALLINT},#{item.status,jdbcType=SMALLINT}) + #{item.isAmount,jdbcType=SMALLINT}) From 82684cd9932bd55f51835801be30f5fab18ebb07 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Tue, 27 May 2025 22:48:46 +0800 Subject: [PATCH 26/35] //activity v.2 --- .../service/impl/WxVtwoAmountGiftActivityServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java index 684dff66f..bb2215625 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoAmountGiftActivityServiceImpl.java @@ -360,9 +360,9 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl Date: Tue, 27 May 2025 23:06:04 +0800 Subject: [PATCH 27/35] //activity v.2 --- .../service/impl/WxVtwoCashBackGrantAwardServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java index ae325232c..1b9ac735d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java @@ -135,16 +135,14 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl Date: Tue, 27 May 2025 23:23:05 +0800 Subject: [PATCH 28/35] //activity v.2 --- .../controller/market/WxVtwoCashBackActivityController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java index 8d70fa685..ddef39978 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxVtwoCashBackActivityController.java @@ -302,7 +302,7 @@ public class WxVtwoCashBackActivityController extends BaseController { if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ return new ResultData(Result.ERROR,"请选择订单"); } - WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); + WxVtwoCashBackActivity cashBackActivity = wxVtwoCashBackActivityService.getInfoById(activityGrant.getActivityId(), activityGrant.getTenantId()); if(cashBackActivity == null){ return new ResultData(Result.ERROR,"查询不到活动"); } From 24472c7b29274056d605d47e917c03309125bfce Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 29 May 2025 00:20:24 +0800 Subject: [PATCH 29/35] //activity v.2 --- .../impl/WxVtwoActivityGrantSettlementServiceImpl.java | 9 +++++++-- .../resources/mapper/WxVtwoActivityGrantAwardMapper.xml | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index efa3eec9d..1eeab3d56 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -222,8 +222,13 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl 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; } diff --git a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml index d9236a2cc..b113cc889 100644 --- a/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxVtwoActivityGrantAwardMapper.xml @@ -135,7 +135,7 @@ SELECT award_id as 'awardId', - IFNULL(sum(cash_back),0) as 'awardPrice', + IFNULL(sum(cash_back),0) as 'awardPrice' FROM wx_vtwo_cash_back_grant_award group by award_id From 2941555a2c06ca614b42838d3cdcac2e076c7149 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 29 May 2025 03:06:32 +0800 Subject: [PATCH 33/35] //activity v.2 --- .../iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java index b463deef7..a932286d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantServiceImpl.java @@ -70,7 +70,7 @@ public class WxVtwoCashBackGrantServiceImpl extends ServiceImpl Date: Thu, 29 May 2025 12:27:44 +0800 Subject: [PATCH 34/35] //activity v.2 --- .../impl/WxVtwoActivityGrantSettlementServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java index 2392a0f5b..22b25dfae 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java @@ -66,7 +66,7 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl Date: Thu, 29 May 2025 17:40:03 +0800 Subject: [PATCH 35/35] //activity v.2 --- .../db/migration/V202505000000002.sql | 448 ++++++++++++++++++ 1 file changed, 448 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql b/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql new file mode 100644 index 000000000..8f1d0a4aa --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202505000000002.sql @@ -0,0 +1,448 @@ +/* + Navicat Premium Dump SQL + + Source Server : 101.200.130.134 + Source Server Type : MySQL + Source Server Version : 50728 (5.7.28) + Source Host : 101.200.130.134:3306 + Source Schema : mallink + + Target Server Type : MySQL + Target Server Version : 50728 (5.7.28) + File Encoding : 65001 + + Date: 29/05/2025 17:32:02 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_award`; +CREATE TABLE `wx_vtwo_activity_award` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `grade` int(11) NOT NULL COMMENT '奖项等级', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖项名称', + `price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '奖项价值', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动奖项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant`; +CREATE TABLE `wx_vtwo_activity_grant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额', + `order_count` int(11) NOT NULL COMMENT '订单数量', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码', + `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_by` bigint(20) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_award`; +CREATE TABLE `wx_vtwo_activity_grant_award` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `order_id` bigint(20) NULL DEFAULT NULL, + `mode_type` smallint(1) NOT NULL COMMENT '金额/联单', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `award_grade` int(11) NULL DEFAULT NULL COMMENT '奖项等级', + `award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称', + `award_price` decimal(10, 2) NOT NULL COMMENT '奖项价值', + `award_count` int(11) NOT NULL COMMENT '奖项数量', + `grant_price` decimal(10, 2) NOT NULL COMMENT '实际发放价值', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_export +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_export`; +CREATE TABLE `wx_vtwo_activity_grant_export` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号', + `order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `merchant_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `merchant_shop_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `business_id` int(11) NULL DEFAULT NULL COMMENT '业态', + `business_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `lottery_num` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码', + `order_create_time` datetime NULL DEFAULT NULL, + `vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号', + `cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址', + `legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团', + `legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟', + `union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `grant_id` bigint(20) NOT NULL COMMENT '发奖id', + `grant_user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `grant_user_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `grant_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `grant_by` bigint(20) NULL DEFAULT NULL COMMENT '发奖人', + `grant_by_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `grant_time` datetime NULL DEFAULT NULL COMMENT '发奖时间', + `grant_detail` json NULL COMMENT '发放结算详情', + `grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '发放总价值', + `mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额', + `merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励导出' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_order +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_order`; +CREATE TABLE `wx_vtwo_activity_grant_order` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `is_amount` smallint(1) NOT NULL COMMENT '是否参与总金额计算', + `status` smallint(1) NOT NULL DEFAULT 1, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发奖订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_grant_settlement +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_grant_settlement`; +CREATE TABLE `wx_vtwo_activity_grant_settlement` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `grant_id` bigint(20) NOT NULL COMMENT '发奖id', + `grant_award_id` bigint(20) NOT NULL COMMENT '发放奖励记录id', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `grant_price` decimal(10, 2) NOT NULL COMMENT '发放总价值', + `order_id` bigint(20) NOT NULL COMMENT '订单id', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单编号', + `order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户id', + `order_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单占比', + `order_grant_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单发放总价值', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管承担比率', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户承担比率', + `order_mall_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商管承担总金额', + `order_merchant_share_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单商户承担总金额', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动发放奖励结算' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_merchant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_merchant`; +CREATE TABLE `wx_vtwo_activity_merchant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `merchant_id` bigint(20) NOT NULL COMMENT '商户ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动商户' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_order +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_order`; +CREATE TABLE `wx_vtwo_activity_order` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `from_user_id` bigint(20) NULL DEFAULT NULL COMMENT '来源用户ID', + `vip_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '会员卡号', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `real_cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `cus_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '身份证号', + `cus_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '客户地址', + `legion_id` bigint(11) NULL DEFAULT NULL COMMENT '所属军团', + `legion_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `union_id` bigint(11) NULL DEFAULT NULL COMMENT '所属联盟', + `union_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `from_order_id` bigint(20) NULL DEFAULT 0 COMMENT '来源订单ID', + `order_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '订单号', + `order_money` decimal(10, 2) NULL DEFAULT NULL COMMENT '订单金额', + `merchant_id` bigint(20) NOT NULL COMMENT '商户编号', + `business_id` int(11) NULL DEFAULT NULL COMMENT '业态', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '周年庆抽奖编码', + `audit_status` int(1) NOT NULL DEFAULT 0 COMMENT '审批状态', + `audit_remark` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批意见', + `audit_by` bigint(20) NULL DEFAULT NULL COMMENT '审核人', + `audit_time` datetime NULL DEFAULT NULL COMMENT '审核时间', + `increased_points` int(11) NOT NULL DEFAULT 0 COMMENT '积分变动值', + `create_by` bigint(11) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动参与登记' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_activity_special_topic +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_activity_special_topic`; +CREATE TABLE `wx_vtwo_activity_special_topic` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '专题名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `credit_on_off` smallint(1) NOT NULL DEFAULT 0 COMMENT '积分开关', + `credit_config` json NULL COMMENT '积分配置', + `status` smallint(2) NOT NULL DEFAULT 0 COMMENT '状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下活动专题' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_amount_gift_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_amount_gift_activity`; +CREATE TABLE `wx_vtwo_amount_gift_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `amount_rules` json NULL, + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `related_rules` json NULL, + `awards_count` int(11) NULL DEFAULT NULL COMMENT '礼品总数量', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下满额赠礼活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_activity`; +CREATE TABLE `wx_vtwo_cash_back_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现总金额限制', + `cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_award`; +CREATE TABLE `wx_vtwo_cash_back_award` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `model_type` smallint(1) NOT NULL COMMENT '金额/联单', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '限制最大金额', + `related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖品名称', + `cash_back_ratio` decimal(10, 2) NOT NULL COMMENT '返现比例', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动奖项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_grant +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant`; +CREATE TABLE `wx_vtwo_cash_back_grant` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL, + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `order_money_sum` decimal(10, 2) NOT NULL COMMENT '订单总金额', + `order_count` int(11) NOT NULL COMMENT '订单数量', + `cus_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户姓名', + `cus_phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户电话', + `lottery_num` json NULL COMMENT '抽奖券编码', + `lottery_count` int(11) NULL DEFAULT NULL COMMENT '抽奖券数量', + `anniversary_lottery_num` json NULL COMMENT '周年庆抽奖编码', + `real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人', + `real_card` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '实际领奖人身份证号', + `cash_back_limit` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额限制', + `cash_back` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现金额', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `tax_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '税点金额', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `sign_img` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '签名图片', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_by` bigint(20) NULL DEFAULT NULL, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发奖' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_cash_back_grant_award +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_cash_back_grant_award`; +CREATE TABLE `wx_vtwo_cash_back_grant_award` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动id', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `grant_id` bigint(20) NOT NULL COMMENT '发放id', + `order_id` bigint(20) NULL DEFAULT NULL, + `order_amount` decimal(10, 2) NOT NULL COMMENT '订单金额/总金额', + `mode_type` smallint(1) NOT NULL COMMENT '金额/联单', + `min_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最小金额', + `max_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '奖项限制最大金额', + `related_count` int(11) NULL DEFAULT NULL COMMENT '联单笔数', + `award_id` bigint(20) NOT NULL COMMENT '奖项id', + `award_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '奖项名称', + `cash_back_ratio` decimal(10, 2) NULL DEFAULT NULL COMMENT '返现比例', + `cash_back_rule` smallint(1) NULL DEFAULT NULL COMMENT '返现计算规则', + `cash_back` decimal(10, 2) NOT NULL COMMENT '返现金额', + `share_rule` smallint(1) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', + `mall_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商管分担比例', + `merchant_share_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '商户分担比例', + `tax_deduction_rules` json NULL COMMENT '扣税规则', + `tax_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '税点金额', + `status` smallint(1) NOT NULL DEFAULT 1, + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下返现活动发放奖励' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_prize_draw_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_prize_draw_activity`; +CREATE TABLE `wx_vtwo_prize_draw_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '活动名称', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `amount_model` smallint(1) NOT NULL COMMENT '计算模式', + `business_order_limit` int(11) NULL DEFAULT NULL COMMENT '业态订单数量限制', + `amount_rules` json NULL, + `related_model` smallint(1) NOT NULL COMMENT '联单模式', + `related_rules` json NULL, + `awards_limit` int(11) NULL DEFAULT NULL COMMENT '奖项数量限制', + `awards_count` int(11) NULL DEFAULT NULL COMMENT '奖项总数量', + `merchant_rule` smallint(1) NULL DEFAULT NULL COMMENT '商户规则', + `status` smallint(2) NULL DEFAULT NULL COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下抽奖活动' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for wx_vtwo_special_topic_activity +-- ---------------------------- +DROP TABLE IF EXISTS `wx_vtwo_special_topic_activity`; +CREATE TABLE `wx_vtwo_special_topic_activity` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '父租户ID', + `special_topic_id` bigint(20) NOT NULL COMMENT '专题ID', + `activity_id` bigint(20) NOT NULL COMMENT '活动ID', + `activity_type` smallint(1) NOT NULL COMMENT '活动类型', + `activity_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '活动名称', + `activity_create_date` datetime NULL DEFAULT NULL, + `activity_start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `activity_end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `activity_status` smallint(2) NOT NULL DEFAULT 0 COMMENT '活动状态', + `create_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_date` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '线下专题下的活动' ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1;