Compare commits

...

16 Commits

106 changed files with 2092 additions and 1795 deletions

View File

@ -154,19 +154,6 @@ public interface IMemberServiceApi {
*/
R<CuMember> getMember(Long pkMember);
/**
* 获取会员缓存
*
* @param memberCode 会员编号
* @return CuMember
*/
R<CuMember> queryMember(String memberCode);
/**
* 查询会员
*/
R<CuMember> queryMember(Long pkMember);
/**
* 保存新会员信息,待支付订单
*
@ -297,14 +284,30 @@ public interface IMemberServiceApi {
R<Boolean> updateCuMemberAccountByDraw(Integer payNum, AcDrawRewardNumExt acDrawRewardNumExt);
/**
* 更新用户等级
* 更新用户等级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
* @param pkOldLevel 原等级
* @return R<Boolean>
*/
R<Boolean> updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
R<?> updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
/**
* 用户降级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
*/
R<?> reduceMemberLevel(CuMember cuMember, SaOrder saOrder);
/**
* 更新升级记录 -- 来源于活动
*
* @param saOrder 原订单
* @param newOrder 新订单
* @return
*/
R<?> changeMemberLevel(SaOrder saOrder, SaOrder newOrder);
/**
* 校验是否血缘关系返回true则有血缘关系
@ -322,11 +325,6 @@ public interface IMemberServiceApi {
*/
R<CuMemberExt> checkMemberByParentList(List<String> topCodeList, Long userId);
/**
* 获取奖衔的翻译KEY值
**/
Integer getAwardsTranslateValue(Integer pkCountry, Integer pkId);
/**
* 查询全部
*

View File

@ -1,31 +0,0 @@
package com.hzs.activity.base;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EApprovalBusiness;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
/**
* 活动审批相关服务入口
*/
public interface IActivityApprovalServiceApi {
/**
* 活动服务信息处理回调
*
* @param approvalBusinessResultDTO
* @return
*/
R<Boolean> approvalCallback(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 活动服务信息签呈查询
*
* @param eApprovalBusiness 业务类型
* @param businessCode 业务单号
* @param pkCountry 所属国家
* @return
*/
R<?> queryApprovalData(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry);
}

View File

@ -3,7 +3,6 @@ package com.hzs.activity.base;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig;
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.math.BigDecimal;
@ -11,7 +10,7 @@ import java.util.Date;
import java.util.List;
/**
* 所有活动的生效获得赠品入口
* 所有活动的生效
*/
public interface IActivityServiceApi {
@ -54,15 +53,6 @@ public interface IActivityServiceApi {
*/
R<List<AcRepurCouponsRuleConfig>> queryAcRepurchaseCouponsRule(Date settleDate);
/**
* 查询复购券均分收益
*
* @param startDate
* @param endDate
* @return
*/
R<List<AcRepurSharRuleConfigExt>> queryRepurSharRuleConfig(Date startDate, Date endDate);
/**
* 调用调用直推升级接口
*

View File

@ -1,6 +1,5 @@
package com.hzs.activity.dto;
import com.hzs.common.core.enums.EOrderOperateStatus;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.AllArgsConstructor;
@ -12,12 +11,6 @@ import java.io.Serializable;
/**
* 直推-升级DTO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/26 10:27
* @Classname: AcRepurchaseCouponsDTO
* @Package_name: com.hzs.activity.recommend.dto
*/
@Data
@Builder

View File

@ -208,16 +208,6 @@ public class MemberServiceProvider implements IMemberServiceApi {
return R.ok(iCuMemberService.getMember(pkMember));
}
@Override
public R<CuMember> queryMember(String memberCode) {
return R.ok(iCuMemberService.queryMember(memberCode));
}
@Override
public R<CuMember> queryMember(Long pkMember) {
return R.ok(iCuMemberService.queryMember(pkMember));
}
@Override
public R<Boolean> saveMember(CuMember cuMember) {
try {
@ -352,8 +342,33 @@ public class MemberServiceProvider implements IMemberServiceApi {
}
@Override
public R<Boolean> updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel) {
return R.ok(iCuMemberBusinessService.updateMemberLevel(cuMember, saOrder, pkOldLevel));
public R<?> updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel) {
try {
iCuMemberBusinessService.updateMemberLevel(cuMember, saOrder, pkOldLevel);
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@Override
public R<?> reduceMemberLevel(CuMember cuMember, SaOrder saOrder) {
try {
iCuMemberBusinessService.reduceMemberLevel(cuMember, saOrder);
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@Override
public R<?> changeMemberLevel(SaOrder saOrder, SaOrder newOrder) {
try {
iCuMemberBusinessService.changeMemberLevel(saOrder, newOrder);
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@Override
@ -366,11 +381,6 @@ public class MemberServiceProvider implements IMemberServiceApi {
return R.ok(iCuMemberService.checkMemberByParentList(topCodeList, userId));
}
@Override
public Integer getAwardsTranslateValue(Integer pkCountry, Integer pkId) {
return iCuMemberService.getAwardsTranslateValue(pkCountry, pkId);
}
@Override
public R<List<CuMemberExt>> findAll() {
return R.ok(iCuMemberService.findAll());

View File

@ -168,13 +168,30 @@ public interface ICuMemberBusinessService {
Boolean updateCuMemberAccountByDraw(Integer payNum, AcDrawRewardNumExt acDrawRewardNumExt);
/**
* 更新用户等级
* 更新用户等级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
* @param pkOldLevel 原等级
*/
Boolean updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
void updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
/**
* 用户降级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
*/
void reduceMemberLevel(CuMember cuMember, SaOrder saOrder);
/**
* 更新升级记录 -- 来源于活动
*
* @param saOrder 原订单
* @param newOrder 新订单
* @return
*/
void changeMemberLevel(SaOrder saOrder, SaOrder newOrder);
/**
* 查询会员的安置位置

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.settle.IMemberSettleBonusApi;
import com.hzs.common.core.constant.CacheConstants;
@ -61,9 +62,7 @@ import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO;
import com.hzs.third.pay.ITOnlinePaymentServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -92,8 +91,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@DubboReference
IMemberSettleBonusApi iMemberSettleBonusApi;
@Autowired
@ -195,19 +192,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
* @param saOrder 订单
* @param pkOldLevel 原等级
*/
private Boolean saveLevelUpgrade(CuMember cuMember, Integer levelType, SaOrder saOrder, Integer pkOldLevel) {
// V3可以买一单升V4这个位置需要添加校验如果是购买升级 并且 原等级大于新等级不添加升级记录
if (EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrder.getOrderType()
&& EUpgradeType.BUY_UPGRADE.getValue() == levelType) {
// 购买升级
GradeDTO oldGrade = iGradeServiceApi.getGrade(pkOldLevel).getData();
GradeDTO newGrade = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
if (oldGrade.getGradeValue() >= newGrade.getGradeValue()) {
// 旧等级大于等于新等级则不需要添加升级记录
return true;
}
}
private void saveLevelUpgrade(CuMember cuMember, Integer levelType, SaOrder saOrder, Integer pkOldLevel) {
// 记录升级历史
CuMemberLevel cuMemberLevel = CuMemberLevel.builder()
.pkMember(cuMember.getPkId())
@ -219,7 +204,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
.build();
cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry());
cuMemberLevel.setPkCreator(cuMember.getPkId());
return iCuMemberLevelService.save(cuMemberLevel);
iCuMemberLevelService.save(cuMemberLevel);
}
/**
@ -1213,11 +1198,36 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel) {
@Override
public void updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel) {
updateCuMember(cuMember);
return saveLevelUpgrade(cuMember, EUpgradeType.ACTIVITY_UPGRADE.getValue(), saOrder, pkOldLevel);
saveLevelUpgrade(cuMember, EUpgradeType.ACTIVITY_UPGRADE.getValue(), saOrder, pkOldLevel);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void reduceMemberLevel(CuMember cuMember, SaOrder saOrder) {
updateCuMember(cuMember);
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.eq(CuMemberLevel::getPkMember, cuMember.getPkId())
.eq(CuMemberLevel::getUpType, EUpgradeType.ACTIVITY_UPGRADE.getValue())
.eq(CuMemberLevel::getPkOrder, saOrder.getPkId())
.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberLevel::getUpgradeTime, new Date())
);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void changeMemberLevel(SaOrder saOrder, SaOrder newOrder) {
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.eq(CuMemberLevel::getPkMember, saOrder.getPkReference())
.eq(CuMemberLevel::getUpType, EUpgradeType.ACTIVITY_UPGRADE.getValue())
.eq(CuMemberLevel::getPkOrder, saOrder.getPkId())
.set(CuMemberLevel::getPkOrder, newOrder.getPkId())
.set(CuMemberLevel::getUpgradeTime, newOrder.getPayTime())
);
}
@Override

View File

@ -0,0 +1,36 @@
package com.hzs.member.statis.controller.api;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.enums.ETop30Type;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.member.ext.CuMemberHonorWallExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.statis.param.DirectStatisticsTop30QueryParam;
import com.hzs.member.statis.service.IMemberStatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 统计
*/
@Slf4j
@RequestMapping("/api/member-statistics")
@RestController
public class MemberStatisticsController {
@Resource
private IMemberStatisticsService memberStatisticsService;
@PostMapping("/topPeople")
public AjaxResult topPeople(@RequestBody DirectStatisticsTop30QueryParam param) {
return AjaxResult.success(memberStatisticsService.getDirectStatisticsNumberOfPeople(param));
}
@PostMapping("/topAmount")
public AjaxResult topAmount(@RequestBody DirectStatisticsTop30QueryParam param) {
return AjaxResult.success(memberStatisticsService.getDirectStatisticsNumberOfAmount(param));
}
}

View File

@ -0,0 +1,66 @@
package com.hzs.member.statis.controller.manager;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.enums.ETop30Type;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.member.statis.param.DirectStatisticsTop30QueryParam;
import com.hzs.member.statis.service.IMemberStatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 统计
*/
@Slf4j
@RequestMapping("/manage/member-statistics")
@RestController
public class BackMemberStatisticsController {
@Resource
private IMemberStatisticsService memberStatisticsService;
@Resource
private RedisService redisService;
@GetMapping("/setShowPeople/{flag}")
public AjaxResult setShowPeople(@PathVariable("flag") String flag) {
redisService.setCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.PEOPLE.getKey(), flag);
return AjaxResult.success();
}
@GetMapping("/setShowAmount/{flag}")
public AjaxResult setShowAmount(@PathVariable("flag") String flag) {
redisService.setCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.AMOUNT.getKey(), flag);
return AjaxResult.success();
}
@GetMapping("/getShowPeople")
public AjaxResult getShowPeople() {
return AjaxResult.success("操作成功!", redisService.getCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.PEOPLE.getKey()));
}
@GetMapping("/getShowAmount")
public AjaxResult getShowAmount() {
return AjaxResult.success("操作成功!", redisService.getCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.AMOUNT.getKey()));
}
@PostMapping("/topPeople")
public AjaxResult topPeople(@RequestBody DirectStatisticsTop30QueryParam param) {
param.setFaker(false);
return AjaxResult.success(memberStatisticsService.getDirectStatisticsNumberOfPeople(param));
}
@PostMapping("/topAmount")
public AjaxResult topAmount(@RequestBody DirectStatisticsTop30QueryParam param) {
param.setFaker(false);
return AjaxResult.success(memberStatisticsService.getDirectStatisticsNumberOfAmount(param));
}
}

View File

@ -0,0 +1,16 @@
package com.hzs.member.statis.mapper;
import com.hzs.common.domain.member.statis.DirectStatisticsTop30VO;
import com.hzs.member.statis.param.DirectStatisticsTop30QueryParam;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
public interface MemberStatisticsMapper {
List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfPeople(@Param("param") DirectStatisticsTop30QueryParam param);
List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfAmount(@Param("param") DirectStatisticsTop30QueryParam param);
}

View File

@ -0,0 +1,30 @@
package com.hzs.member.statis.param;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class DirectStatisticsTop30QueryParam implements Serializable {
/**
* 统计年
*/
private String year;
/**
* 统计月
*/
private String month;
private Boolean faker;
private Date startDate;
private Date endDate;
private Long memberId;
}

View File

@ -0,0 +1,14 @@
package com.hzs.member.statis.service;
import com.hzs.common.domain.member.statis.DirectStatisticsTop30VO;
import com.hzs.member.statis.param.DirectStatisticsTop30QueryParam;
import java.util.List;
public interface IMemberStatisticsService {
List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfPeople(DirectStatisticsTop30QueryParam param);
List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfAmount(DirectStatisticsTop30QueryParam param);
}

View File

@ -0,0 +1,227 @@
package com.hzs.member.statis.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.enums.ETop30Type;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.DataMaskingUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.statis.DirectStatisticsTop30VO;
import com.hzs.member.statis.mapper.MemberStatisticsMapper;
import com.hzs.member.statis.param.DirectStatisticsTop30QueryParam;
import com.hzs.member.statis.service.IMemberStatisticsService;
import com.hzs.member.statis.util.DataGeneratorUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.*;
import java.util.*;
@Service
@Slf4j
public class MemberStatisticsServiceImpl implements IMemberStatisticsService {
@Resource
private MemberStatisticsMapper memberStatisticsMapper;
@Resource
private RedisService redisService;
@Override
public List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfPeople(DirectStatisticsTop30QueryParam param) {
String show = redisService.getCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.PEOPLE.getKey());
if(ObjectUtil.isEmpty(show) || "false".equals(show)){
return null;
}
if(DateUtils.isYearMonthExceedCurrent(param.getYear() + "/" + param.getMonth())) {
return null;
}
setStartAndEndDate(param);
List<DirectStatisticsTop30VO> list = memberStatisticsMapper.getDirectStatisticsNumberOfPeople(param);
return desensitizationAndFaker(list, param, 1);
}
@Override
public List<DirectStatisticsTop30VO> getDirectStatisticsNumberOfAmount(DirectStatisticsTop30QueryParam param) {
String show = redisService.getCacheObject(CacheConstants.TOP_30_ACTIVITY + ETop30Type.AMOUNT.getKey());
if(ObjectUtil.isEmpty(show) || "false".equals(show)){
return null;
}
if(DateUtils.isYearMonthExceedCurrent(param.getYear() + "/" + param.getMonth())) {
return null;
}
setStartAndEndDate(param);
List<DirectStatisticsTop30VO> list = memberStatisticsMapper.getDirectStatisticsNumberOfAmount(param);
return desensitizationAndFaker(list, param, 2);
}
/**
* 数据脱敏&格式化数字&假数据
* @param list
* @param param
* @param type
*/
private List<DirectStatisticsTop30VO> desensitizationAndFaker(List<DirectStatisticsTop30VO> list, DirectStatisticsTop30QueryParam param, Integer type){
List<DirectStatisticsTop30VO> fakerList = DataGeneratorUtils.generateFakeData(
new ArrayList<>(), 30, 1, DataGeneratorUtils.TimeGranularity.DAY);
List<DirectStatisticsTop30VO> result = list;
if(param.getFaker()){
result = generateFakeData(list, 30, fakerList, type);
}
for (DirectStatisticsTop30VO directStatisticsTop30VO : result) {
if(param.getFaker()){
directStatisticsTop30VO.setMemberCode(DataMaskingUtil.mask(directStatisticsTop30VO.getMemberCode(), 2, 2));
directStatisticsTop30VO.setMemberName(DataMaskingUtil.mask(directStatisticsTop30VO.getMemberName(), 1, 0));
}
directStatisticsTop30VO.setNumberOfAmount(directStatisticsTop30VO.getNumberOfAmount().divide(new BigDecimal(10000)));
}
return result;
}
private void setStartAndEndDate(DirectStatisticsTop30QueryParam param) {
// 参数验证
if (ObjectUtil.isEmpty(param.getYear()) || ObjectUtil.isEmpty(param.getMonth())) {
throw new IllegalArgumentException("年份和月份不能为空");
}
try {
int year = Integer.parseInt(param.getYear());
int month = Integer.parseInt(param.getMonth());
YearMonth yearMonth = YearMonth.of(year, month);
LocalDateTime firstDay = yearMonth.atDay(1).atStartOfDay();
LocalDateTime lastDay = yearMonth.atEndOfMonth().atTime(23, 59, 59);
// 获取系统默认时区
ZoneId zoneId = ZoneId.systemDefault();
// 转换为Date
param.setStartDate(Date.from(firstDay.atZone(zoneId).toInstant()));
param.setEndDate(Date.from(lastDay.atZone(zoneId).toInstant()));
} catch (NumberFormatException e) {
throw new IllegalArgumentException("年份或月份格式不正确", e);
} catch (Exception e) {
throw new RuntimeException("获取时间范围失败", e);
}
}
/**
* 生成假数据并填充到列表
*
* @param list 原始数据列表
* @param totalCount 总数
* @param fakerList 假数据列表
* @param type 类型1为设置numberOfPeople, 2为设置numberOfAmount
* @return 填充后的列表
*/
public static List<DirectStatisticsTop30VO> generateFakeData(
List<DirectStatisticsTop30VO> list,
int totalCount,
List<DirectStatisticsTop30VO> fakerList,
int type) {
if (list == null) {
list = new ArrayList<>();
}
if (fakerList == null || fakerList.isEmpty()) {
throw new IllegalArgumentException("假数据列表不能为空");
}
if (totalCount < list.size()) {
throw new IllegalArgumentException("总数不能小于原始列表大小");
}
// 计算需要生成的假数据数量
int needGenerateCount = totalCount - list.size();
// 检查假数据列表是否有足够的数据
if (needGenerateCount > fakerList.size()) {
throw new IllegalArgumentException("假数据列表数据不足");
}
// 从假数据列表中移除并获取需要的假数据
List<DirectStatisticsTop30VO> selectedFakerData = new ArrayList<>();
for (int i = 0; i < needGenerateCount; i++) {
// 随机选择一个假数据
int randomIndex = new Random().nextInt(fakerList.size());
DirectStatisticsTop30VO fakerData = fakerList.remove(randomIndex);
selectedFakerData.add(fakerData);
}
// 根据类型设置数据
if (type == 1) {
setNumberOfPeople(selectedFakerData, list);
} else if (type == 2) {
setNumberOfAmount(selectedFakerData, list);
} else {
throw new IllegalArgumentException("类型参数无效只能是1或2");
}
// 将生成的假数据添加到原始列表
list.addAll(selectedFakerData);
// 按照对应类型降序排序
if (type == 1) {
list.sort(Comparator.comparing(DirectStatisticsTop30VO::getNumberOfPeople).reversed());
} else {
list.sort(Comparator.comparing(DirectStatisticsTop30VO::getNumberOfAmount).reversed());
}
return list;
}
/**
* 设置numberOfPeople
*/
private static void setNumberOfPeople(List<DirectStatisticsTop30VO> selectedFakerData, List<DirectStatisticsTop30VO> originalList) {
// 找出原始列表中最小的numberOfPeople
int minPeopleCount = Integer.MAX_VALUE;
for (DirectStatisticsTop30VO data : originalList) {
if (data.getNumberOfPeople() != null && data.getNumberOfPeople() < minPeopleCount) {
minPeopleCount = data.getNumberOfPeople();
}
}
if (minPeopleCount == Integer.MAX_VALUE) {
minPeopleCount = 10; // 默认值可以根据需要调整
}
Random random = new Random();
for (DirectStatisticsTop30VO fakerData : selectedFakerData) {
if (minPeopleCount == 1) {
fakerData.setNumberOfPeople(1);
} else {
int value = random.nextInt(minPeopleCount - 1) + 1;
fakerData.setNumberOfPeople(value);
}
}
}
/**
* 设置numberOfAmount
*/
private static void setNumberOfAmount(List<DirectStatisticsTop30VO> selectedFakerData, List<DirectStatisticsTop30VO> originalList) {
// 找出原始列表中最小的numberOfAmount
BigDecimal minAmount = null;
for (DirectStatisticsTop30VO data : originalList) {
if (data.getNumberOfAmount() != null) {
if (minAmount == null || data.getNumberOfAmount().compareTo(minAmount) < 0) {
minAmount = data.getNumberOfAmount();
}
}
}
if (minAmount == null) {
minAmount = new BigDecimal(188); // 默认值可以根据需要调整
}
Random random = new Random();
for (DirectStatisticsTop30VO fakerData : selectedFakerData) {
if (minAmount.compareTo(new BigDecimal(188)) == 0) {
BigDecimal value = new BigDecimal(188);
fakerData.setNumberOfAmount(value);
} else {
BigDecimal range = minAmount.subtract(BigDecimal.ONE);
BigDecimal randomValue = new BigDecimal(random.nextDouble() * range.doubleValue()).setScale(4, BigDecimal.ROUND_HALF_UP);
if (randomValue.compareTo(BigDecimal.ZERO) <= 0) {
randomValue = BigDecimal.ONE;
}
fakerData.setNumberOfAmount(randomValue);
}
}
}
}

View File

@ -0,0 +1,316 @@
package com.hzs.member.statis.util;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.json.JSONUtil;
import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.domain.member.statis.DirectStatisticsTop30VO;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
public class DataGeneratorUtils {
// 时间粒度枚举
public enum TimeGranularity {
DAY, // 按天
HOUR // 按小时
}
private static final String prefix = "BD";
// 常见姓氏数组
private static final String[] COMMON_SURNAMES = {
"", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", ""
};
// 当前种子用于生成数据
private static int currentSeed = getSeed(TimeGranularity.DAY); // 默认按天
private static TimeGranularity currentGranularity = TimeGranularity.DAY;
// 预先生成的30条基础数据
private static List<DirectStatisticsTop30VO> PERIODIC_PRE_GENERATED_DATA = generatePeriodicPredefinedData();
/**
* 生成假数据并添加到列表中
*
* @param list 已有数据列表
* @param totalCount 需要生成的总数据量
* @param type 类型1为设置numberOfPeople2为设置numberOfAmount
* @param granularity 时间粒度DAY按天HOUR按小时
* @return 包含新生成数据的列表
*/
public static List<DirectStatisticsTop30VO> generateFakeData(
List<DirectStatisticsTop30VO> list, int totalCount, int type, TimeGranularity granularity) {
// 检查时间是否已变化如果变化则重新生成数据
checkAndUpdatePeriodicData(granularity);
// 创建返回列表复制原列表避免修改原列表
List<DirectStatisticsTop30VO> resultList = new ArrayList<>(list);
// 如果总数小于等于已有列表大小直接返回原列表
if (totalCount <= list.size()) {
return resultList;
}
// 需要生成的新数据数量
int needGenerateCount = totalCount - list.size();
// 从预生成数据中获取所需数量的数据
List<DirectStatisticsTop30VO> newData = getPeriodicPreGeneratedDataByCount(needGenerateCount, type);
// 添加新数据到结果列表
resultList.addAll(newData);
// 按照对应字段降序排序
if (type == 1) {
resultList.sort((a, b) -> b.getNumberOfPeople().compareTo(a.getNumberOfPeople()));
} else if (type == 2) {
resultList.sort((a, b) -> b.getNumberOfAmount().compareTo(a.getNumberOfAmount()));
}
return resultList;
}
/**
* 兼容旧版本按天生成数据
*/
public static List<DirectStatisticsTop30VO> generateFakeData(
List<DirectStatisticsTop30VO> list, int totalCount, int type) {
return generateFakeData(list, totalCount, type, TimeGranularity.DAY);
}
/**
* 检查时间是否已变化如果变化则更新数据
*/
private static void checkAndUpdatePeriodicData(TimeGranularity granularity) {
int newSeed = getSeed(granularity);
if (newSeed != currentSeed || granularity != currentGranularity) {
currentSeed = newSeed;
currentGranularity = granularity;
PERIODIC_PRE_GENERATED_DATA = generatePeriodicPredefinedData();
}
}
/**
* 根据时间粒度获取种子
* @param granularity 时间粒度
* @return 对应的种子
*/
private static int getSeed(TimeGranularity granularity) {
if (granularity == TimeGranularity.HOUR) {
// 按小时格式为YYYYMMDDHH
LocalDateTime now = LocalDateTime.now();
return Integer.parseInt(now.format(DateTimeFormatter.ofPattern("yyyyMMddHH")));
} else {
// 按天格式为YYYYMMDD
LocalDate today = LocalDate.now();
return Integer.parseInt(today.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
}
}
/**
* 生成当前周期的30条预定义数据
*/
private static List<DirectStatisticsTop30VO> generatePeriodicPredefinedData() {
List<DirectStatisticsTop30VO> dataList = new ArrayList<>(30);
// 使用当前周期的种子创建Random对象
Random periodRandom = new Random(currentSeed);
// 生成30条基础数据
for (int i = 0; i < 30; i++) {
DirectStatisticsTop30VO vo = new DirectStatisticsTop30VO();
// 设置基础信息包含时间粒度标识
long baseId = 4000000L + currentSeed % 1000000L;
vo.setMemberId(baseId + i);
// 根据时间粒度生成不同的用户编号前缀
// String prefix = currentGranularity == TimeGranularity.HOUR ? "HOUR" : "DAY";
// String prefix = SysConstants.HAI_FUN_PREFIX;
vo.setMemberCode(generateMemberCode(currentSeed, 10));
// 生成随机中文姓名
vo.setMemberName(generateRandomChineseName(i, periodRandom));
// 使用周期随机数生成数据值
vo.setNumberOfPeople(1 + periodRandom.nextInt(100)); // 1-100之间的随机值
// 生成金额值
BigDecimal amount = new BigDecimal(100 + periodRandom.nextInt(10000))
.add(new BigDecimal(periodRandom.nextDouble()))
.setScale(4, BigDecimal.ROUND_HALF_UP);
vo.setNumberOfAmount(amount);
dataList.add(vo);
}
return dataList;
}
public static String generateMemberCode(long currentSeed, int i) {
int prefixLength = prefix.length();
int numPartLength = 10 - prefixLength;
long seedPart = generateRandomSeedPart(numPartLength);
String memberCode = prefix + seedPart;
return memberCode.length() > 10 ? memberCode.substring(0, 10) : memberCode;
}
/**
* 生成指定位数的随机seedPart
*
* @param digits 位数
* @return 随机数
*/
private static long generateRandomSeedPart(int digits) {
if (digits <= 0) {
return 0;
}
// 计算最小值和最大值
int min = (int) Math.pow(10, digits - 1);
int max = (int) Math.pow(10, digits) - 1;
// 如果digits为0返回0
if (min == 0 && max == 0) {
return 0;
}
return RandomUtil.randomInt(min, max);
}
/**
* 根据需要的数量从预生成数据中获取数据
*/
private static List<DirectStatisticsTop30VO> getPeriodicPreGeneratedDataByCount(int count, int type) {
List<DirectStatisticsTop30VO> result = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
// 从预生成数据中循环获取
DirectStatisticsTop30VO originalVo = PERIODIC_PRE_GENERATED_DATA.get(i % 30);
// 创建副本以避免修改预生成的数据
DirectStatisticsTop30VO newVo = new DirectStatisticsTop30VO();
newVo.setMemberId(originalVo.getMemberId());
newVo.setMemberName(originalVo.getMemberName());
newVo.setMemberCode(originalVo.getMemberCode());
// 根据类型设置相应的值
if (type == 1) {
// 类型1设置numberOfPeople
newVo.setNumberOfPeople(originalVo.getNumberOfPeople());
newVo.setNumberOfAmount(BigDecimal.ZERO);
} else if (type == 2) {
// 类型2设置numberOfAmount
newVo.setNumberOfPeople(0);
newVo.setNumberOfAmount(originalVo.getNumberOfAmount());
}
result.add(newVo);
}
return result;
}
/**
* 生成随机中文姓名
*/
private static String generateRandomChineseName(int index, Random random) {
// 随机选择姓氏
String surname = COMMON_SURNAMES[random.nextInt(COMMON_SURNAMES.length)];
// 随机决定是二字姓名还是三字姓名
boolean isTwoCharacters = random.nextBoolean();
if (isTwoCharacters) {
// 二字姓名姓氏 + 1个随机汉字
return surname + generateRandomChineseChar(random);
} else {
// 三字姓名姓氏 + 2个随机汉字
return surname + generateRandomChineseChar(random) + generateRandomChineseChar(random);
}
}
/**
* 生成随机汉字
*/
private static char generateRandomChineseChar(Random random) {
// 中文汉字Unicode范围大致在0x4E00到0x9FA5之间
int start = 0x4E00;
int end = 0x9FA5;
return (char) (start + random.nextInt(end - start + 1));
}
/**
* 获取当前周期预生成的30条完整数据
* @param granularity 时间粒度
* @return 预生成的数据列表
*/
public static List<DirectStatisticsTop30VO> getPeriodicPreGeneratedData(TimeGranularity granularity) {
// 检查时间是否已变化
checkAndUpdatePeriodicData(granularity);
// 返回预生成数据的副本避免外部修改
List<DirectStatisticsTop30VO> copyList = new ArrayList<>(PERIODIC_PRE_GENERATED_DATA.size());
for (DirectStatisticsTop30VO vo : PERIODIC_PRE_GENERATED_DATA) {
DirectStatisticsTop30VO copy = new DirectStatisticsTop30VO();
copy.setMemberId(vo.getMemberId());
copy.setMemberName(vo.getMemberName());
copy.setMemberCode(vo.getMemberCode());
copy.setNumberOfPeople(vo.getNumberOfPeople());
copy.setNumberOfAmount(vo.getNumberOfAmount());
copyList.add(copy);
}
return copyList;
}
/**
* 用于测试根据指定日期和时间粒度获取数据
*/
public static List<DirectStatisticsTop30VO> getPreGeneratedDataByDate(
int year, int month, int day, int hour, TimeGranularity granularity) {
// 保存当前状态
int originalSeed = currentSeed;
TimeGranularity originalGranularity = currentGranularity;
List<DirectStatisticsTop30VO> originalData = PERIODIC_PRE_GENERATED_DATA;
try {
// 设置指定日期的种子
Calendar calendar = new GregorianCalendar(year, month - 1, day, hour, 0, 0);
Date date = calendar.getTime();
if (granularity == TimeGranularity.HOUR) {
LocalDateTime localDateTime = date.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDateTime();
currentSeed = Integer.parseInt(localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHH")));
} else {
LocalDate localDate = date.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
currentSeed = Integer.parseInt(localDate.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
}
currentGranularity = granularity;
// 重新生成指定日期的数据
PERIODIC_PRE_GENERATED_DATA = generatePeriodicPredefinedData();
// 返回生成的数据
return getPeriodicPreGeneratedData(granularity);
} finally {
// 恢复原始状态
currentSeed = originalSeed;
currentGranularity = originalGranularity;
PERIODIC_PRE_GENERATED_DATA = originalData;
}
}
public static void main(String[] args) {
// 按天生成数据
List<DirectStatisticsTop30VO> dailyData = DataGeneratorUtils.generateFakeData(
new ArrayList<>(), 30, 1, DataGeneratorUtils.TimeGranularity.DAY);
System.out.println(JSONUtil.toJsonPrettyStr(dailyData));
// 按小时生成数据
// List<DirectStatisticsTop30VO> hourlyData = DataGeneratorUtils.generateFakeData(
// new ArrayList<>(), 50, 2, DataGeneratorUtils.TimeGranularity.HOUR);
// System.out.println(JSONUtil.toJsonPrettyStr(hourlyData));
}
}

View File

@ -334,6 +334,29 @@ public class ApiMemberStructureController extends BaseController {
result.get(0).putExtra("rightFirstSurplus", bdBonusExpand.getExpandBig().toString());
}
}
result.get(0).putExtra("parentId", null);
result.get(0).putExtra("parentMemberCode", null);
result.get(0).putExtra("placeDept", null);
result.get(0).putExtra("countryName", null);
result.get(0).putExtra("countryUrl", null);
result.get(0).putExtra("countryUrl2", null);
result.get(0).putExtra("settleCountryName", null);
result.get(0).putExtra("settleCountryUrl", null);
result.get(0).putExtra("settleCountryUrl2", null);
result.get(0).putExtra("leftRealTotal", null);
result.get(0).putExtra("leftFirstTotal", null);
result.get(0).putExtra("leftRealNewPv", null);
result.get(0).putExtra("rightRealNewPv", null);
result.get(0).putExtra("leftFirstPurchaseAdd", null);
result.get(0).putExtra("rightFirstPurchaseAdd", null);
result.get(0).putExtra("leftRepeatPurchaseAdd", null);
result.get(0).putExtra("rightRepeatPurchaseAdd", null);
result.get(0).putExtra("rightRealTotal", null);
result.get(0).putExtra("rightFirstTotal", null);
result.get(0).putExtra("leftRepeatPurchaseTotal", null);
result.get(0).putExtra("rightRepeatPurchaseTotal", null);
JSONObject data = new JSONObject();
data.put("tree", result);
return AjaxResult.success(data);

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.member.statis.mapper.MemberStatisticsMapper">
<select id="getDirectStatisticsNumberOfPeople"
resultType="com.hzs.common.domain.member.statis.DirectStatisticsTop30VO">
select
PK_ID memberId,
MEMBER_CODE memberCode,
member_name memberName,
numberOfPeople,
numberOfAmount
from (
select
PK_REFERENCE,
count(PK_REFERENCE) numberOfPeople,
sum(order_amount) numberOfAmount
from sa_order
where
del_flag = 0
and order_status = 1
AND (order_type in (1,2) or (order_Type = 3 and ORDER_TYPE_EXTEND = 1))
and pay_time between #{param.startDate} and #{param.endDate}
group by PK_REFERENCE
) r
left join cu_member cm on r.PK_REFERENCE = cm.pk_id
WHERE ROWNUM <![CDATA[ <=]]> 30
order by numberOfPeople desc
</select>
<select id="getDirectStatisticsNumberOfAmount"
resultType="com.hzs.common.domain.member.statis.DirectStatisticsTop30VO">
select
PK_ID memberId,
MEMBER_CODE memberCode,
member_name memberName,
numberOfPeople,
numberOfAmount
from (
select
PK_REFERENCE,
count(PK_REFERENCE) numberOfPeople,
sum(order_amount) numberOfAmount
from sa_order
where
del_flag = 0
and order_status = 1
AND (order_type in (1,2) or (order_Type = 3 and ORDER_TYPE_EXTEND = 1))
and pay_time between #{param.startDate} and #{param.endDate}
group by PK_REFERENCE
) r
left join cu_member cm on r.PK_REFERENCE = cm.pk_id
WHERE ROWNUM <![CDATA[ <=]]> 30
order by numberOfAmount desc
</select>
</mapper>

View File

@ -25,19 +25,12 @@ import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* @BelongsProject: hzs_cloud
* @BelongsPackage: com.hzs.activity.controller.manage
* @Author: yh
* @CreateTime: 2023-04-20 13:51
* @Version: 1.0
*/
@RestController
@RequestMapping("/manage/activity")
public class ActivityController extends BaseController {
@Autowired
private IAcBaseConfigService baseConfigService;
private IAcBaseConfigService iAcBaseConfigService;
@Autowired
private IActivityService iActivityService;
@ -95,7 +88,7 @@ public class ActivityController extends BaseController {
// 创建时间倒叙
queryWrapper.orderByDesc(AcBaseConfig::getCreationTime);
List<BaseConfigVo> resultList = new ArrayList<>();
List<AcBaseConfig> list = baseConfigService.list(queryWrapper);
List<AcBaseConfig> list = iAcBaseConfigService.list(queryWrapper);
for (AcBaseConfig acBaseConfig : list) {
BaseConfigVo baseConfigVo = BeanUtil.copyProperties(acBaseConfig, BaseConfigVo.class);
// 判断活动状态

View File

@ -5,9 +5,6 @@ import com.hzs.common.domain.activity.base.AcApprovalLog;
/**
* 活动审批日志 Mapper 接口
*
* @author hzs
* @since 2023-04-22
*/
public interface AcApprovalLogMapper extends BaseMapper<AcApprovalLog> {

View File

@ -17,7 +17,6 @@ public interface AcBaseConfigMapper extends BaseMapper<AcBaseConfig> {
* 根据活动类型查询基本配置
*
* @param baseConfigVO 基本活动配置
* @return List<AcBaseConfig>
*/
List<AcBaseConfig> selectBaseConfigByType(AcBaseConfigVO baseConfigVO);

View File

@ -6,14 +6,6 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @BelongsProject: hzs_cloud
* @BelongsPackage: com.hzs.activity.controller.param
* @Author: yh
* @CreateTime: 2023-04-20 17:02
* @Description: TODO
* @Version: 1.0
*/
@Data
public class ConsumeRuleConfigParam implements Serializable {
/**

View File

@ -1,240 +0,0 @@
package com.hzs.activity.base.provider;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.hzs.activity.base.IActivityApprovalServiceApi;
import com.hzs.activity.base.service.IAcApprovalLogService;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.activity.consume.service.IAcConsumeRuleConfigService;
import com.hzs.activity.consume.service.IAcMemberConsumeRuleService;
import com.hzs.activity.draw.param.PurchasedTimesParam;
import com.hzs.activity.draw.service.IAcDrawGiftRuleConfigService;
import com.hzs.activity.draw.service.IAcDrawRewardNumService;
import com.hzs.activity.pick.param.AcPickSaveDetailParam;
import com.hzs.activity.pick.service.IAcPickService;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.activity.wares.service.IAcWaresRuleConfigService;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.exception.base.BaseException;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.domain.activity.base.AcApprovalLog;
import com.hzs.member.base.IMemberServiceApi;
import com.hzs.sale.product.IProductServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
/**
* 活动审批相关服务
*/
@DubboService
public class ActivityApprovalProvider implements IActivityApprovalServiceApi {
@Autowired
private IAcDrawRewardNumService drawRewardNumService;
@Autowired
private IAcConsumeRuleConfigService consumeRuleConfigService;
@Autowired
private IActivityService activityService;
@Autowired
private IAcWaresRuleConfigService waresRuleConfigService;
@Autowired
private IAcDrawGiftRuleConfigService drawGiftConfigService;
@Autowired
private IAcPickService iAcPickService;
@Autowired
private IAcApprovalLogService iAcApprovalLogService;
@Autowired
private IAcRepurCouponsRuleConfigService acRepurCouponsRuleConfigService;
@Autowired
private IAcMemberConsumeRuleService iAcMemberConsumeRuleService;
@DubboReference
IMemberServiceApi iMemberServiceApi;
@DubboReference
IProductServiceApi iProductServiceApi;
@Override
public R<Boolean> approvalCallback(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
try {
// 返回内容
String str = null;
if (EApproveStatus.FINISH.getValue() == approvalBusinessResultDTO.getEApproveStatus().getValue()) {
// 通过处理
switch (approvalBusinessResultDTO.getEApprovalBusiness()) {
case PICK_ADD:
// 提货充值
str = iAcPickService.pickApprovalAgree(approvalBusinessResultDTO);
break;
case PICK_ADD_DEL:
// 提货充值删除
str = iAcPickService.delpickApprovalAgree(approvalBusinessResultDTO);
break;
// 直推赠送
case DIRECT_PUSH_GIFT:
str = acRepurCouponsRuleConfigService.approvalAgree(approvalBusinessResultDTO);
break;
case LOTTERY_DRAW:
str = drawGiftConfigService.approvalAgree(approvalBusinessResultDTO);
break;
case TOURISM_SAVE:
case TOURISM_UPDATE:
case TOURISM_DELETE:
str = activityService.approvalAgree(approvalBusinessResultDTO);
break;
case PRODUCT_GIFT_ADD:
case PRODUCT_GIFT_UPDATE:
case PRODUCT_GIFT_REMOVE:
// 商品赠送添加/修改/删除
str = waresRuleConfigService.approvalAgree(approvalBusinessResultDTO);
break;
case CONSUME_GIFT_ADD:
case CONSUME_GIFT_UPDATE:
case CONSUME_GIFT_REMOVE:
// 消费赠送添加/修改/删除
consumeRuleConfigService.approvalAgree(approvalBusinessResultDTO);
break;
case MEMBER_CONSUME_GIFT_ADD:
case MEMBER_CONSUME_GIFT_UPDATE:
case MEMBER_CONSUME_GIFT_REMOVE:
// 会员消费赠送添加/修改/删除
iAcMemberConsumeRuleService.approvalAgree(approvalBusinessResultDTO);
break;
case LOTTERY_DRAW_ADD:
case LOTTERY_DRAW_UPDATE:
case LOTTERY_DRAW_REMOVE:
// 抽奖配置添加/修改/删除
drawGiftConfigService.approvalAgree(approvalBusinessResultDTO);
break;
case PUR_CHASED_TIMES:
// 充值已购买次数
drawRewardNumService.rechargePurchasedTimes(approvalBusinessResultDTO);
break;
case UN_PUR_CHASED_TIMES:
// 充值未购买次数
drawRewardNumService.unRechargePurchasedTimes(approvalBusinessResultDTO);
break;
default:
}
} else {
// 驳回处理
switch (approvalBusinessResultDTO.getEApprovalBusiness()) {
case PICK_ADD:
// 提货充值
str = iAcPickService.pickApprovalReject(approvalBusinessResultDTO);
break;
// 直推赠送
case DIRECT_PUSH_GIFT:
str = acRepurCouponsRuleConfigService.approvalReject(approvalBusinessResultDTO);
break;
case LOTTERY_DRAW:
str = acRepurCouponsRuleConfigService.approvalReject(approvalBusinessResultDTO);
break;
case PRODUCT_GIFT_ADD:
case PRODUCT_GIFT_UPDATE:
case PRODUCT_GIFT_REMOVE:
// 商品赠送添加
str = waresRuleConfigService.approvalReject(approvalBusinessResultDTO);
break;
default:
}
}
if (StringUtils.isNotEmpty(str)) {
// 返回有信息说明有问题抛出异常
throw new BaseException(str);
}
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.ok();
}
/**
* @description: 活动类审批诉求查询
* @author:
* @date: 2023/4/25 16:55
* @param: [eApprovalBusiness, businessCode, pkCountry]
* @return: com.hzs.common.core.domain.R
**/
@Override
public R<?> queryApprovalData(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry) {
try {
List<AcApprovalLog> acApprovalLogList = iAcApprovalLogService.queryApprovalLogList(eApprovalBusiness, businessCode, pkCountry);
switch (eApprovalBusiness) {
case PICK_ADD:
case PICK_ADD_DEL:
// 提货充值
List<AcPickSaveDetailParam> list = new ArrayList<>();
for (AcApprovalLog approvalLog : acApprovalLogList) {
AcPickSaveDetailParam afterData = JSONUtil.toBean(approvalLog.getAfterData(), AcPickSaveDetailParam.class);
afterData.setMemberName(iMemberServiceApi.getMember(afterData.getMemberCode()).getData().getMemberName());
if (afterData.getPkProduct() != null) {
afterData.setProductName(iProductServiceApi.getProduct(afterData.getPkProduct()).getData().getProductName() + "(" + afterData.getSpecsName() + ")");
}
list.add(afterData);
}
return R.ok(list);
// 直推赠送
case DIRECT_PUSH_GIFT:
case TOURISM_UPDATE:
case TOURISM_DELETE:
case TOURISM_SAVE:
case LOTTERY_DRAW:
// 抽奖
return R.ok(getRecommendApprovalData(acApprovalLogList.get(0)));
case PUR_CHASED_TIMES:
case UN_PUR_CHASED_TIMES:
// 充值已购买次数
return R.ok(getRecommendApprovalDataInfo(acApprovalLogList.get(0)));
case CONSUME_GIFT_ADD:
case CONSUME_GIFT_UPDATE:
case CONSUME_GIFT_REMOVE:
case PRODUCT_GIFT_ADD:
case PRODUCT_GIFT_UPDATE:
case PRODUCT_GIFT_REMOVE:
case LOTTERY_DRAW_ADD:
case LOTTERY_DRAW_UPDATE:
case LOTTERY_DRAW_REMOVE:
case MEMBER_CONSUME_GIFT_ADD:
case MEMBER_CONSUME_GIFT_UPDATE:
case MEMBER_CONSUME_GIFT_REMOVE:
return R.ok(getRecommendApprovalData(acApprovalLogList.get(0)));
default:
}
} catch (Exception e) {
return R.fail(e.getMessage());
}
return R.ok();
}
private AcRecommendParam getRecommendApprovalData(AcApprovalLog acApprovalLog) {
String data = acApprovalLog.getAfterData();
return JSONUtil.toBean(data, AcRecommendParam.class);
}
private PurchasedTimesParam getRecommendApprovalDataInfo(AcApprovalLog acApprovalLog) {
String data = acApprovalLog.getAfterData();
if (StringUtils.isNotBlank(data)) {
JSONObject js = new JSONObject(data);
String memberCode = js.getStr("memberCode");
String memberName = js.getStr("memberName");
Integer num = js.getInt("num");
PurchasedTimesParam purchasedTimesParam = new PurchasedTimesParam();
purchasedTimesParam.setMemberCode(memberCode);
purchasedTimesParam.setMemberName(memberName);
purchasedTimesParam.setNum(num);
return purchasedTimesParam;
}
return null;
}
}

View File

@ -1,16 +1,12 @@
package com.hzs.activity.base.provider;
import cn.hutool.core.bean.BeanUtil;
import com.hzs.activity.base.IActivityServiceApi;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.activity.draw.service.IAcDrawRewardNumService;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.activity.recommend.service.IAcRepurSharRuleConfigService;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig;
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
@ -21,24 +17,22 @@ import java.util.Date;
import java.util.List;
/**
* 所有活动的生效获得赠品入口
* 所有活动的生效
*/
@Slf4j
@DubboService
public class ActivityServiceProvider implements IActivityServiceApi {
@Autowired
private IAcDrawRewardNumService acDrawRewardNumService;
private IAcDrawRewardNumService iAcDrawRewardNumService;
@Autowired
private IAcRepurCouponsRuleConfigService acRepurCouponsRuleConfigService;
@Autowired
private IAcRepurSharRuleConfigService acRepurSharRuleConfigService;
private IAcRepurCouponsRuleConfigService iAcRepurCouponsRuleConfigService;
@Autowired
private IActivityService iActivityService;
@Override
public R<BigDecimal> queryDrawRewardPayNumMoney(Long pkMember, String orderCode) {
BigDecimal payMoney = acDrawRewardNumService.queryDrawRewardPayNumMoney(pkMember, orderCode);
BigDecimal payMoney = iAcDrawRewardNumService.queryDrawRewardPayNumMoney(pkMember, orderCode);
if (payMoney == null) {
return R.fail();
}
@ -57,7 +51,7 @@ public class ActivityServiceProvider implements IActivityServiceApi {
@Override
public R<Boolean> callBackOnlinePay(Long pkMember, String orderCode) {
try {
return R.ok(acDrawRewardNumService.callBackOnlinePay(pkMember, orderCode));
return R.ok(iAcDrawRewardNumService.callBackOnlinePay(pkMember, orderCode));
} catch (Exception e) {
return R.fail();
}
@ -66,7 +60,7 @@ public class ActivityServiceProvider implements IActivityServiceApi {
@Override
public R<Boolean> backGiveMemberDrawNum(SaOrderExt saOrderExt) {
try {
return R.ok(acDrawRewardNumService.backGiveMemberDrawNum(saOrderExt));
return R.ok(iAcDrawRewardNumService.backGiveMemberDrawNum(saOrderExt));
} catch (Exception e) {
return R.fail();
}
@ -74,7 +68,7 @@ public class ActivityServiceProvider implements IActivityServiceApi {
@Override
public R<List<AcRepurCouponsRuleConfig>> queryAcRepurchaseCouponsRule(Date settleDate) {
List<AcRepurCouponsRuleConfig> acRepurCouponsRuleConfigList = acRepurCouponsRuleConfigService.queryAcRepurchaseCouponsRule(settleDate);
List<AcRepurCouponsRuleConfig> acRepurCouponsRuleConfigList = iAcRepurCouponsRuleConfigService.queryAcRepurchaseCouponsRule(settleDate);
if (acRepurCouponsRuleConfigList != null && acRepurCouponsRuleConfigList.size() > 0) {
return R.ok(acRepurCouponsRuleConfigList);
} else {
@ -82,15 +76,10 @@ public class ActivityServiceProvider implements IActivityServiceApi {
}
}
@Override
public R<List<AcRepurSharRuleConfigExt>> queryRepurSharRuleConfig(Date startDate, Date endDate) {
return R.ok(acRepurSharRuleConfigService.queryRepurSharRuleConfig(startDate, endDate));
}
@Override
public R<Boolean> invokeRecommendUpgrade(AcRecommendUpgradeDTO recommendUpgradeDTO) {
try {
return R.ok(acRepurCouponsRuleConfigService.invokeRecommendUpgrade(BeanUtil.copyProperties(recommendUpgradeDTO, AcRecommendUpgrade.class)));
return R.ok(iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(recommendUpgradeDTO));
} catch (Exception e) {
return R.fail();
}

View File

@ -9,9 +9,6 @@ import java.util.List;
/**
* 活动审批日志 服务类
*
* @author hzs
* @since 2023-04-22
*/
public interface IAcApprovalLogService extends IService<AcApprovalLog> {
@ -25,16 +22,6 @@ public interface IAcApprovalLogService extends IService<AcApprovalLog> {
*/
AcApprovalLog queryApprovalLog(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry);
/**
* 查询审批记录列表
*
* @param eApprovalBusiness 业务类型
* @param businessCode 业务单号
* @param pkCountry 所属国家
* @return
*/
List<AcApprovalLog> queryApprovalLogList(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry);
/**
* 更新审核修改记录
*

View File

@ -9,9 +9,6 @@ import java.util.List;
/**
* 活动基本配置表 服务类
*
* @author hzs
* @since 2023-04-20
*/
public interface IAcBaseConfigService extends IService<AcBaseConfig> {
@ -19,31 +16,21 @@ public interface IAcBaseConfigService extends IService<AcBaseConfig> {
* 根据活动类型查询基本配置
*
* @param baseConfigVO 基本活动配置
* @return List<AcBaseConfig>
*/
List<AcBaseConfig> selectBaseConfigByType(AcBaseConfigVO baseConfigVO);
/**
* @description: 会员前端查询活动列表
* @author: sui q
* @date: 2023/4/27 9:20
* @param: null null
* 会员前端查询活动列表
**/
List<AcBaseConfigExt> queryBaseConfigList(Integer pkCountry, Long pkMember);
/*
* @description: 查询订单详情
* @author: sui q
* @date: 2023/6/21 10:41
* @param: null null
* 查询订单详情
**/
AcBaseConfigExt queryBaseConfigDetail(Long pkId, Integer pkCountry);
/**
* @description: 根据主键查询活动配置
* @author: sui q
* @date: 2023/4/27 14:05
* @param: null null
* 根据主键查询活动配置
**/
AcBaseConfig queryBaseConfigById(Long pkBaseId);

View File

@ -11,13 +11,9 @@ import com.hzs.common.domain.activity.base.AcApprovalLog;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 活动审批日志 服务实现类
*
* @author hzs
* @since 2023-04-22
*/
@Service
public class AcApprovalLogServiceImpl extends ServiceImpl<AcApprovalLogMapper, AcApprovalLog> implements IAcApprovalLogService {
@ -32,16 +28,6 @@ public class AcApprovalLogServiceImpl extends ServiceImpl<AcApprovalLogMapper, A
return this.getOne(queryWrapper);
}
@Override
public List<AcApprovalLog> queryApprovalLogList(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry) {
// 查询修改记录
LambdaQueryWrapper<AcApprovalLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcApprovalLog::getBusinessCode, businessCode);
queryWrapper.eq(AcApprovalLog::getApprovalType, eApprovalBusiness.getValue());
queryWrapper.eq(AcApprovalLog::getPkCountry, pkCountry);
return this.list(queryWrapper);
}
@Override
public boolean updateApprovalLog(EApprovalBusiness eApprovalBusiness, String businessCode, Integer pkCountry, Long userId,
EApproveRechargeStatus approveStatus, String remark) {

View File

@ -17,9 +17,6 @@ import java.util.List;
/**
* 活动基本配置表 服务实现类
*
* @author hzs
* @since 2023-04-20
*/
@Service
public class AcBaseConfigServiceImpl extends ServiceImpl<AcBaseConfigMapper, AcBaseConfig> implements IAcBaseConfigService {

View File

@ -19,8 +19,8 @@ import com.hzs.activity.draw.service.IAcDrawGiftRuleConfigService;
import com.hzs.activity.draw.service.IAcDrawRewardNumService;
import com.hzs.activity.draw.service.IAcDrawRuleConfigService;
import com.hzs.activity.draw.vo.AcDrawGiftRuleConfigVo;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.pick.service.IAcPickUpConfigService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.activity.wares.service.IAcGiftConfigService;
@ -105,9 +105,9 @@ public class ActivityServiceImpl implements IActivityService {
@Autowired
private IAcMemberConsumeRuleService iAcMemberConsumeRuleService;
@Autowired
private IAcDrawRewardNumService acDrawRewardNumService;
private IAcDrawRewardNumService iAcDrawRewardNumService;
@Autowired
private IAcRepurCouponsRuleConfigService acRepurCouponsRuleConfigService;
private IAcRepurCouponsRuleConfigService iAcRepurCouponsRuleConfigService;
@Autowired
private IAcPickUpConfigService pickUpConfigService;
@Autowired
@ -118,13 +118,13 @@ public class ActivityServiceImpl implements IActivityService {
private IBdWaresService waresService;
@DubboReference
IGradeServiceApi gradeServiceApi;
IGradeServiceApi iGradeServiceApi;
@DubboReference
IAwardsServiceApi awardsServiceApi;
IAwardsServiceApi iAwardsServiceApi;
@DubboReference
IMemberServiceApi iMemberServiceApi;
@DubboReference
IApprovalServiceApi approvalServiceApi;
IApprovalServiceApi iApprovalServiceApi;
/**
@ -400,7 +400,7 @@ public class ActivityServiceImpl implements IActivityService {
for (Map.Entry<Integer, List<AcGoalMemberConfig>> item : memberConfigList.entrySet()) {
if (item.getKey().equals(1)) {
// 等级
R<List<GradeDTO>> gradeDTO = gradeServiceApi.selectGradeAll(activityParam.getPkCountry());
R<List<GradeDTO>> gradeDTO = iGradeServiceApi.selectGradeAll(activityParam.getPkCountry());
List<GradeDTO> gradeList = gradeDTO.getData();
str.append("注册等级:");
for (AcGoalMemberConfig acGoalMemberConfig : item.getValue()) {
@ -414,7 +414,7 @@ public class ActivityServiceImpl implements IActivityService {
str.append("\t\t");
} else if (item.getKey().equals(2)) {
// 奖衔
R<List<BdAwards>> awardsDTO = awardsServiceApi.queryAwards(activityParam.getPkCountry());
R<List<BdAwards>> awardsDTO = iAwardsServiceApi.queryAwards(activityParam.getPkCountry());
List<BdAwards> awardsList = awardsDTO.getData();
str.append("真实奖衔:");
for (AcGoalMemberConfig acGoalMemberConfig : item.getValue()) {
@ -632,7 +632,7 @@ public class ActivityServiceImpl implements IActivityService {
*/
@Override
public String onLinePetition(AcRecommendParam recommendParam) {
log.info("旅游活动新增参数{}",JSONUtil.toJsonStr(recommendParam));
log.info("旅游活动新增参数{}", JSONUtil.toJsonStr(recommendParam));
//业务单号
String code = CommonUtil.createSerialNumber(EOrderPrefix.ACTIVITY_CODE.getValue());
EApprovalBusiness approvalBusiness = null;
@ -763,7 +763,7 @@ public class ActivityServiceImpl implements IActivityService {
.signType(ESignType.getEnumByValue(recommendParam.getSignType())).userIdList(recommendParam.getUserIdList())
.fileList(recommendParam.getFileList())
.sendIdList(recommendParam.getSendIdList()).remark(recommendParam.getRemark()).build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, recommendParam.getLoginUser());
R<String> submit = iApprovalServiceApi.submit(approvalSubmitDTO, recommendParam.getLoginUser());
if (!submit.isSuccess()) {
throw new RuntimeException("旅游活动参数提交审批失败!");
}
@ -804,21 +804,21 @@ public class ActivityServiceImpl implements IActivityService {
@Transactional(rollbackFor = Exception.class)
public Boolean handleActivity(SaOrderExt saOrderExt) {
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()) {
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()) {
// 抽奖
acDrawRewardNumService.giveMemberDrawNum(saOrderExt);
}
// // 抽奖
// iAcDrawRewardNumService.giveMemberDrawNum(saOrderExt);
// 直推升级
acRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgrade.builder().saOrderExt(saOrderExt).orderOperateStatus(EOrderOperateStatus.NORMAL).build());
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder()
.saOrderExt(saOrderExt)
.orderOperateStatus(EOrderOperateStatus.NORMAL)
.build());
} else if (EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 抽奖
acDrawRewardNumService.giveMemberDrawNum(saOrderExt);
// // 抽奖
// iAcDrawRewardNumService.giveMemberDrawNum(saOrderExt);
// 直推升级
acRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgrade.builder().saOrderExt(saOrderExt).orderOperateStatus(EOrderOperateStatus.NORMAL).build());
} else if (EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 直推升级
acRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgrade.builder().saOrderExt(saOrderExt).orderOperateStatus(EOrderOperateStatus.NORMAL).build());
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder()
.saOrderExt(saOrderExt)
.orderOperateStatus(EOrderOperateStatus.NORMAL)
.build());
}
return true;
}
@ -1050,7 +1050,7 @@ public class ActivityServiceImpl implements IActivityService {
&& StringUtils.isNotEmpty(cuMember.getMemberName())
&& StringUtils.isNotEmpty(cuMember.getPhone())) {
// 根据订单业绩匹配对应等级
BdGrade bdGrade = gradeServiceApi.getLastGrade(giftConfigParam.getOrderAchieve(), pkCountry).getData();
BdGrade bdGrade = iGradeServiceApi.getLastGrade(giftConfigParam.getOrderAchieve(), pkCountry).getData();
if (null != bdGrade) {
// 查询会员该等级点位数量因为当前订单的数据还没有更新入库此处计算数量时需要加 1
Integer memberPoint = iMemberServiceApi.countGradeMemberPoint(cuMember.getMemberName(), cuMember.getPhone(), bdGrade.getPkId(), pkCountry).getData() + 1;

View File

@ -7,14 +7,6 @@ import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @BelongsProject: hzs_cloud
* @BelongsPackage: com.hzs.activity.base.vo
* @Author: yh
* @CreateTime: 2023-04-21 18:56
* @Description: TODO
* @Version: 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ConsumeRuleConfigVo extends AcConsumeRuleConfig {

View File

@ -9,17 +9,11 @@ import java.util.List;
/**
* 消费买赠规则配置表 Mapper 接口
*
* @author hzs
* @since 2023-04-20
*/
public interface AcConsumeRuleConfigMapper extends BaseMapper<AcConsumeRuleConfig> {
/*
* @description: 查询买赠活动赠品配置根据条件
* @author: sui q
* @date: 2023/4/25 19:26
* @param: null null
* 查询买赠活动赠品配置根据条件
**/
List<AcConsumeRuleConfigExt> queryConsumeGiftConfigByCondition(GiftConfigParam giftConfigParam);
}

View File

@ -9,11 +9,7 @@ import java.util.Date;
import java.util.List;
/**
* @description: 会员消费赠送活动规则配置
* @author: zhang jing
* @date: 2024/11/28 11:30
* @param:
* @return:
* 会员消费赠送活动规则配置
**/
public interface AcMemberConsumeRuleMapper extends BaseMapper<AcMemberConsumeRule> {

View File

@ -11,17 +11,11 @@ import java.util.List;
/**
* 消费买赠规则配置表 服务类
*
* @author hzs
* @since 2023-04-20
*/
public interface IAcConsumeRuleConfigService extends IService<AcConsumeRuleConfig> {
/*
* @description: 查询业绩赠送活动赠品配置根据条件
* @author: sui q
* @date: 2023/4/25 19:26
* @param: null null
* 查询业绩赠送活动赠品配置根据条件
**/
List<AcConsumeRuleConfigExt> queryConsumeGiftConfigByCondition(GiftConfigParam giftConfigParam);

View File

@ -1,9 +1,7 @@
package com.hzs.activity.consume.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.base.vo.AcMemberConsumeRuleVo;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.common.domain.activity.consume.AcMemberConsumeRule;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.common.domain.activity.consume.ext.AcMemberConsumeRuleExt;
@ -12,32 +10,20 @@ import java.util.Date;
import java.util.List;
/**
* @description: 会员消费赠送活动规则配置
* @author: zhang jing
* @date: 2024/11/28 11:30
* @param:
* @return:
* 会员消费赠送活动规则配置
**/
public interface IAcMemberConsumeRuleService extends IService<AcMemberConsumeRule> {
/**
* @description:会员消费赠送发起签呈
* @author: zhang jing
* @date: 2024/11/29 9:42
* @param: [memberConsumeRuleVo]
* @return: java.lang.Boolean
* 会员消费赠送发起签呈
**/
String onLinePetition(AcMemberConsumeRuleVo memberConsumeRuleVo);
/**
* @description: 会员消费赠审批
* @author: zhang jing
* @date: 2024/11/29 16:32
* @param: [approvalBusinessResultDTO]
* @return: java.lang.String
* 会员消费赠审批
**/
String approvalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 规则列表以及商品信息
*
@ -51,27 +37,17 @@ public interface IAcMemberConsumeRuleService extends IService<AcMemberConsumeRul
List<AcMemberConsumeRuleExt> listRuleAndProduct(Date startDate, Date endDate, Integer pkGrade, Integer memberPoint, Integer pkCountry);
/**
* @description: 新增会员消费活动
* @author: zhang jing
* @date: 2024/12/2 17:15
* @param: [mcrVo]
* @return: java.lang.Long
* 新增会员消费活动
**/
Long saveMemberConsumeRule(AcMemberConsumeRuleVo mcrVo);
/**
* @description: 修改会员消费活动规则表
* @author: zhang jing
* @date: 2024/12/2 17:14
* @param: [mcrVo]
* @return: void
* 修改会员消费活动规则表
**/
void updateConsumptionGift(AcMemberConsumeRuleVo mcrVo);
/**
* @description: 删除会员消费活动
* @author: zhang jing
* @date: 2024/12/2 17:14
* @param: [pkId]
* @return: void
* 删除会员消费活动
**/
void removeActivity(Integer pkId);
}

View File

@ -43,9 +43,6 @@ import java.util.List;
/**
* 消费买赠规则配置表 服务实现类
*
* @author hzs
* @since 2023-04-20
*/
@Service
@Slf4j

View File

@ -3,22 +3,17 @@ package com.hzs.activity.consume.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.base.param.ActivityParam;
import com.hzs.activity.base.param.ConsumeRuleConfigParam;
import com.hzs.activity.base.service.IAcApprovalLogService;
import com.hzs.activity.base.service.IAcBaseConfigService;
import com.hzs.activity.base.service.IAcGoalMemberConfigService;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.activity.base.vo.AcMemberConsumeRuleVo;
import com.hzs.activity.base.vo.ConsumeRuleConfigVo;
import com.hzs.activity.consume.mapper.AcMemberConsumeRuleMapper;
import com.hzs.activity.consume.service.IAcMemberConsumeRuleService;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.wares.service.IAcGiftConfigService;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.StringUtils;
@ -27,18 +22,12 @@ import com.hzs.common.domain.activity.base.AcBaseConfig;
import com.hzs.common.domain.activity.base.AcGiftConfig;
import com.hzs.common.domain.activity.base.AcGoalMemberConfig;
import com.hzs.common.domain.activity.base.ext.AcGiftConfigExt;
import com.hzs.common.domain.activity.consume.AcConsumeRuleConfig;
import com.hzs.common.domain.activity.consume.AcConsumeShieldConfig;
import com.hzs.common.domain.activity.consume.AcMemberConsumeRule;
import com.hzs.common.domain.activity.consume.ext.AcMemberConsumeRuleExt;
import com.hzs.common.domain.activity.wares.AcWaresRuleConfig;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.system.sys.IApprovalServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -47,14 +36,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.List;
/**
* @description: 会员消费赠送活动规则配置
* @author: zhang jing
* @date: 2024/11/28 11:30
* @param:
* @return:
* 会员消费赠送活动规则配置
**/
@Service
@Slf4j
@ -64,8 +48,6 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
private IAcApprovalLogService acApprovalLogService;
@Autowired
private IActivityService iActivityService;
@DubboReference
IApprovalServiceApi approvalServiceApi;
@Autowired
private IAcBaseConfigService baseConfigService;
@Autowired
@ -73,18 +55,10 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
@Autowired
private IAcGoalMemberConfigService iAcGoalMemberConfigService;
/**
* @description: 会员消费赠送发起签呈
* @author: zhang jing
* @date: 2024/11/29 9:42
* @param: [memberConsumeRuleVo]
* @return: java.lang.Boolean
**/
@Override
@Transactional(rollbackFor = Exception.class)
public String onLinePetition(AcMemberConsumeRuleVo memberConsumeRuleVo) {
log.info("商品赠送入参{}",JSONUtil.toJsonStr(memberConsumeRuleVo));
log.info("商品赠送入参{}", JSONUtil.toJsonStr(memberConsumeRuleVo));
EApprovalBusiness approvalBusiness = null;
if (memberConsumeRuleVo.getControlType() == EControlType.SAVE.getValue()) {
approvalBusiness = EApprovalBusiness.MEMBER_CONSUME_GIFT_ADD;
@ -113,7 +87,7 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
activityParam.setActType(EActType.MEMBER_CONSUMPTION.getValue());
memberConsumeRuleVo.setActivityParam(activityParam);
updateConsumptionGift(memberConsumeRuleVo);
}else if (memberConsumeRuleVo.getControlType().equals(EControlType.DELETE.getValue())) {
} else if (memberConsumeRuleVo.getControlType().equals(EControlType.DELETE.getValue())) {
ActivityParam activityParam = memberConsumeRuleVo.getActivityParam();
Long pkId = activityParam.getPkId();
removeActivity(pkId.intValue());
@ -129,34 +103,7 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
}
/**
* @description: 发起签呈
* @author: zhang jing
* @date: 2024/11/29 9:44
* @param: [memberConsumeRuleVo, approvalBusiness]
* @return: java.lang.Boolean
**/
public Boolean submitApproval(AcMemberConsumeRuleVo memberConsumeRuleVo, EApprovalBusiness approvalBusiness) {
//保存审批日志
AcApprovalLog approvalLog = saveApprovalLog(memberConsumeRuleVo, approvalBusiness);
ApprovalSubmitDTO approvalSubmitDTO = ApprovalSubmitDTO.builder().eApprovalBusiness(approvalBusiness)
.businessCode(approvalLog.getBusinessCode())
.businessData(JSONObject.toJSONString(memberConsumeRuleVo.getActivityParam()))
.signType(ESignType.getEnumByValue(memberConsumeRuleVo.getSignType())).userIdList(memberConsumeRuleVo.getUserIdList())
.sendIdList(memberConsumeRuleVo.getSendIdList()).remark(memberConsumeRuleVo.getRemark()).fileList(memberConsumeRuleVo.getFileList())
.build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, memberConsumeRuleVo.getLoginUser());
if (!submit.isSuccess()) {
throw new RuntimeException("旅游活动参数提交审批失败!");
}
return submit.isSuccess();
}
/**
* @description: 保存审批日志
* @author: zhang jing
* @date: 2024/11/29 9:44
* @param: [memberConsumeRuleVo, approvalBusiness]
* @return: com.hzs.common.domain.activity.base.AcApprovalLog
* 保存审批日志
**/
public AcApprovalLog saveApprovalLog(AcMemberConsumeRuleVo memberConsumeRuleVo, EApprovalBusiness approvalBusiness) {
Integer controlType = memberConsumeRuleVo.getControlType();
@ -176,14 +123,8 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
return approvalLog;
}
/**
* @description: 会员消费赠送审批
* @author: zhang jing
* @date: 2024/11/29 16:33
* @param: [businessResult]
* @return: java.lang.String
* 会员消费赠送审批
**/
@Override
@Transactional(rollbackFor = Exception.class)
@ -218,7 +159,7 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
updateConsumptionGift(memberConsumeRuleVo);
// IActivityService.createBaseConfigLog(activityParam, new StringBuffer(), activityParam.getPkBaseId(), EApprovalBusiness.CONSUME_GIFT_UPDATE.getValue(), true);
return null;
}else if (controlType.equals(EControlType.DELETE.getValue())) {
} else if (controlType.equals(EControlType.DELETE.getValue())) {
ActivityParam activityParam = memberConsumeRuleVo.getActivityParam();
Long pkBaseId = activityParam.getPkBaseId();
AcBaseConfig baseConfig = baseConfigService.getById(pkBaseId);
@ -229,13 +170,6 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
return null;
}
/**
* 新增消费赠送规格
*
* @param mcrVo
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long saveMemberConsumeRule(AcMemberConsumeRuleVo mcrVo) {
@ -248,13 +182,6 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
return baseConfig.getPkId();
}
/**
* @description:修改会员消费赠送规则
* @author: zhang jing
* @date: 2024/12/2 16:17
* @param: [mcrVo]
* @return: void
**/
@Override
public void updateConsumptionGift(AcMemberConsumeRuleVo mcrVo) {
Long pkId = mcrVo.getActivityParam().getPkId();
@ -262,8 +189,8 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
AcBaseConfig baseConfig = BeanUtil.copyProperties(mcrVo.getActivityParam(), AcBaseConfig.class);
baseConfigService.updateById(baseConfig);
//删除会员消费活动赠品配置表
if(CollectionUtil.isNotEmpty(mcrVo.getMcrList())){
for(AcMemberConsumeRuleExt mcrex:mcrVo.getMcrList()){
if (CollectionUtil.isNotEmpty(mcrVo.getMcrList())) {
for (AcMemberConsumeRuleExt mcrex : mcrVo.getMcrList()) {
// 消费赠送规格配置
LambdaQueryWrapper<AcGiftConfig> delGif = new LambdaQueryWrapper<>();
delGif.eq(AcGiftConfig::getPkRuleId, mcrex.getPkId());
@ -285,11 +212,7 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
}
/**
* @description: 新增会员消费活动规则和活动赠品
* @author: zhang jing
* @date: 2024/12/2 16:43
* @param: [mcrVo, baseConfig]
* @return: void
* 新增会员消费活动规则和活动赠品
**/
public void saveConsumeRuleConfigService(AcMemberConsumeRuleVo mcrVo, AcBaseConfig baseConfig) {
List<AcMemberConsumeRuleExt> mcrList = mcrVo.getMcrList();
@ -297,36 +220,32 @@ public class AcMemberConsumeRuleServiceImpl extends ServiceImpl<AcMemberConsumeR
/**
* 新增会员消费规则配置
*/
Date date=new Date();
Date date = new Date();
mcr.setPkBaseId(baseConfig.getPkId());
mcr.setCreationTime(date);
mcr.setPkCreator(mcrVo.getLoginUser().getUserId());
mcr.setPkCountry(mcrVo.getLoginUser().getDataCountry());
baseMapper.insert(mcr);
/**
* 活动赠品配置
*/
List<AcGiftConfigExt> giftConfigExList = mcr.getWgcList();
List<AcGiftConfig> giftConfigList = new ArrayList<>();
for (AcGiftConfigExt giftConfigExt : giftConfigExList) {
giftConfigExt.setPkRuleId(mcr.getPkId());
giftConfigExt.setActType(baseConfig.getActType());
giftConfigExt.setPkCreator(baseConfig.getPkCreator());
giftConfigExt.setPkCountry(baseConfig.getPkCountry());
AcGiftConfig acGiftConfig = BeanUtil.copyProperties(giftConfigExt, AcGiftConfig.class);
giftConfigList.add(acGiftConfig);
}
waresGiftConfigService.saveBatch(giftConfigList);
/**
* 活动赠品配置
*/
List<AcGiftConfigExt> giftConfigExList = mcr.getWgcList();
List<AcGiftConfig> giftConfigList = new ArrayList<>();
for (AcGiftConfigExt giftConfigExt : giftConfigExList) {
giftConfigExt.setPkRuleId(mcr.getPkId());
giftConfigExt.setActType(baseConfig.getActType());
giftConfigExt.setPkCreator(baseConfig.getPkCreator());
giftConfigExt.setPkCountry(baseConfig.getPkCountry());
AcGiftConfig acGiftConfig = BeanUtil.copyProperties(giftConfigExt, AcGiftConfig.class);
giftConfigList.add(acGiftConfig);
}
waresGiftConfigService.saveBatch(giftConfigList);
}
}
/**
* @description: 删除会员消费活动
* @author: zhang jing
* @date: 2024/12/2 17:08
* @param: [pkId]
* @return: void
* 删除会员消费活动
**/
@Override
@Transactional(rollbackFor = Exception.class)

View File

@ -9,17 +9,11 @@ import java.util.List;
/**
* 活动赠品配置 Mapper 接口
*
* @author hzs
* @since 2023-04-21
*/
public interface AcDrawGiftRuleConfigMapper extends BaseMapper<AcDrawGiftRuleConfig> {
/*
* @description: 查询活动的赠品配置
* @author: sui q
* @date: 2023/4/21 19:53
* @param: null null
* 查询活动的赠品配置
**/
List<AcDrawGiftRuleConfigExt> queryAcDrawGiftConfig(DrawGiftConfigParam drawGiftConfigParam);

View File

@ -10,25 +10,16 @@ import java.util.List;
/**
* 会员可抽奖次数记录 Mapper 接口
*
* @author hzs
* @since 2023-04-21
*/
public interface AcDrawRewardNumMapper extends BaseMapper<AcDrawRewardNum> {
/*
* @description: 查询
* @author: sui q
* @date: 2023/4/27 15:14
* @param: null null
* 查询
**/
AcDrawRewardNumExt queryDrawRewardNumByCondition(AcDrawRewardNumParam acDrawRewardNumParam);
/*
* @description: 会员后台查询抽奖次数
* @author: sui q
* @date: 2023/6/1 10:36
* @param: null null
* 会员后台查询抽奖次数
**/
List<AcDrawRewardNumExt> queryDrawRewardExtNumByCondition(AcDrawRewardNumParam acDrawRewardNumParam);

View File

@ -12,17 +12,11 @@ import java.util.List;
/**
* 活动赠品配置 服务类
*
* @author hzs
* @since 2023-04-21
*/
public interface IAcDrawGiftRuleConfigService extends IService<AcDrawGiftRuleConfig> {
/*
* @description: 查询活动的赠品配置
* @author: sui q
* @date: 2023/4/21 19:53
* @param: null null
* 查询活动的赠品配置
**/
List<AcDrawGiftRuleConfigExt> queryAcDrawGiftConfig(DrawGiftConfigParam drawGiftConfigParam);

View File

@ -15,33 +15,21 @@ import java.util.List;
/**
* 会员可抽奖次数记录 服务类
*
* @author hzs
* @since 2023-04-21
*/
public interface IAcDrawRewardNumService extends IService<AcDrawRewardNum> {
/*
* @description: 查询会员抽奖活动,查询会员的抽奖次数
* @author: sui q
* @date: 2023/4/22 10:11
* @param: null null
* 查询会员抽奖活动,查询会员的抽奖次数
**/
AcDrawRewardNum queryAcDrawRewardNum(AcDrawRewardNumParam acDrawRewardNumParam);
/*
* @description: 会员后台查询抽奖次数
* @author: sui q
* @date: 2023/6/1 10:36
* @param: null null
* 会员后台查询抽奖次数
**/
List<AcDrawRewardNumExt> queryDrawRewardExtNumByCondition(AcDrawRewardNumParam acDrawRewardNumParam);
/*
* @description: 更新会员抽奖次数
* @author: sui q
* @date: 2023/4/22 10:43
* @param: null null
* 更新会员抽奖次数
**/
Boolean updateAcDrawRewardNum(AcDrawRewardNum acDrawRewardNum);
@ -49,65 +37,41 @@ public interface IAcDrawRewardNumService extends IService<AcDrawRewardNum> {
* 查询会员账户状态账户信息
*
* @param cuMemberAccount 会员账户条件信息
* @return: List<CuMemberAccountExt>
* @Author: sui q
* @Date: 2022/9/5 11:57
*/
List<CuMemberAccountExt> queryMemberAccountByCondition(CuMemberAccount cuMemberAccount);
/*
* @description: 查询
* @author: sui q
* @date: 2023/4/27 15:14
* @param: null null
* 查询
**/
AcDrawRewardNumExt queryDrawRewardNumByCondition(AcDrawRewardNumParam acDrawRewardNumParam);
/*
* @description: 支付抽奖次数
* @author: sui q
* @date: 2023/4/27 15:34
* @param: null null
* 支付抽奖次数
**/
void payDrawRewardNum(CuMemberAccountExt cuMemberAccountExt, Integer payNum, AcDrawRewardNumExt acDrawRewardNumExt);
/*
* @description: 在线支付确认生成待支付订单
* @author: sui q
* @date: 2023/4/27 17:54
* @param: null null
* 在线支付确认生成待支付订单
**/
String confirmDrawRewardPayNum(AcDrawRewardNumParam acDrawRewardNumParam, AcDrawRewardNumExt acDrawRewardNum);
/*
* @description: 在线支付查询待支付金额
* @author: sui q
* @date: 2023/4/27 17:57
* @param: null null
* 在线支付查询待支付金额
**/
BigDecimal queryDrawRewardPayNumMoney(Long pkMember, String orderCode);
/*
* @description: 抽奖在线支付购买次数
* @author: sui q
* @date: 2023/4/27 18:00
* @param: null null
* 抽奖在线支付购买次数
**/
Boolean callBackOnlinePay(Long pkMember, String orderCode);
/*
* @description: 赠送抽奖次数
* @author: sui q
* @date: 2023/4/28 11:27
* @param: null null
* 赠送抽奖次数
**/
Boolean giveMemberDrawNum(SaOrderExt saOrderExt);
/*
* @description: 撤单时回退抽奖次数
* @author: sui q
* @date: 2023/5/9 9:46
* @param: null null
* 撤单时回退抽奖次数
**/
Boolean backGiveMemberDrawNum(SaOrderExt saOrderExt);
@ -135,14 +99,6 @@ public interface IAcDrawRewardNumService extends IService<AcDrawRewardNum> {
*/
String approvalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 修改已购买次数 审批驳回
*
* @param approvalBusinessResultDTO
* @return
*/
String approvalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 充值未购买次数 (审批发起)
*
@ -151,17 +107,4 @@ public interface IAcDrawRewardNumService extends IService<AcDrawRewardNum> {
*/
void unpurchasedTimes(PurchasedTimesParam purchasedTimesParam);
/**
* 充值已购买次数
*
* @param approvalBusinessResultDTO
*/
void rechargePurchasedTimes(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 充值未购买次数
*
* @param approvalBusinessResultDTO
*/
void unRechargePurchasedTimes(ApprovalBusinessResultDTO approvalBusinessResultDTO);
}

View File

@ -44,9 +44,6 @@ import java.util.List;
/**
* 活动赠品配置 服务实现类
*
* @author hzs
* @since 2023-04-21
*/
@Service
@Slf4j
@ -186,7 +183,7 @@ public class AcDrawGiftRuleConfigServiceImpl extends ServiceImpl<AcDrawGiftRuleC
@Override
@Transactional(rollbackFor = Exception.class)
public String onLinePetition(AcRecommendParam recommendParam) {
log.info("抽奖配置入参{}",JSONUtil.toJsonStr(recommendParam));
log.info("抽奖配置入参{}", JSONUtil.toJsonStr(recommendParam));
EApprovalBusiness approvalBusiness = null;
if (recommendParam.getControlType().equals(EControlType.SAVE.getValue())) {
approvalBusiness = EApprovalBusiness.LOTTERY_DRAW_ADD;
@ -222,51 +219,6 @@ public class AcDrawGiftRuleConfigServiceImpl extends ServiceImpl<AcDrawGiftRuleC
return null;
}
/**
* 提交审批
*
* @param recommendParam 抽奖参数
*/
public Boolean submitApproval(AcRecommendParam recommendParam, EApprovalBusiness approvalBusiness) {
//保存审批日志
AcApprovalLog approvalLog = saveApprovalLog(recommendParam, approvalBusiness);
ApprovalSubmitDTO approvalSubmitDTO = ApprovalSubmitDTO.builder().eApprovalBusiness(approvalBusiness)
.businessCode(approvalLog.getBusinessCode())
.businessData(JSONObject.toJSONString(recommendParam)).fileList(recommendParam.getFileList())
.signType(ESignType.getEnumByValue(recommendParam.getSignType())).userIdList(recommendParam.getUserIdList())
.sendIdList(recommendParam.getSendIdList()).remark(recommendParam.getRemark()).build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, recommendParam.getLoginUser());
if (!submit.isSuccess()) {
throw new RuntimeException("抽奖参数提交审批失败!");
}
//添加操作日志
StringBuffer str = new StringBuffer();
Integer value = null;
if (recommendParam.getControlType() == EControlType.SAVE.getValue()) {
str.append(EControlType.SAVE.getLabel());
value = EApprovalBusiness.LOTTERY_DRAW_ADD.getValue();
}
if (recommendParam.getControlType() == EControlType.MODIFY.getValue()) {
str.append(EControlType.MODIFY.getLabel());
value = EApprovalBusiness.LOTTERY_DRAW_UPDATE.getValue();
}
if (recommendParam.getControlType() == EControlType.DELETE.getValue()) {
AcBaseConfig baseConfig = BeanUtil.copyProperties(recommendParam.getActivityParam(), AcBaseConfig.class);
baseConfig.setPkCreator(approvalLog.getPkCreator());
baseConfig.setPkCountry(recommendParam.getPkCountry());
baseConfig.setBusinessCode(approvalLog.getBusinessCode());
iActivityService.removeBaseConfigLog(baseConfig, str, null, EApprovalBusiness.LOTTERY_DRAW_REMOVE.getValue(), false);
} else {
ActivityParam activityParam = BeanUtil.copyProperties(recommendParam.getActivityParam(), ActivityParam.class);
activityParam.setPkCreator(approvalLog.getPkCreator());
activityParam.setPkCountry(recommendParam.getPkCountry());
activityParam.setBusinessCode(approvalLog.getBusinessCode());
iActivityService.createBaseConfigLog(activityParam, str, null, value, false);
}
return submit.isSuccess();
}
/**
* 保存活动审批日志信息
*

View File

@ -51,9 +51,6 @@ import java.util.concurrent.TimeUnit;
/**
* 会员可抽奖次数记录 服务实现类
*
* @author hzs
* @since 2023-04-21
*/
@Service
@Slf4j
@ -241,7 +238,7 @@ public class AcDrawRewardNumServiceImpl extends ServiceImpl<AcDrawRewardNumMappe
@Override
@Transactional(rollbackFor = Exception.class)
public void purchasedTimes(PurchasedTimesParam purchasedTimesParam) {
log.info("修改已购买次数入参{}",JSONUtil.toJsonStr(purchasedTimesParam));
log.info("修改已购买次数入参{}", JSONUtil.toJsonStr(purchasedTimesParam));
String memberCode = purchasedTimesParam.getMemberCode();
Integer num = purchasedTimesParam.getNum();
Long pkBaseId = purchasedTimesParam.getPkBaseId();
@ -359,27 +356,6 @@ public class AcDrawRewardNumServiceImpl extends ServiceImpl<AcDrawRewardNumMappe
return null;
}
/**
* 修改已购买次数 审批驳回
*
* @param approvalBusinessResultDTO
* @return
*/
@Override
public String approvalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
R<CuMemberServiceLog> cuMemberServiceLogR = memberServiceLogServiceApi.selectByBusinessNo(approvalBusinessResultDTO.getBusinessCode());
if (null == cuMemberServiceLogR) {
log.error("修改已购买次数失败: 签呈不存在!");
return TransactionUtils.getContent(CommonMsgConstants.APPROVAL_NOT_EXIST);
}
// 更新 日志
CuMemberServiceLog memberServiceLog = cuMemberServiceLogR.getData();
memberServiceLog.setApproveStatus(EApproveStatus.REJECTED.getValue());
memberServiceLogServiceApi.updateByBusinessNo(memberServiceLog);
return null;
}
/**
* 修改未购买次数 (审批发起)
*
@ -388,7 +364,7 @@ public class AcDrawRewardNumServiceImpl extends ServiceImpl<AcDrawRewardNumMappe
*/
@Override
public void unpurchasedTimes(PurchasedTimesParam purchasedTimesParam) {
log.info("修改未购买次数入参{}",JSONUtil.toJsonStr(purchasedTimesParam));
log.info("修改未购买次数入参{}", JSONUtil.toJsonStr(purchasedTimesParam));
String memberCode = purchasedTimesParam.getMemberCode();
Integer num = purchasedTimesParam.getNum();
Long pkBaseId = purchasedTimesParam.getPkBaseId();
@ -414,76 +390,6 @@ public class AcDrawRewardNumServiceImpl extends ServiceImpl<AcDrawRewardNumMappe
}
}
/**
* 充值已购买次数
*
* @param approvalBusinessResultDTO
*/
@Override
public void rechargePurchasedTimes(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
String businessData = approvalBusinessResultDTO.getBusinessData();
JSONObject js = JSONObject.parseObject(businessData);
String memberCode = js.getString("memberCode");
Integer num = js.getInteger("num");
Long pkBaseId = js.getLong("pkBaseId");
R<CuMember> memberDto = memberServiceApi.getMember(memberCode);
Long pkMember = memberDto.getData().getPkId();
LambdaQueryWrapper<AcDrawRewardNum> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcDrawRewardNum::getPkBaseId, pkBaseId);
queryWrapper.eq(AcDrawRewardNum::getPkMember, pkMember);
AcDrawRewardNum drawRewardNum = this.getOne(queryWrapper);
if (drawRewardNum != null) {
baseMapper.updatePurchasedTimesByBaseId(pkMember, num, pkBaseId);
} else {
drawRewardNum = new AcDrawRewardNum();
drawRewardNum.setPkBaseId(pkBaseId);
drawRewardNum.setPkMember(pkMember);
drawRewardNum.setTotalUsedNum(num);
drawRewardNum.setAvailableNum(num);
drawRewardNum.setTotalNum(num);
drawRewardNum.setAvailableSurplusNum(num);
drawRewardNum.setCreationTime(DateUtils.currentDateTime());
drawRewardNum.setPkCreator(memberDto.getData().getPkCreator());
drawRewardNum.setPkCountry(memberDto.getData().getPkCountry());
this.save(drawRewardNum);
}
}
/**
* 充值未购买次数
*
* @param approvalBusinessResultDTO
*/
@Override
public void unRechargePurchasedTimes(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
String businessData = approvalBusinessResultDTO.getBusinessData();
JSONObject js = JSONObject.parseObject(businessData);
String memberCode = js.getString("memberCode");
Integer num = js.getInteger("num");
Long pkBaseId = js.getLong("pkBaseId");
R<CuMember> memberDto = memberServiceApi.getMember(memberCode);
Long pkMember = memberDto.getData().getPkId();
LambdaQueryWrapper<AcDrawRewardNum> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcDrawRewardNum::getPkBaseId, pkBaseId);
queryWrapper.eq(AcDrawRewardNum::getPkMember, pkMember);
AcDrawRewardNum drawRewardNum = this.getOne(queryWrapper);
if (drawRewardNum != null) {
baseMapper.updateUnpurchasedTimesByPkbaseId(pkMember, num, pkBaseId);
} else {
drawRewardNum = new AcDrawRewardNum();
drawRewardNum.setPkBaseId(pkBaseId);
drawRewardNum.setPkMember(pkMember);
drawRewardNum.setTotalNum(num);
drawRewardNum.setTotalSurplusNum(num);
drawRewardNum.setCreationTime(DateUtils.currentDateTime());
drawRewardNum.setPkCreator(memberDto.getData().getPkCreator());
drawRewardNum.setPkCountry(memberDto.getData().getPkCountry());
this.save(drawRewardNum);
}
}
/**
* 修改已购买总次数 已购买次数
*

View File

@ -44,11 +44,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @Description: 会员端提货处理控制器
* @Author: jiang chao
* @Time: 2023/4/24 13:55
* @Classname: ApiPickController
* @PackageName: com.hzs.activity.pick.controller.api
* 会员端提货处理控制器
*/
@RequestMapping("/api/pick")
@RestController

View File

@ -95,11 +95,7 @@ public interface AcPickMapper extends BaseMapper<AcPick> {
int updatePickByPkId(@Param("acPick") AcPick acPick);
/**
* @description: 删除充值提货卡
* @author: zhang jing
* @date: 2023/10/26 13:45
* @param: [acPick]
* @return: boolean
* 删除充值提货卡
**/
boolean removePickByPkId(@Param("acPick") AcPick acPick);

View File

@ -7,7 +7,6 @@ import com.hzs.activity.pick.vo.ApiPickListVO;
import com.hzs.common.domain.activity.pick.AcPick;
import com.hzs.common.domain.activity.pick.AcPickMemberLog;
import com.hzs.common.domain.activity.pick.ext.AcPickExt;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.LoginUser;
import java.math.BigDecimal;
@ -92,27 +91,6 @@ public interface IAcPickService extends IService<AcPick> {
**/
boolean delPick(AcPickSaveParam anpParam);
/**
* 提货变动审批通过
*
* @param resultDTO
* @return
*/
String pickApprovalAgree(ApprovalBusinessResultDTO resultDTO);
/**
* @description: 审核删除充值提货卡
**/
String delpickApprovalAgree(ApprovalBusinessResultDTO resultDTO);
/**
* 提货变动审批驳回
*
* @param resultDTO
* @return
*/
String pickApprovalReject(ApprovalBusinessResultDTO resultDTO);
/**
* 会员提货列表
*

View File

@ -1,7 +1,6 @@
package com.hzs.activity.pick.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.hzs.activity.base.service.IAcApprovalLogService;
@ -15,14 +14,12 @@ import com.hzs.activity.pick.vo.ApiPickListVO;
import com.hzs.activity.wares.service.IAcGiftConfigService;
import com.hzs.common.core.constant.RabbitMqConstants;
import com.hzs.common.core.constant.SystemFieldConstants;
import com.hzs.common.core.constant.msg.ActivityMsgConstants;
import com.hzs.common.core.constant.msg.DocumentMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.activity.base.AcApprovalLog;
import com.hzs.common.domain.activity.base.AcPickUpConfig;
import com.hzs.common.domain.activity.base.ext.AcGiftConfigExt;
import com.hzs.common.domain.activity.pick.AcPick;
@ -36,7 +33,6 @@ import com.hzs.member.base.IMemberServiceApi;
import com.hzs.sale.postage.IPostageServiceApi;
import com.hzs.sale.postage.dto.PostageProductDTO;
import com.hzs.sale.product.service.IBdProductService;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.BusinessLogDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.extern.slf4j.Slf4j;
@ -57,8 +53,6 @@ import java.util.stream.Collectors;
@Service
public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> implements IAcPickService {
@Autowired
private IAcApprovalLogService iAcApprovalLogService;
@Autowired
private IAcPickLogService iAcPickLogService;
@Autowired
@ -189,7 +183,7 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
// approvalLogList.add(acApprovalLog);
// 会员信息
CuMember cuMember = iMemberServiceApi.queryMember(detailParam.getMemberCode()).getData();
CuMember cuMember = iMemberServiceApi.getMember(detailParam.getMemberCode()).getData();
// 提货ID
Long pickId = null;
// 提货类型
@ -363,7 +357,7 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
// approvalLogList.add(acApprovalLog);
// 被操作会员
CuMember cuMember = iMemberServiceApi.queryMember(detailParam.getMemberCode()).getData();
CuMember cuMember = iMemberServiceApi.getMember(detailParam.getMemberCode()).getData();
// 提货ID
Long pickId = null;
if (null == detailParam.getPkId()) {
@ -474,227 +468,6 @@ public class AcPickServiceImpl extends ServiceImpl<AcPickMapper, AcPick> impleme
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public String pickApprovalAgree(ApprovalBusinessResultDTO resultDTO) {
// 用户ID
Long userId = resultDTO.getLoginUser().getUserId();
// 所属国家
Integer pkCountry = resultDTO.getLoginUser().getDataCountry();
List<AcApprovalLog> approvalLogList = iAcApprovalLogService.queryApprovalLogList(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry);
// 一批审批可能有多个
AcApprovalLog approvalLog = approvalLogList.get(0);
if (null == approvalLog) {
log.error("提货充值同意处理失败: 签呈不存在!");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_NOT_EXIST);
}
if (EAgentApprovalStatus.UNAPPROVED.getValue() != approvalLog.getApprovalStatus()) {
log.error("提货充值同意处理失败: 签呈已处理");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_PROCESSED);
}
// 新増提货列表
List<AcPick> createList = new ArrayList<>();
// 修改提货列表
List<AcPick> updateList = new ArrayList<>();
for (AcApprovalLog acApprovalLog : approvalLogList) {
// 存在业务ID则为修改
AcPickSaveDetailParam detailParam = JSONUtil.toBean(acApprovalLog.getAfterData(), AcPickSaveDetailParam.class);
// 当前会员
CuMember cuMember = iMemberServiceApi.getMember(detailParam.getMemberCode()).getData();
// 提货ID
Long pickId = null;
// 提货类型
Integer pickType = null != detailParam.getPickType() ? detailParam.getPickType() : EPickType.PICK_PRODUCT.getValue();
if (null == detailParam.getPkId()) {
LambdaQueryWrapper<AcPick> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcPick::getPickType, pickType);
queryWrapper.eq(AcPick::getPkBaseConfig, 0);
queryWrapper.eq(AcPick::getPkDataId, detailParam.getPkProduct());
queryWrapper.eq(AcPick::getSpecsNameId, detailParam.getSpecsNameId());
queryWrapper.eq(AcPick::getPkMember, cuMember.getPkId());
AcPick acPick = this.getOne(queryWrapper);
if (null != acPick) {
pickId = acPick.getPkId();
}
} else {
pickId = detailParam.getPkId();
}
AcPick acPick = new AcPick();
if (null == pickId) {
// 新增提货数据
acPick.setPkMember(cuMember.getPkId());
acPick.setPickType(pickType);
acPick.setPkDataId(detailParam.getPkProduct().longValue());
acPick.setSpecsName(detailParam.getSpecsName());
acPick.setSpecsNameId(detailParam.getSpecsNameId());
acPick.setUsableQuantity(detailParam.getQuantity());
acPick.setBaseQuantity(detailParam.getBaseQuantity());
acPick.setReceiveTime(detailParam.getReceiveTime());
acPick.setIsFreeMail(detailParam.getIsFreeMail());
acPick.setPkPostage(detailParam.getPkPostage());
acPick.setPkCreator(userId);
acPick.setPkCountry(pkCountry);
createList.add(acPick);
} else {
// 修改提货数据
acPick.setPkId(pickId);
acPick.setUsableQuantity(detailParam.getQuantity());
acPick.setBaseQuantity(detailParam.getBaseQuantity());
acPick.setReceiveTime(detailParam.getReceiveTime());
acPick.setIsFreeMail(detailParam.getIsFreeMail());
acPick.setPkPostage(detailParam.getPkPostage());
acPick.setPkModified(userId);
acPick.setModifiedTime(new Date());
updateList.add(acPick);
}
}
if (iAcApprovalLogService.updateApprovalLog(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry, userId, EApproveRechargeStatus.AGREE, resultDTO.getApproveRemark())) {
// 更新修改记录
// 提货操作日志
List<AcPickLog> logList = new ArrayList<>();
// 插入提货数据
if (CollectionUtil.isNotEmpty(createList)) {
for (AcPick acPick : createList) {
this.baseMapper.insert(acPick);
AcPickLog acPickLog = new AcPickLog();
acPickLog.setPkPick(acPick.getPkId());
acPickLog.setQuantity(acPick.getUsableQuantity());
acPickLog.setPkUser(userId);
acPickLog.setPkCountry(pkCountry);
logList.add(acPickLog);
}
}
// 更新提货数据
if (CollectionUtil.isNotEmpty(updateList)) {
for (AcPick acPick : updateList) {
this.baseMapper.updatePickByPkId(acPick);
AcPickLog acPickLog = new AcPickLog();
acPickLog.setPkPick(acPick.getPkId());
acPickLog.setQuantity(acPick.getUsableQuantity());
acPickLog.setPkUser(userId);
acPickLog.setPkCountry(pkCountry);
logList.add(acPickLog);
}
}
// 插入提货操作日志
iAcPickLogService.insertBatch(logList);
return null;
}
log.error("提货充值同意处理失败: 更新数据失败");
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_ERROR);
}
@Transactional(rollbackFor = Exception.class)
@Override
public String delpickApprovalAgree(ApprovalBusinessResultDTO resultDTO) {
// 用户ID
Long userId = resultDTO.getLoginUser().getUserId();
// 所属国家
Integer pkCountry = resultDTO.getLoginUser().getDataCountry();
List<AcApprovalLog> approvalLogList = iAcApprovalLogService.queryApprovalLogList(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry);
// 一批审批可能有多个
AcApprovalLog approvalLog = approvalLogList.get(0);
if (null == approvalLog) {
log.error("提货充值同意处理失败: 签呈不存在!");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_NOT_EXIST);
}
if (EAgentApprovalStatus.UNAPPROVED.getValue() != approvalLog.getApprovalStatus()) {
log.error("提货充值同意处理失败: 签呈已处理");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_PROCESSED);
}
// 删除提货列表
List<AcPick> updateList = new ArrayList<>();
for (AcApprovalLog acApprovalLog : approvalLogList) {
// 存在业务ID则为修改
AcPickSaveDetailParam detailParam = JSONUtil.toBean(acApprovalLog.getAfterData(), AcPickSaveDetailParam.class);
// 当前会员
CuMember cuMember = iMemberServiceApi.getMember(detailParam.getMemberCode()).getData();
// 提货ID
Long pickId = null;
if (null == detailParam.getPkId()) {
LambdaQueryWrapper<AcPick> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AcPick::getPickType, EPickType.PICK_PRODUCT.getValue());
queryWrapper.eq(AcPick::getPkBaseConfig, 0);
queryWrapper.eq(AcPick::getPkDataId, detailParam.getPkProduct());
queryWrapper.eq(AcPick::getPkMember, cuMember.getPkId());
AcPick acPick = this.getOne(queryWrapper);
if (null != acPick) {
pickId = acPick.getPkId();
}
} else {
pickId = detailParam.getPkId();
}
AcPick acPick = new AcPick();
if (null != pickId) {
// 删除提货数据
acPick.setPkId(pickId);
acPick.setPkModified(userId);
acPick.setModifiedTime(new Date());
updateList.add(acPick);
} else {
log.error("提货充值同意处理失败: 更新数据失败");
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_ERROR);
}
}
if (iAcApprovalLogService.updateApprovalLog(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry, userId, EApproveRechargeStatus.AGREE, resultDTO.getApproveRemark())) {
// 更新修改记录
// 更新提货数据
if (CollectionUtil.isNotEmpty(updateList)) {
for (AcPick acPick : updateList) {
this.baseMapper.removePickByPkId(acPick);
}
}
return null;
}
log.error("提货充值同意处理失败: 更新数据失败");
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_ERROR);
}
@Override
public String pickApprovalReject(ApprovalBusinessResultDTO resultDTO) {
// 用户ID
Long userId = resultDTO.getLoginUser().getUserId();
// 所属国家
Integer pkCountry = resultDTO.getLoginUser().getDataCountry();
List<AcApprovalLog> approvalLogList = iAcApprovalLogService.queryApprovalLogList(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry);
// 一批审批可能有多个
AcApprovalLog approvalLog = approvalLogList.get(0);
if (null == approvalLog) {
log.error("提货充值驳回处理失败: 签呈不存在!");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_NOT_EXIST);
}
if (EAgentApprovalStatus.UNAPPROVED.getValue() != approvalLog.getApprovalStatus()) {
log.error("提货充值驳回处理失败: 签呈已处理");
return TransactionUtils.getContent(ActivityMsgConstants.PICK_PROCESSED);
}
if (iAcApprovalLogService.updateApprovalLog(resultDTO.getEApprovalBusiness(), resultDTO.getBusinessCode(), pkCountry, userId, EApproveRechargeStatus.REJECT, resultDTO.getApproveRemark())) {
return null;
}
log.error("提货充值驳回处理失败: 更新数据失败");
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_ERROR);
}
@Override
public List<ApiPickListVO> pickList(Long pkMember, Integer pkCountry) {
return baseMapper.pickList(pkMember, pkCountry);

View File

@ -3,8 +3,12 @@ package com.hzs.activity.recommend.controller;
import com.hzs.activity.base.param.QueryActivityParam;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.activity.base.vo.BaseConfigVo;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeListParam;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeParam;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.service.IAcRecomUpgradeRecordService;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO;
import com.hzs.activity.recommend.vo.AcRecommendVO;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.enums.EActType;
@ -14,6 +18,7 @@ import com.hzs.common.core.enums.EOperationModule;
import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.security.service.UserTokenService;
import com.hzs.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -35,6 +40,8 @@ public class AcRecommendConfigController extends BaseController {
IAcRepurCouponsRuleConfigService acRepurCouponsRuleConfigService;
@Autowired
private UserTokenService userTokenService;
@Autowired
private IAcRecomUpgradeRecordService iAcRecomUpgradeRecordService;
/**
@ -56,6 +63,44 @@ public class AcRecommendConfigController extends BaseController {
return AjaxResult.success();
}
/**
*
* @param acDirectPushUpgradeParam
* @return
*/
@Log(module = EOperationModule.AC_DIRECT_PUSH_UPGRADE, business = EOperationBusiness.AC_DIRECT_PUSH_UPGRADE, method = EOperationMethod.INSERT)
@PostMapping("/directPushUpgrade")
public AjaxResult directPushUpgradeSubmit(@RequestBody AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
acDirectPushUpgradeParam.setPkCountry(SecurityUtils.getPkCountry());
acDirectPushUpgradeParam.setPkMember(SecurityUtils.getUserId());
acDirectPushUpgradeParam.setLoginUser(userTokenService.getLoginUser());
String str = acRepurCouponsRuleConfigService.directPushUpgradeSubmit(acDirectPushUpgradeParam);
if (str != null) {
return AjaxResult.error(str);
}
return AjaxResult.success();
}
/**
*
* @param param
* @return
*/
@Log(module = EOperationModule.AC_DIRECT_PUSH_UPGRADE_LIST, business = EOperationBusiness.AC_DIRECT_PUSH_UPGRADE_LIST, method = EOperationMethod.SELECT)
@GetMapping("/directPushUpgradeList")
public TableDataInfo directPushUpgradeList(AcDirectPushUpgradeListParam param) {
startPage();
return getDataTable(iAcRecomUpgradeRecordService.queryList(param));
}
@Log(module = EOperationModule.AC_DIRECT_PUSH_UPGRADE_LIST, business = EOperationBusiness.AC_DIRECT_PUSH_UPGRADE_LIST, method = EOperationMethod.SELECT)
@PostMapping("/directPushUpgradeExport")
public void export(AcDirectPushUpgradeListParam param, HttpServletResponse response) {
startPage();
List<AcDirectPushUpgradeListVO> list = iAcRecomUpgradeRecordService.queryList(param);
ExcelUtil<AcDirectPushUpgradeListVO> util = new ExcelUtil<>(AcDirectPushUpgradeListVO.class);
util.exportExcel(response, list, "直推升级数据导出");
}
/**
* 直推赠送查看详情

View File

@ -1,39 +0,0 @@
package com.hzs.activity.recommend.dto;
import com.hzs.common.core.enums.EOrderOperateStatus;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 直推-升级DTO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/26 10:27
* @Classname: AcRepurchaseCouponsDTO
* @Package_name: com.hzs.activity.recommend.dto
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AcRecommendUpgrade implements Serializable {
private static final long serialVersionUID = 9005728656479475728L;
/**
* 订单信息
*/
private SaOrderExt saOrderExt;
/**
* 订单操作状态
*/
private EOrderOperateStatus orderOperateStatus;
}

View File

@ -1,16 +1,18 @@
package com.hzs.activity.recommend.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeListParam;
import com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecord;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecordExt;
import com.hzs.common.domain.sale.order.SaOrder;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 推荐升级业务表 Mapper 接口
*
* @author hzs
* @since 2023-04-27
*/
public interface AcRecomUpgradeRecordMapper extends BaseMapper<AcRecomUpgradeRecord> {
@ -30,4 +32,14 @@ public interface AcRecomUpgradeRecordMapper extends BaseMapper<AcRecomUpgradeRec
*/
List<Long> selectRecommendNumber(AcRecomUpgradeRecordExt upgradeRecord);
/**
* 判断会员是否达标并且查询对应订单
*/
List<SaOrder> listRecomOrder(@Param("pkMember") Long pkMember,
@Param("pkGrade") Integer pkGrade,
@Param("num") Integer num,
@Param("startTime") Date startTime,
@Param("endTime") Date endTime);
List<AcDirectPushUpgradeListVO> queryList(AcDirectPushUpgradeListParam param);
}

View File

@ -8,18 +8,12 @@ import java.util.List;
/**
* 直推-推荐升级 Mapper 接口
*
* @author hzs
* @since 2023-04-22
*/
public interface AcRecomUpgradeRuleConfigMapper extends BaseMapper<AcRecomUpgradeRuleConfig> {
/**
* 查询配置规则
*
* @param recommendUpgradeVO 推荐升级参数
* @return List<AcRecomUpgradeRuleConfig>
*/
List<AcRecomUpgradeRuleConfig> selectRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO);
List<AcRecomUpgradeRuleConfig> listRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO);
}

View File

@ -10,9 +10,6 @@ import java.util.List;
/**
* 复购均分配置 Mapper 接口
*
* @author hzs
* @since 2023-05-04
*/
public interface AcRepurSharRuleConfigMapper extends BaseMapper<AcRepurSharRuleConfig> {
@ -27,12 +24,4 @@ public interface AcRepurSharRuleConfigMapper extends BaseMapper<AcRepurSharRuleC
Integer deleteSharRuleConfigByActivityId(@Param("orderTypeList") List<Integer> orderTypeList,
@Param("activityId") Long activityId, @Param("pkModifyId") Long pkModifyId);
/*
* @description: 查询复购券均分收益
* @author: sui q
* @date: 2023/5/5 16:29
* @param: null null
**/
List<AcRepurSharRuleConfigExt> queryRepurSharRuleConfig(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
}

View File

@ -0,0 +1,44 @@
package com.hzs.activity.recommend.param;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcDirectPushUpgradeListParam {
/**
* 活动名称
*/
private String actName;
/**
* 会员编号
*/
private String memberCode;
/**
* 开始活动开始时间
*/
private Date startActStartDate;
/**
* 开始活动结束时间
*/
private Date startActEndDate;
/**
* 结束活动开始时间
*/
private Date endActStartDate;
/**
* 结束活动结束时间
*/
private Date endActEndDate;
}

View File

@ -0,0 +1,55 @@
package com.hzs.activity.recommend.param;
import com.hzs.activity.base.param.ActivityParam;
import com.hzs.activity.recommend.vo.AcRecommendSharVO;
import com.hzs.activity.recommend.vo.AcRecommendUpgradeVO;
import com.hzs.activity.recommend.vo.AcRepurchaseCouponsShowVO;
import com.hzs.common.domain.activity.base.AcBaseAuthority;
import com.hzs.system.sys.dto.LoginUser;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcDirectPushUpgradeParam {
/**
* 活动基本配置主键
*/
private Long pkBaseId;
/**
* 操作类型1=新增,2=修改,3=删除
*/
private Integer controlType;
/**
* 国家
*/
private Integer pkCountry;
/**
* 会员ID
*/
private Long pkMember;
/**
* 登录用户信息
*/
private LoginUser loginUser;
/**
* 基本信息
*/
private ActivityParam activityParam;
/**
* 直推升级
*/
private List<AcRecommendUpgradeVO> recommendUpgradeList;
}

View File

@ -17,12 +17,6 @@ import java.util.List;
/**
* 直推赠送参数
*
* @Description:
* @Author: ljc
* @Time: 2023/4/24 11:14
* @Classname: AcRecommendParam
* @Package_name: com.hzs.activity.recommend.param
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -1,16 +1,18 @@
package com.hzs.activity.recommend.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeListParam;
import com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecord;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecordExt;
import com.hzs.common.domain.sale.order.SaOrder;
import java.util.Date;
import java.util.List;
/**
* 推荐升级业务表 服务类
*
* @author hzs
* @since 2023-04-27
*/
public interface IAcRecomUpgradeRecordService extends IService<AcRecomUpgradeRecord> {
@ -31,7 +33,6 @@ public interface IAcRecomUpgradeRecordService extends IService<AcRecomUpgradeRec
*/
AcRecomUpgradeRecord selectUpgradeRecordByOrderId(AcRecomUpgradeRecordExt upgradeRecord);
/**
* 查询推荐的人数
*
@ -49,4 +50,10 @@ public interface IAcRecomUpgradeRecordService extends IService<AcRecomUpgradeRec
*/
Boolean updateUpgradeStatusById(List<Long> pkIds, Long pkModified, Integer upGradeStatus);
/**
* 判断会员是否达标并且查询对应订单
*/
List<SaOrder> listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime);
List<AcDirectPushUpgradeListVO> queryList(AcDirectPushUpgradeListParam param);
}

View File

@ -8,11 +8,9 @@ import java.util.List;
/**
* 直推-推荐升级 服务类
*
* @author hzs
* @since 2023-04-22
*/
public interface IAcRecomUpgradeRuleConfigService extends IService<AcRecomUpgradeRuleConfig> {
/**
* 根据活动ID查询直推升级
*
@ -23,11 +21,8 @@ public interface IAcRecomUpgradeRuleConfigService extends IService<AcRecomUpgrad
/**
* 查询配置规则
*
* @param recommendUpgradeVO 推荐升级参数
* @return List<AcRecomUpgradeRuleConfig>
*/
List<AcRecomUpgradeRuleConfig> selectRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO);
List<AcRecomUpgradeRuleConfig> listRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO);
/**
* 根据活动配置主键删除推荐升级配置

View File

@ -1,7 +1,8 @@
package com.hzs.activity.recommend.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeParam;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.vo.AcRecommendVO;
import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig;
@ -53,18 +54,12 @@ public interface IAcRepurCouponsRuleConfigService extends IService<AcRepurCoupon
*/
String approvalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* @param approvalBusinessResultDTO 业务审批操作DTO
* @return String
*/
String approvalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 调用直推升级对外提供接口
*
* @param acRepurchaseCouponsDTO 直推升级信息
* @param acRecommendUpgrade 直推升级信息
*/
Boolean invokeRecommendUpgrade(AcRecommendUpgrade acRepurchaseCouponsDTO);
Boolean invokeRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade);
/**
* 查询目前所有启用的复购券规则
@ -80,5 +75,6 @@ public interface IAcRepurCouponsRuleConfigService extends IService<AcRepurCoupon
*/
Boolean deleteCouponsRuleConfigByBaseId(Long pkBaseId, Long pkModifyId);
String directPushUpgradeSubmit(AcDirectPushUpgradeParam acDirectPushUpgradeParam);
}

View File

@ -2,16 +2,9 @@ package com.hzs.activity.recommend.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.activity.recommend.AcRepurSharRuleConfig;
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
import java.util.Date;
import java.util.List;
/**
* 复购均分配置 服务类
*
* @author hzs
* @since 2023-05-04
*/
public interface IAcRepurSharRuleConfigService extends IService<AcRepurSharRuleConfig> {
@ -33,12 +26,4 @@ public interface IAcRepurSharRuleConfigService extends IService<AcRepurSharRuleC
*/
Boolean deleteSharRuleConfigByActivityId(Long activityId, Long pkModifyId);
/*
* @description: 查询复购券均分收益
* @author: sui q
* @date: 2023/5/5 16:29
* @param: null null
**/
List<AcRepurSharRuleConfigExt> queryRepurSharRuleConfig(Date startDate, Date endDate);
}

View File

@ -1,22 +1,27 @@
package com.hzs.activity.recommend.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.recommend.mapper.AcRecomUpgradeRecordMapper;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeListParam;
import com.hzs.activity.recommend.service.IAcRecomUpgradeRecordService;
import com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO;
import com.hzs.common.core.enums.EDelFlag;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.utils.bean.BeanUtils;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecord;
import com.hzs.common.domain.activity.recommend.AcRecomUpgradeRecordExt;
import com.hzs.common.domain.sale.order.SaOrder;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 推荐升级业务表 服务实现类
*
* @author hzs
* @since 2023-04-27
*/
@Service
public class AcRecomUpgradeRecordServiceImpl extends ServiceImpl<AcRecomUpgradeRecordMapper, AcRecomUpgradeRecord> implements IAcRecomUpgradeRecordService {
@ -50,4 +55,14 @@ public class AcRecomUpgradeRecordServiceImpl extends ServiceImpl<AcRecomUpgradeR
return this.update(updateWrapper);
}
@Override
public List<SaOrder> listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime) {
return baseMapper.listRecomOrder(pkMember, pkGrade, num, startTime, endTime);
}
@Override
public List<AcDirectPushUpgradeListVO> queryList(AcDirectPushUpgradeListParam param) {
return baseMapper.queryList(param);
}
}

View File

@ -15,9 +15,6 @@ import java.util.List;
/**
* 直推-推荐升级 服务实现类
*
* @author hzs
* @since 2023-04-22
*/
@Service
public class AcRecomUpgradeRuleConfigServiceImpl extends ServiceImpl<AcRecomUpgradeRuleConfigMapper, AcRecomUpgradeRuleConfig> implements IAcRecomUpgradeRuleConfigService {
@ -30,8 +27,8 @@ public class AcRecomUpgradeRuleConfigServiceImpl extends ServiceImpl<AcRecomUpgr
}
@Override
public List<AcRecomUpgradeRuleConfig> selectRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO) {
return baseMapper.selectRuleConfig(recommendUpgradeVO);
public List<AcRecomUpgradeRuleConfig> listRuleConfig(AcRecommendUpgradeVO recommendUpgradeVO) {
return baseMapper.listRuleConfig(recommendUpgradeVO);
}
@Override

View File

@ -12,10 +12,10 @@ import com.hzs.activity.base.param.ActivityParam;
import com.hzs.activity.base.service.*;
import com.hzs.activity.base.vo.AcGiftConfigVO;
import com.hzs.activity.base.vo.BaseConfigVo;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.people.vo.AcBaseConfigVO;
import com.hzs.activity.pick.service.IAcPickService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.mapper.AcRepurCouponsRuleConfigMapper;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeParam;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.service.*;
import com.hzs.activity.recommend.vo.*;
@ -24,6 +24,7 @@ import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.constant.RabbitMqConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils;
@ -36,9 +37,7 @@ import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.service.ITransactionCommonService;
import com.hzs.member.base.IMemberServiceApi;
import com.hzs.sale.product.IProductServiceApi;
import com.hzs.system.sys.IApprovalServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
import com.hzs.system.sys.dto.BusinessLogDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.extern.slf4j.Slf4j;
@ -59,34 +58,31 @@ import java.util.stream.Collectors;
public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCouponsRuleConfigMapper, AcRepurCouponsRuleConfig> implements IAcRepurCouponsRuleConfigService {
@Autowired
IActivityService iActivityService;
private IActivityService iActivityService;
@Autowired
IAcRecomUpgradeRuleConfigService recomUpgradeRuleConfigService;
private IAcBaseConfigService iAcBaseConfigService;
@Autowired
IAcGiftConfigService giftConfigService;
private IAcRecomUpgradeRuleConfigService iAcRecomUpgradeRuleConfigService;
@Autowired
IAcBaseConfigService baseConfigService;
private IAcRecomUpgradeRecordService iAcRecomUpgradeRecordService;
@Autowired
IAcApprovalLogService acApprovalLogService;
private IAcGiftConfigService giftConfigService;
@Autowired
IAcRecomUpgradeRecordService acRecomUpgradeRecordService;
private IAcApprovalLogService acApprovalLogService;
@Autowired
IAcPickService acPickService;
private IAcGoalMemberConfigService acGoalMemberConfigService;
@Autowired
IAcGoalMemberConfigService acGoalMemberConfigService;
private IAcRepurSharOrderTypeService acRepurSharOrderTypeService;
@Autowired
IAcRepurSharOrderTypeService acRepurSharOrderTypeService;
private IAcRepurSharRuleConfigService acRepurSharRuleConfigService;
@Autowired
IAcRepurSharRuleConfigService acRepurSharRuleConfigService;
@Autowired
IAcBaseAuthorityService iAcBaseAuthorityService;
private IAcBaseAuthorityService iAcBaseAuthorityService;
@DubboReference
IApprovalServiceApi approvalServiceApi;
IMemberServiceApi iMemberServiceApi;
@DubboReference
IMemberServiceApi memberServiceApi;
@DubboReference
IProductServiceApi productServiceApi;
IProductServiceApi iProductServiceApi;
@Autowired
private RabbitTemplate rabbitTemplate;
@ -97,7 +93,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
@Override
@Transactional(rollbackFor = Exception.class)
public String onLinePetition(AcRecommendParam recommendParam) {
log.info("直推参数{}",JSONUtil.toJsonStr(recommendParam));
log.info("直推参数{}", JSONUtil.toJsonStr(recommendParam));
EApprovalBusiness approvalBusiness = EApprovalBusiness.DIRECT_PUSH_GIFT;
//根据产品ID查询产品名称
List<AcRecommendUpgradeVO> recommendUpgradeList = recommendParam.getRecommendUpgradeList();
@ -108,7 +104,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
for (AcGiftConfigVO giftConfigVO : giftConfigList) {
Integer pkProduct = giftConfigVO.getPkProduct();
if (null != pkProduct) {
giftConfigVO.setProductName(productServiceApi.getProduct(pkProduct).getData().getProductName());
giftConfigVO.setProductName(iProductServiceApi.getProduct(pkProduct).getData().getProductName());
}
}
}
@ -204,23 +200,6 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public String approvalReject(ApprovalBusinessResultDTO businessResult) {
EApprovalBusiness eApprovalBusiness = businessResult.getEApprovalBusiness();
String businessCode = businessResult.getBusinessCode();
LoginUser loginUser = businessResult.getLoginUser();
AcApprovalLog approvalLog = acApprovalLogService.queryApprovalLog(eApprovalBusiness, businessCode, loginUser.getDataCountry());
if (null == approvalLog) {
return "审批数据不存在!";
}
//更新审批状态
acApprovalLogService.updateApprovalLog(eApprovalBusiness, businessCode, loginUser.getDataCountry(),
loginUser.getUserId(), EApproveRechargeStatus.REJECT, businessResult.getApproveRemark());
return null;
}
/**
* 保存直推赠送数据
*
@ -251,7 +230,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
Long pkBaseId = recommendParam.getActivityParam().getPkId();
Long pkModifyId = recommendParam.getPkMember();
//删除活动基本信息
baseConfigService.deleteBaseConfigById(pkBaseId, pkModifyId);
iAcBaseConfigService.deleteBaseConfigById(pkBaseId, pkModifyId);
// 删除活动权限配置
iAcBaseAuthorityService.update(Wrappers.<AcBaseAuthority>lambdaUpdate()
.eq(AcBaseAuthority::getPkBaseId, pkBaseId)
@ -267,7 +246,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
//删除直推升级配置信息
List<AcRecommendUpgradeVO> recommendUpgradeList = recommendParam.getRecommendUpgradeList();
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
recomUpgradeRuleConfigService.deleteUpgradeRuleConfigByBaseId(pkBaseId, pkModifyId);
iAcRecomUpgradeRuleConfigService.deleteUpgradeRuleConfigByBaseId(pkBaseId, pkModifyId);
}
//删除复购均分
AcRecommendSharVO acRecommendSharVO = recommendParam.getAcRecommendSharVO();
@ -425,7 +404,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
recommendUpgradeVO.setPkCountry(recommendParam.getPkCountry());
recomUpgradeRuleConfig = BeanUtil.copyProperties(recommendUpgradeVO, AcRecomUpgradeRuleConfig.class);
recomUpgradeRuleConfig.setPkBaseId(recommendParam.getPkBaseId());
recomUpgradeRuleConfigService.save(recomUpgradeRuleConfig);
iAcRecomUpgradeRuleConfigService.save(recomUpgradeRuleConfig);
List<AcGiftConfig> giftConfigs = saveRecommendUpgradeGift(recommendUpgradeVO, recomUpgradeRuleConfig.getPkId());
giftConfigService.saveBatch(giftConfigs);
}
@ -433,26 +412,6 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return true;
}
/**
* 提交审批
*
* @param recommendParam 直推赠送参数
*/
public Boolean submitApproval(AcRecommendParam recommendParam, EApprovalBusiness approvalBusiness, String businessCode) {
//保存审批日志
AcApprovalLog approvalLog = saveApprovalLog(recommendParam, approvalBusiness, businessCode);
ApprovalSubmitDTO approvalSubmitDTO = ApprovalSubmitDTO.builder().eApprovalBusiness(approvalBusiness)
.businessCode(approvalLog.getBusinessCode())
.signType(ESignType.getEnumByValue(recommendParam.getSignType())).userIdList(recommendParam.getUserIdList())
.sendIdList(recommendParam.getSendIdList()).remark(recommendParam.getRemark()).build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, recommendParam.getLoginUser());
if (!submit.isSuccess()) {
throw new RuntimeException("直推赠送提交审批失败!");
}
return submit.isSuccess();
}
/**
* 保存活动审批日志信息
*
@ -512,7 +471,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
public AcRecommendVO showDetailInfo(Long activityId, Integer pkCountry) {
AcRecommendVO recommendVO = new AcRecommendVO();
recommendVO.setPkBaseId(activityId);
AcBaseConfig baseConfig = baseConfigService.getById(activityId);
AcBaseConfig baseConfig = iAcBaseConfigService.getById(activityId);
//查询目标用户群体
List<AcGoalMemberConfig> acGoalMemberConfigs = acGoalMemberConfigService.selectMemberConfig(activityId);
BaseConfigVo baseConfigVo = BeanUtil.copyProperties(baseConfig, BaseConfigVo.class);
@ -527,7 +486,7 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
List<AcRepurCouponsRuleConfig> repurCouponsRuleConfigList = selectRuleConfigByActivityId(activityId);
recommendVO.setRepurchaseCouponsShowList(conversionAcRepurchaseCouponsShowVO(repurCouponsRuleConfigList));
//查询直推升级规则
List<AcRecomUpgradeRuleConfig> recomUpgradeRuleConfigList = recomUpgradeRuleConfigService.selectByActivityId(activityId);
List<AcRecomUpgradeRuleConfig> recomUpgradeRuleConfigList = iAcRecomUpgradeRuleConfigService.selectByActivityId(activityId);
recommendVO.setRecommendUpgradeList(conversionRecommendUpgradeVO(recomUpgradeRuleConfigList, pkCountry));
//复购券均分
AcRepurSharRuleConfig repurSharRuleConfig = acRepurSharRuleConfigService.selectAcRepurSharRuleConfigByBaseId(activityId);
@ -619,27 +578,201 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean invokeRecommendUpgrade(AcRecommendUpgrade acRepurchaseCouponsDTO) {
boolean result = true;
SaOrderExt saOrderExt = acRepurchaseCouponsDTO.getSaOrderExt();
AcBaseConfigVO baseConfigVO = AcBaseConfigVO.builder().actType(EActType.DIRECT_PUSH_GIFT.getValue())
.pkCountry(saOrderExt.getPkCountry())
.atcModule(EActModule.DIRECT_PUSH_UPGRADE.getValue()).build();
//查询活动
List<AcBaseConfig> acBaseConfigs = baseConfigService.selectBaseConfigByType(baseConfigVO);
if (CollUtil.isNotEmpty(acBaseConfigs)) {
EOrderOperateStatus orderOperateStatus = acRepurchaseCouponsDTO.getOrderOperateStatus();
for (AcBaseConfig baseConfig : acBaseConfigs) {
if (orderOperateStatus.equals(EOrderOperateStatus.NORMAL)) {
result = handleBusiness(acRepurchaseCouponsDTO, baseConfig);
} else {
result = cancelOrder(acRepurchaseCouponsDTO, baseConfig);
public Boolean invokeRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade) {
if (EOrderOperateStatus.NORMAL.equals(acRecommendUpgrade.getOrderOperateStatus())) {
// 正向处理
AcBaseConfigVO baseConfigVO = AcBaseConfigVO.builder()
.actType(EActType.RECOMMEND_UPGRADE.getValue())
.pkCountry(acRecommendUpgrade.getSaOrderExt().getPkCountry())
.build();
// 查询订单时内的直推活动
List<AcBaseConfig> acBaseConfigs = iAcBaseConfigService.selectBaseConfigByType(baseConfigVO);
if (CollUtil.isNotEmpty(acBaseConfigs)) {
for (AcBaseConfig baseConfig : acBaseConfigs) {
handleRecommendUpgrade(acRecommendUpgrade, baseConfig);
}
}
} else {
// 撤单处理
handleCancelRecommendUpgrade(acRecommendUpgrade);
}
return result;
return true;
}
/**
* 下单处理
*/
private void handleRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade, AcBaseConfig baseConfig) {
Date nowDate = new Date();
// 订单信息
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
// 活动ID
Long pkBaseId = baseConfig.getPkId();
// 推荐人
Long pkMember = saOrderExt.getPkReference();
// 当前时间年月
String upgradeTime = DateUtils.parseDateToFormat(DateUtils.YYYYMM, nowDate);
// 校验推荐人本月是否已经触发过
if (iAcRecomUpgradeRecordService.count(Wrappers.<AcRecomUpgradeRecord>lambdaQuery()
.eq(AcRecomUpgradeRecord::getPkBaseId, pkBaseId)
.eq(AcRecomUpgradeRecord::getPkMember, pkMember)
.eq(AcRecomUpgradeRecord::getUpgradeTime, upgradeTime)
) > 0) {
return;
}
// 推荐人等级ID
CuMember referenceMember = iMemberServiceApi.getMember(pkMember).getData();
Integer pkSettleGrade = referenceMember.getPkSettleGrade();
// 国家
Integer pkCountry = saOrderExt.getPkCountry();
AcRecommendUpgradeVO recommendUpgradeVO = AcRecommendUpgradeVO.builder()
.pkBaseId(pkBaseId)
.pkSettleGrade(pkSettleGrade)
.pkCountry(pkCountry)
.memberType(1)
.build();
//查询规则
List<AcRecomUpgradeRuleConfig> upgradeRuleConfigList = iAcRecomUpgradeRuleConfigService.listRuleConfig(recommendUpgradeVO);
if (CollUtil.isNotEmpty(upgradeRuleConfigList)) {
// 升级规则
AcRecomUpgradeRuleConfig upgradeRuleConfig = upgradeRuleConfigList.get(0);
// // 查询活动权限
// if (!this.checkAuthority(baseConfig, saOrderExt.getPkReference())) {
// return;
// }
// log.info("直推升级权限校验pkBaseId: {}orderCode: {}", pkBaseId, saOrderExt.getOrderCode());
// 查询订单时间范围
// 默认活动开始时间
Date startTime = baseConfig.getActStartDate();
// 默认订单时间
Date endTime = saOrderExt.getPayTime();
// 当月第一天
Date monthFirst = DateUtils.getFirstDayOfMonth(nowDate);
if (monthFirst.compareTo(startTime) > 0) {
startTime = monthFirst;
}
List<SaOrder> recomOrderList = iAcRecomUpgradeRecordService.listRecomOrder(pkMember, upgradeRuleConfig.getPkRecommendGrade(), upgradeRuleConfig.getRecommendNumber(), startTime, endTime);
// 校验推荐人是否可以升级
if (CollectionUtil.isEmpty(recomOrderList)
|| recomOrderList.size() != upgradeRuleConfig.getRecommendNumber()) {
return;
}
// 封装规则升级记录
AcRecomUpgradeRecord recomUpgradeRecord = AcRecomUpgradeRecord.builder()
.pkBaseId(pkBaseId)
.pkRuleId(upgradeRuleConfig.getPkId())
.pkMember(pkMember)
.pkSettleGrade(pkSettleGrade)
.pkRecommendGrade(upgradeRuleConfig.getPkUpgradeGrade())
.pkOrderId(saOrderExt.getPkId())
.upgradeTime(upgradeTime)
.build();
recomUpgradeRecord.setPkCreator(referenceMember.getPkId());
recomUpgradeRecord.setPkCountry(referenceMember.getPkSettleCountry());
iAcRecomUpgradeRecordService.save(recomUpgradeRecord);
// 更新会员等级
referenceMember.setPkSettleGrade(upgradeRuleConfig.getPkUpgradeGrade());
// 更新用户信息
CuMember cuMember = CuMember.builder()
.pkId(pkMember)
.pkSettleGrade(upgradeRuleConfig.getPkUpgradeGrade())
.pkSettleCountry(referenceMember.getPkCountry())
.build();
cuMember.setPkModified(pkMember);
cuMember.setModifiedTime(nowDate);
SaOrder saOrder = SaOrder.builder()
.pkId(saOrderExt.getPkId())
.payTime(nowDate)
.build();
//调用升级接口
R<?> resultBool = iMemberServiceApi.updateMemberLevel(cuMember, saOrder, pkSettleGrade);
if (!resultBool.isSuccess()) {
log.error("直推活动会员升级升级失败. {}", resultBool.getMsg());
throw new ServiceException(resultBool.getMsg());
}
}
}
/**
* 撤单处理
*/
private void handleCancelRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade) {
Date nowDate = new Date();
// 订单信息
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
// 订单ID
Long pkOrderId = saOrderExt.getPkId();
// 推荐人
Long pkMember = saOrderExt.getPkReference();
List<AcRecomUpgradeRecord> upgradeRecordList = iAcRecomUpgradeRecordService.list(Wrappers.<AcRecomUpgradeRecord>lambdaQuery()
.eq(AcRecomUpgradeRecord::getPkMember, pkMember)
.eq(AcRecomUpgradeRecord::getPkOrderId, pkOrderId)
.orderByDesc(AcRecomUpgradeRecord::getUpgradeTime)
);
if (CollectionUtil.isNotEmpty(upgradeRecordList)) {
// 会员活动升级记录
AcRecomUpgradeRecord recomUpgradeRecord = upgradeRecordList.get(0);
// 删除活动升级记录
iAcRecomUpgradeRecordService.update(Wrappers.<AcRecomUpgradeRecord>lambdaUpdate()
.eq(AcRecomUpgradeRecord::getPkId, recomUpgradeRecord.getPkId())
.set(AcRecomUpgradeRecord::getDelFlag, EDelFlag.DELETE.getValue())
.set(AcRecomUpgradeRecord::getModifiedTime, nowDate)
.set(AcRecomUpgradeRecord::getPkModified, saOrderExt.getPkMember())
);
// 推荐会员信息
CuMember referenceMember = iMemberServiceApi.getMember(pkMember).getData();
if (!referenceMember.getPkSettleGrade().equals(recomUpgradeRecord.getPkRecommendGrade())) {
// 会员目前等于与这次活动升级不一致只需要删掉升级记录
CuMember cuMember = CuMember.builder()
.pkId(pkMember)
.pkSettleGrade(referenceMember.getPkSettleGrade())
.build();
iMemberServiceApi.reduceMemberLevel(cuMember, saOrderExt);
} else {
// 活动基础配置
AcBaseConfig baseConfig = iAcBaseConfigService.getById(recomUpgradeRecord.getPkId());
// 活动基础配置
AcRecomUpgradeRuleConfig upgradeRuleConfig = iAcRecomUpgradeRuleConfigService.getById(recomUpgradeRecord.getPkRuleId());
// 查询订单时间范围
// 默认活动开始时间
Date startTime = baseConfig.getActStartDate();
// 默认活动结束时间
Date endTime = baseConfig.getActEndDate();
// 当月第一天
Date monthFirst = DateUtils.getFirstDayOfMonth(nowDate);
if (monthFirst.compareTo(startTime) > 0) {
startTime = monthFirst;
}
// 当月最后一天
Date monthLast = DateUtils.getLastDayOfMonth(nowDate);
if (monthLast.compareTo(endTime) < 0) {
endTime = monthLast;
}
List<SaOrder> recomOrderList = iAcRecomUpgradeRecordService.listRecomOrder(pkMember, upgradeRuleConfig.getPkRecommendGrade(), upgradeRuleConfig.getRecommendNumber(), startTime, endTime);
// 校验推荐人是否可以升级
if (CollectionUtil.isEmpty(recomOrderList)
|| recomOrderList.size() != upgradeRuleConfig.getRecommendNumber()) {
// 订单撤单后目前订单不够升级了需要降级
CuMember cuMember = CuMember.builder()
.pkId(pkMember)
.pkSettleGrade(recomUpgradeRecord.getPkSettleGrade())
.build();
iMemberServiceApi.reduceMemberLevel(cuMember, saOrderExt);
return;
}
// 足够升级更新升级记录时间
SaOrder newOrder = recomOrderList.get(recomOrderList.size() - 1);
iMemberServiceApi.changeMemberLevel(saOrderExt, newOrder);
}
}
}
/**
* 校验活动权限true进行处理false不进行处理
*
@ -667,32 +800,16 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return true;
case PLACE_STOP:
// 安置禁止
if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) {
return false;
} else {
return true;
}
return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) <= 0;
case BLOOD_STOP:
// 血缘禁止
if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) {
return false;
} else {
return true;
}
return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) <= 0;
case PLACE_ALLWO:
// 安置可见
if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) {
return true;
} else {
return false;
}
return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0;
case BLOOD_ALLOW:
// 血缘可见
if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) {
return true;
} else {
return false;
}
return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0;
default:
}
}
@ -705,157 +822,6 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return baseMapper.queryAcRepurchaseCouponsRule(settleDate);
}
/**
* 处理业务(正常报单)
*
* @param acRecommendUpgrade 升级参数
* @param baseConfig 基本配置
*/
private Boolean handleBusiness(AcRecommendUpgrade acRecommendUpgrade, AcBaseConfig baseConfig) {
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
//活动ID
Long pkBaseId = baseConfig.getPkId();
//推荐人
Long pkMember = saOrderExt.getPkReference();
//推荐人等级ID
Integer pkSettleGrade = memberServiceApi.queryMember(pkMember).getData().getPkSettleGrade();
//被推荐人等级ID
Integer pkRecommendGrade = memberServiceApi.queryMember(saOrderExt.getPkMember()).getData().getPkSettleGrade();
//国家
Integer pkCountry = saOrderExt.getPkCountry();
AcRecommendUpgradeVO recommendUpgradeVO = AcRecommendUpgradeVO.builder().pkCountry(pkCountry)
.pkBaseId(pkBaseId).memberType(1).pkSettleGrade(pkSettleGrade)
.pkRecommendGrade(pkRecommendGrade).build();
//查询规则
List<AcRecomUpgradeRuleConfig> recomUpgradeRuleConfigList = recomUpgradeRuleConfigService.selectRuleConfig(recommendUpgradeVO);
if (CollUtil.isNotEmpty(recomUpgradeRuleConfigList)) {
AcRecomUpgradeRuleConfig recomUpgradeRuleConfig = recomUpgradeRuleConfigList.get(0);
//正常报单
Long pkRuleId = recomUpgradeRuleConfig.getPkId();
//插入业务表
AcRecomUpgradeRecord recomUpgradeRecord = AcRecomUpgradeRecord.builder().pkBaseId(pkBaseId)
.pkRuleId(pkRuleId).pkMember(pkMember)
.pkSettleGrade(pkSettleGrade).pkRecommendGrade(pkRecommendGrade)
.pkOrderId(saOrderExt.getPkId()).build();
recomUpgradeRecord.setPkCountry(pkCountry);
recomUpgradeRecord.setPkCreator(pkMember);
acRecomUpgradeRecordService.save(recomUpgradeRecord);
// 查询活动权限
if (!this.checkAuthority(baseConfig, saOrderExt.getPkReference())) {
return true;
}
log.info("直推升级权限校验pkBaseId: {}orderCode: {}", pkBaseId, saOrderExt.getOrderCode());
//满足规则时 直推升级
AcRecomUpgradeRecordExt upgradeRecord = new AcRecomUpgradeRecordExt();
upgradeRecord.setPkMember(pkMember);
upgradeRecord.setPkBaseId(pkBaseId);
upgradeRecord.setPkRuleId(pkRuleId);
upgradeRecord.setPkSettleGrade(recomUpgradeRuleConfig.getPkSettleGrade());
upgradeRecord.setPkRecommendGrade(recomUpgradeRuleConfig.getPkRecommendGrade());
upgradeRecord.setStartDate(baseConfig.getActStartDate());
upgradeRecord.setEndDate(baseConfig.getActEndDate());
upgradeRecord.setPkCountry(pkCountry);
upgradeRecord.setUpgradeStatus(0);
//查询推荐人数ID(没有升级过记录)
List<Long> recommendNumber = acRecomUpgradeRecordService.selectRecommendNumber(upgradeRecord);
//配置中的人数
Integer configNumber = recomUpgradeRuleConfig.getRecommendNumber();
if (CollUtil.isNotEmpty(recommendNumber) && configNumber.equals(recommendNumber.size())) {
//更新为已升级过的推荐状态
acRecomUpgradeRecordService.updateUpgradeStatusById(recommendNumber, pkMember, EYesNo.NO.getIntValue());
//升级等级
Integer pkUpgradeGrade = recomUpgradeRuleConfig.getPkUpgradeGrade();
CuMember data = memberServiceApi.getMember(pkMember).getData();
//用户信息
CuMember cuMember = CuMember.builder().pkId(pkMember).pkSettleGrade(pkUpgradeGrade).memberCode(data.getMemberCode())
.pkSettleCountry(data.getPkSettleCountry()).build();
cuMember.setPkModified(pkMember);
cuMember.setModifiedTime(new Date());
SaOrder saOrder = SaOrder.builder().payTime(new Date()).build();
//查询是否配置赠品
List<AcGiftConfigExt> acGiftConfigList = giftConfigService.queryListByRuleIdList(pkRuleId, pkCountry);
//调用提货接口
if (CollUtil.isNotEmpty(acGiftConfigList)) {
AcGiftConfigExt acGiftConfigExt = acGiftConfigList.get(0);
acPickService.addPickByActivity(pkMember, EActType.DIRECT_PUSH_GIFT.getValue(),
baseConfig.getPkId(), pkRuleId, acGiftConfigExt.getQuantity(), baseConfig.getActCover(), null,
null, pkMember, pkCountry, baseConfig.getPkId(), null, null);
}
//调用升级接口
return memberServiceApi.updateMemberLevel(cuMember, saOrder, pkSettleGrade).getData();
}
}
return true;
}
/**
* 撤单
*/
private Boolean cancelOrder(AcRecommendUpgrade acRecommendUpgrade, AcBaseConfig baseConfig) {
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
Long pkOrderId = saOrderExt.getPkId();
//修改人
Long pkModified = saOrderExt.getPkReference();
AcRecomUpgradeRecordExt upgradeRecordOrder = new AcRecomUpgradeRecordExt();
upgradeRecordOrder.setPkOrderId(pkOrderId);
upgradeRecordOrder.setStartDate(baseConfig.getActStartDate());
upgradeRecordOrder.setEndDate(baseConfig.getActEndDate());
//根据orderId查询
AcRecomUpgradeRecord recomUpgradeRecord = acRecomUpgradeRecordService.selectUpgradeRecordByOrderId(upgradeRecordOrder);
if (null != recomUpgradeRecord) {
Long pkRuleId = recomUpgradeRecord.getPkRuleId();
//查询规则
AcRecomUpgradeRuleConfig upgradeRuleConfig = recomUpgradeRuleConfigService.getById(pkRuleId);
//结算等级
Integer pkSettleGrade = upgradeRuleConfig.getPkSettleGrade();
//找茬等级
Integer pkRecommendGrade = upgradeRuleConfig.getPkRecommendGrade();
if (pkSettleGrade.equals(recomUpgradeRecord.getPkSettleGrade()) && pkRecommendGrade.equals(recomUpgradeRecord.getPkRecommendGrade())) {
//撤单更新状态
acRecomUpgradeRecordService.cancelOrder(pkOrderId, pkModified);
AcRecomUpgradeRecordExt upgradeRecord = BeanUtil.copyProperties(recomUpgradeRecord, AcRecomUpgradeRecordExt.class);
upgradeRecord.setPkSettleGrade(pkSettleGrade);
upgradeRecord.setPkRecommendGrade(pkRecommendGrade);
upgradeRecord.setStartDate(baseConfig.getActStartDate());
upgradeRecord.setEndDate(baseConfig.getActEndDate());
upgradeRecord.setUpgradeStatus(1);
//推荐人数
List<Long> recommendNumber = acRecomUpgradeRecordService.selectRecommendNumber(upgradeRecord);
//配置的推荐人数
Integer recommendConfigNumber = upgradeRuleConfig.getRecommendNumber();
if (CollUtil.isNotEmpty(recommendNumber) && recommendNumber.size() < recommendConfigNumber) {
Long pkMember = recomUpgradeRecord.getPkMember();
//调用降级处理
Integer pkUpgradeGrade = upgradeRuleConfig.getPkUpgradeGrade();
CuMember data = memberServiceApi.getMember(pkMember).getData();
//用户信息
CuMember cuMember = CuMember.builder().pkId(pkMember).pkSettleGrade(pkSettleGrade).memberCode(data.getMemberCode())
.pkSettleCountry(data.getPkSettleCountry()).build();
cuMember.setPkModified(pkMember);
cuMember.setModifiedTime(new Date());
SaOrder saOrder = SaOrder.builder().payTime(new Date()).build();
//修改升级状态
acRecomUpgradeRecordService.updateUpgradeStatusById(recommendNumber, pkModified, EYesNo.YES.getIntValue());
//查询是否配置赠品
List<AcGiftConfigExt> acGiftConfigList = giftConfigService.queryListByRuleIdList(pkRuleId, saOrderExt.getPkCountry());
//调用提货接口
if (CollUtil.isNotEmpty(acGiftConfigList)) {
AcGiftConfigExt acGiftConfigExt = acGiftConfigList.get(0);
acPickService.updatePickUsableByMemberAndActivityType(pkMember, EActType.DIRECT_PUSH_GIFT.getValue(), baseConfig.getPkId(), pkRuleId
, acGiftConfigExt.getQuantity(), pkModified);
}
//调用降级处理
memberServiceApi.updateMemberLevel(cuMember, saOrder, pkUpgradeGrade);
}
}
}
return true;
}
@Override
public Boolean deleteCouponsRuleConfigByBaseId(Long pkBaseId, Long pkModifyId) {
LambdaUpdateWrapper<AcRepurCouponsRuleConfig> updateWrapper = new LambdaUpdateWrapper<>();
@ -866,5 +832,130 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return update(updateWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String directPushUpgradeSubmit(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
log.info("直推参数{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
EApprovalBusiness approvalBusiness = EApprovalBusiness.DIRECT_PUSH_UPGRADE;
//根据产品ID查询产品名称
List<AcRecommendUpgradeVO> recommendUpgradeList = acDirectPushUpgradeParam.getRecommendUpgradeList();
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
for (AcRecommendUpgradeVO recommendUpgradeVO : recommendUpgradeList) {
List<AcGiftConfigVO> giftConfigList = recommendUpgradeVO.getGiftConfigList();
if (CollUtil.isNotEmpty(giftConfigList)) {
for (AcGiftConfigVO giftConfigVO : giftConfigList) {
Integer pkProduct = giftConfigVO.getPkProduct();
if (null != pkProduct) {
giftConfigVO.setProductName(iProductServiceApi.getProduct(pkProduct).getData().getProductName());
}
}
}
}
}
Integer controlType = acDirectPushUpgradeParam.getControlType();
if (controlType.equals(EControlType.SAVE.getValue())) {
log.info("直推升级新增{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
return saveDirectPushUpgradeData(acDirectPushUpgradeParam);
} else if (controlType.equals(EControlType.MODIFY.getValue())) {
log.info("直推升级修改{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
deleteDirectPushUpgradeData(acDirectPushUpgradeParam);
return saveDirectPushUpgradeData(acDirectPushUpgradeParam);
} else {
log.info("直推升级刪除{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
deleteDirectPushUpgradeData(acDirectPushUpgradeParam);
}
//业务单号
String businessCode = CommonUtil.createSerialNumber(EOrderPrefix.ACTIVITY_CODE.getValue());
//日志
packageDirectPushOperationLog(acDirectPushUpgradeParam, approvalBusiness, businessCode);
return null;
}
private void packageDirectPushOperationLog(AcDirectPushUpgradeParam param, EApprovalBusiness approvalBusiness, String businessCode) {
//活动的基本信息
ActivityParam activityParam = param.getActivityParam();
//推荐升级
List<AcRecommendUpgradeVO> recommendUpgradeList = param.getRecommendUpgradeList();
Map<String, String> transactionMap = iTransactionCommonService.exportEnumTransaction(EControlType.values());
Integer controlType = param.getControlType();
controlType = null == controlType ? EControlType.SAVE.getValue() : controlType;
StringBuilder sb = new StringBuilder();
sb.append("活动名称:").append(activityParam.getActName())
.append(" 活动说明:").append(activityParam.getActExplain())
.append(" 活动时间:").append(DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, activityParam.getActStartDate())).append("")
.append(DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, activityParam.getActEndDate()))
.append(" 业务类型:");
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
sb.append(EApprovalBusiness.DIRECT_PUSH_UPGRADE.getLabel()).append(" ");
}
sb.append(" 操作类型:").append(transactionMap.get(EnumsPrefixConstants.CONTROL_TYPE + controlType));
BusinessLogDTO businessLog = BusinessLogDTO.builder()
.businessType(approvalBusiness.getValue())
.businessCode(businessCode)
.content(sb.toString()).pkCreator(param.getPkMember())
.pkCountry(param.getPkCountry())
.freeSignFlag(false).build();
rabbitTemplate.convertAndSend(RabbitMqConstants.BUSINESS_LOG_EXCHANGE, RabbitMqConstants.BUSINESS_LOG_KEY, Collections.singleton(businessLog));
}
private void deleteDirectPushUpgradeData(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
Long pkBaseId = acDirectPushUpgradeParam.getActivityParam().getPkId();
Long pkModifyId = acDirectPushUpgradeParam.getPkMember();
//删除活动基本信息
iAcBaseConfigService.deleteBaseConfigById(pkBaseId, pkModifyId);
//删除直推升级配置信息
List<AcRecommendUpgradeVO> recommendUpgradeList = acDirectPushUpgradeParam.getRecommendUpgradeList();
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
iAcRecomUpgradeRuleConfigService.deleteUpgradeRuleConfigByBaseId(pkBaseId, pkModifyId);
}
}
private String saveDirectPushUpgradeData(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
//保存活动基本信息
String message = saveDirectPushUpgradeBaseConfig(acDirectPushUpgradeParam);
//保存直推升级配置信息
saveDirectPushUpgradeRuleInfo(acDirectPushUpgradeParam);
return message;
}
private void saveDirectPushUpgradeRuleInfo(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
AcRecomUpgradeRuleConfig recomUpgradeRuleConfig;
//直推升级规则配置
List<AcRecommendUpgradeVO> recommendUpgradeList = acDirectPushUpgradeParam.getRecommendUpgradeList();
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
for (AcRecommendUpgradeVO recommendUpgradeVO : recommendUpgradeList) {
recommendUpgradeVO.setPkCreator(acDirectPushUpgradeParam.getPkMember());
recommendUpgradeVO.setPkCountry(acDirectPushUpgradeParam.getPkCountry());
recomUpgradeRuleConfig = BeanUtil.copyProperties(recommendUpgradeVO, AcRecomUpgradeRuleConfig.class);
recomUpgradeRuleConfig.setPkBaseId(acDirectPushUpgradeParam.getPkBaseId());
iAcRecomUpgradeRuleConfigService.save(recomUpgradeRuleConfig);
List<AcGiftConfig> giftConfigs = saveRecommendUpgradeGift(recommendUpgradeVO, recomUpgradeRuleConfig.getPkId());
giftConfigService.saveBatch(giftConfigs);
}
}
}
private String saveDirectPushUpgradeBaseConfig(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
ActivityParam activityParam = acDirectPushUpgradeParam.getActivityParam();
if (null == activityParam) {
return "没有活动的基本信息!";
}
List<AcRecommendUpgradeVO> recommendUpgradeList = acDirectPushUpgradeParam.getRecommendUpgradeList();
if (CollUtil.isNotEmpty(recommendUpgradeList)) {
activityParam.setAtcModule(EActModule.DIRECT_PUSH_UPGRADE.getValue());
}
activityParam.setActType(EActType.RECOMMEND_UPGRADE.getValue());
//保存基础配置
activityParam.setPkCreator(acDirectPushUpgradeParam.getPkMember());
activityParam.setPkCountry(acDirectPushUpgradeParam.getPkCountry());
AcBaseConfig acBaseConfig = iActivityService.saveBaseConfig(activityParam);
acDirectPushUpgradeParam.setPkBaseId(acBaseConfig.getPkId());
iActivityService.saveGoalMemberConfig(activityParam, acBaseConfig);
return null;
}
}

View File

@ -7,17 +7,12 @@ import com.hzs.activity.recommend.mapper.AcRepurSharRuleConfigMapper;
import com.hzs.activity.recommend.service.IAcRepurSharRuleConfigService;
import com.hzs.common.core.enums.EDelFlag;
import com.hzs.common.domain.activity.recommend.AcRepurSharRuleConfig;
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 复购均分配置 服务实现类
*
* @author hzs
* @since 2023-05-04
*/
@Service
public class AcRepurSharRuleConfigServiceImpl extends ServiceImpl<AcRepurSharRuleConfigMapper, AcRepurSharRuleConfig> implements IAcRepurSharRuleConfigService {
@ -39,8 +34,4 @@ public class AcRepurSharRuleConfigServiceImpl extends ServiceImpl<AcRepurSharRul
return update(updateWrapper);
}
@Override
public List<AcRepurSharRuleConfigExt> queryRepurSharRuleConfig(Date startDate, Date endDate) {
return baseMapper.queryRepurSharRuleConfig(startDate, endDate);
}
}

View File

@ -0,0 +1,68 @@
package com.hzs.activity.recommend.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzs.common.core.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class AcDirectPushUpgradeListVO {
/**
* 活动名称
*/
@Excel(name = "活动名称")
private String actName;
/**
* 会员编号
*/
@Excel(name = "会员编号")
private String memberCode;
/**
* 会员名称
*/
@Excel(name = "会员名称")
private String memberName;
/**
* 原等级
*/
@Excel(name = "原等级")
private String pkSettleGrade;
/**
* 新等级
*/
@Excel(name = "新等级")
private String pkRecommendGrade;
/**
* 活动开始时间
*/
@Excel(name = "活动开始时间", dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date actStartDate;
/**
* 活动结束时间
*/
@Excel(name = "活动结束时间", dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date actEndDate;
/**
* 创建时间
*/
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date creationTime;
/**
* 升级年月
*/
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd")
private String upgradeTime;
}

View File

@ -0,0 +1,63 @@
package com.hzs.activity.recommend.vo;
import com.hzs.activity.base.vo.AcGiftConfigVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcDirectPushUpgradeVO {
private static final long serialVersionUID = 7140530986849619774L;
/**
* 主键
*/
private Long pkId;
/**
* 活动基本配置主键
*/
private Long pkBaseId;
/**
* 结算等级
*/
private Integer pkSettleGrade;
/**
* 推荐等级
*/
private Integer pkRecommendGrade;
/**
* 推荐数量
*/
private Integer recommendNumber;
/**
* 升级等级
*/
private Integer pkUpgradeGrade;
/**
* 创建人ID
*/
private Long pkCreator;
/**
* 国家
*/
private Integer pkCountry;
/**
* 会员类型 1=等级 2=奖衔 3=权限
*/
private Integer memberType;
}

View File

@ -10,12 +10,6 @@ import java.util.List;
/**
* 复购券均分VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/4 15:19
* @Classname: AcRecommendSharVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@AllArgsConstructor

View File

@ -11,12 +11,6 @@ import java.util.List;
/**
* 直推升级VO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:06
* @Classname: AcRecommendUpgradeVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@Builder

View File

@ -11,19 +11,12 @@ import java.util.List;
/**
* 直推赠送模块VO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:01
* @Classname: AcRecommendUpgradeVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcRecommendVO implements Serializable {
private static final long serialVersionUID = 7140530986849619774L;
/**
* 活动基本配置主键

View File

@ -8,13 +8,6 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:40
* @Classname: AcRepurchaseCouponsShowVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@Builder
@AllArgsConstructor

View File

@ -1,6 +1,5 @@
package com.hzs.activity.recommend.vo;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
@ -12,12 +11,6 @@ import java.math.BigDecimal;
/**
* 直推复购券 VO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:00
* @Classname: AcRepurchaseCouponsVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@AllArgsConstructor

View File

@ -10,17 +10,11 @@ import java.util.List;
/**
* 商品买赠规则配置表 Mapper 接口
*
* @author hzs
* @since 2023-04-20
*/
public interface AcWaresRuleConfigMapper extends BaseMapper<AcWaresRuleConfig> {
/*
* @description: 查询买赠活动赠品配置根据条件
* @author: sui q
* @date: 2023/4/25 19:26
* @param: null null
* 查询买赠活动赠品配置根据条件
**/
List<AcWaresRuleConfigExt> queryWaresGiftConfigByCondition(@Param("giftConfigParam") GiftConfigParam giftConfigParam);
}

View File

@ -12,17 +12,11 @@ import java.util.List;
/**
* 商品买赠规则配置表 服务类
*
* @author hzs
* @since 2023-04-20
*/
public interface IAcWaresRuleConfigService extends IService<AcWaresRuleConfig> {
/*
* @description: 查询买赠活动赠品配置根据条件
* @author: sui q
* @date: 2023/4/25 19:26
* @param: null null
* 查询买赠活动赠品配置根据条件
**/
List<AcWaresRuleConfigExt> queryWaresGiftConfigByCondition(GiftConfigParam giftConfigParam);
@ -64,11 +58,4 @@ public interface IAcWaresRuleConfigService extends IService<AcWaresRuleConfig> {
*/
String approvalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 商品赠送 审核规则驳回
*
* @param approvalBusinessResultDTO
* @return
*/
String approvalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);
}

View File

@ -2,7 +2,6 @@ package com.hzs.activity.wares.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.base.param.ActivityParam;
@ -13,7 +12,6 @@ import com.hzs.activity.base.service.IAcBaseConfigService;
import com.hzs.activity.base.service.IAcGoalMemberConfigService;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.wares.service.IAcGiftConfigService;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.StringUtils;
@ -26,12 +24,9 @@ import com.hzs.activity.wares.mapper.AcWaresRuleConfigMapper;
import com.hzs.activity.wares.service.IAcWaresRuleConfigService;
import com.hzs.common.domain.activity.wares.ext.AcWaresRuleConfigExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.system.sys.IApprovalServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -40,9 +35,6 @@ import java.util.List;
/**
* 商品买赠规则配置表 服务实现类
*
* @author hzs
* @since 2023-04-20
*/
@Service
@Slf4j
@ -61,8 +53,6 @@ public class AcWaresRuleConfigServiceImpl extends ServiceImpl<AcWaresRuleConfigM
@Autowired
private IAcWaresRuleConfigService waresRuleConfigService;
@DubboReference
IApprovalServiceApi approvalServiceApi;
@Override
public List<AcWaresRuleConfigExt> queryWaresGiftConfigByCondition(GiftConfigParam giftConfigParam) {
@ -113,7 +103,7 @@ public class AcWaresRuleConfigServiceImpl extends ServiceImpl<AcWaresRuleConfigM
@Override
@Transactional(rollbackFor = Exception.class)
public String onLinePetition(AcRecommendParam recommendParam) {
log.info("商品赠送入参{}",recommendParam);
log.info("商品赠送入参{}", recommendParam);
EApprovalBusiness approvalBusiness = null;
if (recommendParam.getControlType() == EControlType.SAVE.getValue()) {
approvalBusiness = EApprovalBusiness.PRODUCT_GIFT_ADD;
@ -198,48 +188,6 @@ public class AcWaresRuleConfigServiceImpl extends ServiceImpl<AcWaresRuleConfigM
return null;
}
/**
* 商品赠送审核规则
*
* @param businessResult
* @return
*/
@Override
public String approvalReject(ApprovalBusinessResultDTO businessResult) {
EApprovalBusiness eApprovalBusiness = businessResult.getEApprovalBusiness();
String businessCode = businessResult.getBusinessCode();
LoginUser loginUser = businessResult.getLoginUser();
AcApprovalLog approvalLog = acApprovalLogService.queryApprovalLog(eApprovalBusiness, businessCode, loginUser.getDataCountry());
if (null == approvalLog) {
return "审批数据不存在!";
}
//更新审批状态
acApprovalLogService.updateApprovalLog(eApprovalBusiness, businessCode, loginUser.getDataCountry(),
loginUser.getUserId(), EApproveRechargeStatus.REJECT, businessResult.getApproveRemark());
return null;
}
/**
* 提交审批
*
* @param recommendParam 抽奖参数
*/
public Boolean submitApproval(AcRecommendParam recommendParam, EApprovalBusiness approvalBusiness) {
//保存审批日志
AcApprovalLog approvalLog = saveApprovalLog(recommendParam, approvalBusiness);
ApprovalSubmitDTO approvalSubmitDTO = ApprovalSubmitDTO.builder().eApprovalBusiness(approvalBusiness)
.businessCode(approvalLog.getBusinessCode())
.businessData(JSONObject.toJSONString(recommendParam.getActivityParam()))
.signType(ESignType.getEnumByValue(recommendParam.getSignType())).userIdList(recommendParam.getUserIdList())
.sendIdList(recommendParam.getSendIdList()).remark(recommendParam.getRemark()).fileList(recommendParam.getFileList())
.build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, recommendParam.getLoginUser());
if (!submit.isSuccess()) {
throw new RuntimeException("旅游活动参数提交审批失败!");
}
return submit.isSuccess();
}
/**
* 保存活动审批日志信息
*

View File

@ -459,7 +459,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
CuMember cuMember;
if (!EOrderTypeExtend.REG_REP.getValue().equals(orderParam.getOrderTypeExtend())) {
// 非0元需要获取会员编号会员主键
cuMember = saOrderHandle.packageSaveUser(orderParam, iMemberServiceApi.queryMember(orderParam.getCenterCodeId()).getData());
cuMember = saOrderHandle.packageSaveUser(orderParam, iMemberServiceApi.getMember(orderParam.getCenterCodeId()).getData());
// 获取会员编号会员主键
if (isToBePay) {
cuMember = iMemberServiceApi.createMemberIdAndCode(cuMember, Boolean.FALSE).getData();
@ -469,7 +469,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
cuMember = iMemberServiceApi.createRegisterMemberCode(cuMember).getData();
}
} else {
cuMember = iMemberServiceApi.queryMember(orderParam.getCenterCodeId()).getData();
cuMember = iMemberServiceApi.getMember(orderParam.getCenterCodeId()).getData();
}
SaOrderExt saOrderExt = packageWholeSaOrder(orderParam, cuMember);
@ -542,7 +542,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
orderParam.setPlaceParentId(placeMember.getPkId());
}
}
CuMember cuMember = saOrderHandle.packageSaveUser(orderParam, iMemberServiceApi.queryMember(orderParam.getCenterCodeId()).getData());
CuMember cuMember = saOrderHandle.packageSaveUser(orderParam, iMemberServiceApi.getMember(orderParam.getCenterCodeId()).getData());
// 获取会员编号会员主键
cuMember = iMemberServiceApi.createMemberIdAndCode(cuMember, Boolean.FALSE).getData();
return cuMember;
@ -580,20 +580,28 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
cuMember.setPkSettleGrade(gradeDTO.getPkId());
cuMember.setPkSettleGradeValue(gradeDTO.getGradeValue());
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 2025.05.13 新添加需求开网初期报单660给1980等级报单1980给9900等级
if (EGrade.YOU_KE.getValue() == gradeDTO.getGradeValue()) {
GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.MAKER.getValue(), saOrderExt.getPkCountry()).getData();
if (null != newGradeDTO) {
cuMember.setPkSettleGrade(newGradeDTO.getPkId());
cuMember.setPkSettleGradeValue(newGradeDTO.getGradeValue());
}
} else if (EGrade.MAKER.getValue() == gradeDTO.getGradeValue()) {
GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.VIP.getValue(), saOrderExt.getPkCountry()).getData();
if (null != newGradeDTO) {
cuMember.setPkSettleGrade(newGradeDTO.getPkId());
cuMember.setPkSettleGradeValue(newGradeDTO.getGradeValue());
// 赠送等级截止时间
Long giftGradeEnd = SysConstants.GIFT_GRADE_TIME;
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
// 测试环境
giftGradeEnd = SysConstants.GIFT_GRADE_TIME_TEST;
}
if (System.currentTimeMillis() < giftGradeEnd) {
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 2025.05.13 新添加需求开网初期报单660给1980等级报单1980给9900等级
if (EGrade.YOU_KE.getValue() == gradeDTO.getGradeValue()) {
GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.MAKER.getValue(), saOrderExt.getPkCountry()).getData();
if (null != newGradeDTO) {
cuMember.setPkSettleGrade(newGradeDTO.getPkId());
cuMember.setPkSettleGradeValue(newGradeDTO.getGradeValue());
}
} else if (EGrade.MAKER.getValue() == gradeDTO.getGradeValue()) {
GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.VIP.getValue(), saOrderExt.getPkCountry()).getData();
if (null != newGradeDTO) {
cuMember.setPkSettleGrade(newGradeDTO.getPkId());
cuMember.setPkSettleGradeValue(newGradeDTO.getGradeValue());
}
}
}
}
@ -788,7 +796,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 同步全网产品库存
this.allProductSync(saOrderExt);
log.info("生产活动消息activity.exchange{}", JSONUtil.toJsonStr(saOrderExt));
// 注册订单推送MQ处理活动
rabbitTemplate.convertAndSend(RabbitMqConstants.ACTIVITY_EXCHANGE, RabbitMqConstants.ACTIVITY_KEY, saOrderExt);
// 推送秒结数据处理 -- 注册订单
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_EXCHANGE, RabbitMqConstants.ORDER_SECOND_KEY, saOrderExt);
@ -860,7 +868,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 同步全网产品库存
this.allProductSync(saOrderExt);
log.info("生产活动消息activity.exchange{}", JSONUtil.toJsonStr(saOrderExt));
// 188注册转复购订单推送MQ处理活动
rabbitTemplate.convertAndSend(RabbitMqConstants.ACTIVITY_EXCHANGE, RabbitMqConstants.ACTIVITY_KEY, saOrderExt);
// 推送秒结数据处理 -- 注册订单
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_EXCHANGE, RabbitMqConstants.ORDER_SECOND_KEY, saOrderExt);
@ -973,6 +981,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 同步全网产品库存
this.allProductSync(saOrderExt);
// 升级订单推送MQ处理活动
rabbitTemplate.convertAndSend(RabbitMqConstants.ACTIVITY_EXCHANGE, RabbitMqConstants.ACTIVITY_KEY, saOrderExt);
// 推送秒结数据处理 -- 升级订单
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_EXCHANGE, RabbitMqConstants.ORDER_SECOND_KEY, saOrderExt);
@ -1921,30 +1930,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return baseMapper.queryOrderSelect(param, pkCountry);
}
/**
* 封装会员分享会员
*
* @param orderParam 参数
* @param cuMemberShare 会员分享
*/
private CuMember packageCuMemberShare(OrderParam orderParam, CuMemberShare cuMemberShare) {
orderParam.setMemberCode(cuMemberShare.getMemberCode());
orderParam.setMemberName(cuMemberShare.getMemberName());
orderParam.setPhone(cuMemberShare.getPhone());
orderParam.setParentId(cuMemberShare.getPkParent());
orderParam.setCenterCodeId(cuMemberShare.getPkParent());
CuMember parentMember = iMemberServiceApi.queryMember(cuMemberShare.getPkParent()).getData();
if (parentMember == null) {
return null;
}
orderParam.setPkCountry(cuMemberShare.getPkCountry());
orderParam.setPkSettleCountry(parentMember.getPkSettleCountry());
CuMember newCuMember = saOrderHandle.packageSaveUser(orderParam, parentMember);
newCuMember.setPkId(cuMemberShare.getPkId());
newCuMember.setPkCreator(cuMemberShare.getPkId());
return newCuMember;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean onlinePaymentCallBack(Long pkMember, String orderCode) {

View File

@ -84,14 +84,14 @@
<select id="selectBaseConfigByType" resultMap="BaseResultMap">
select *
from AC_BASE_CONFIG b
from ac_base_config b
where b.del_flag = 0
and b.pk_country = #{pkCountry}
<if test="actType != null">
and b.act_type = #{actType}
</if>
<if test="atcModule != null">
and b.atc_module =#{atcModule}
and b.atc_module = #{atcModule}
</if>
and trunc(sysdate) between b.act_start_date and b.act_end_date
</select>

View File

@ -78,7 +78,6 @@
order by aw.order_amount desc
</otherwise>
</choose>
</select>
</mapper>

View File

@ -40,4 +40,63 @@
and r.upgrade_status = #{upgradeStatus}
</select>
<!-- 判断会员是否达标并且查询对应订单 -->
<select id="listRecomOrder" resultType="com.hzs.common.domain.sale.order.SaOrder">
select t.* from (
select so.*
from sa_order so
left join cu_member_level cml
on cml.pk_member = so.pk_member
and cml.pk_order = so.pk_id
left join bd_grade bg
on bg.pk_id = cml.new_level
where so.del_flag = 0
and so.order_status = 1
and so.order_type in (1, 2)
and so.pay_time >= #{startTime}
and #{endTime} >= so.pay_time
and so.pk_reference = #{pkMember}
and bg.grade_value >= (select grade_value from bd_grade where pk_id = #{pkGrade})
order by so.pay_time
) t
where #{num} >= rownum
</select>
<select id="queryList" resultType="com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO">
SELECT
abc.ACT_NAME,
cm.member_code,
cm.member_name,
BG.GRADE_NAME AS pkSettleGrade,
BGG.GRADE_NAME AS pkRecommendGrade,
abc.ACT_START_DATE,
abc.ACT_END_DATE,
arur.CREATION_TIME,
arur.UPGRADE_TIME
FROM
AC_RECOM_UPGRADE_RECORD arur
LEFT JOIN AC_BASE_CONFIG abc ON arur.PK_BASE_ID = abc.PK_ID
LEFT JOIN CU_MEMBER cm ON arur.pk_member = cm.PK_ID
LEFT JOIN BD_GRADE BG ON arur.PK_SETTLE_GRADE = BG.PK_ID
LEFT JOIN BD_GRADE BGG ON arur.PK_RECOMMEND_GRADE = BGG.PK_ID
WHERE arur.DEL_FLAG = 0
<if test="actName != null">
AND abc.ACT_NAME = #{actName}
</if>
<if test="memberCode != null">
AND cm.member_code = #{memberCode}
</if>
<if test="startActStartDate != null">
AND abc.ACT_START_DATE >= #{startActStartDate,javaType=DATE}
</if>
<if test="startActEndDate != null">
AND abc.ACT_START_DATE &lt;= #{startActEndDate,javaType=DATE}
</if>
<if test="endActStartDate != null">
AND abc.ACT_END_DATE >= #{endActStartDate,javaType=DATE}
</if>
<if test="endActEndDate != null">
AND abc.ACT_END_DATE &lt;= #{endActEndDate,javaType=DATE}
</if>
</select>
</mapper>

View File

@ -18,25 +18,16 @@
<result column="PK_UPGRADE_GRADE" property="pkUpgradeGrade"/>
</resultMap>
<select id="selectRuleConfig" resultMap="BaseResultMap">
<select id="listRuleConfig" resultMap="BaseResultMap">
select *
from AC_RECOM_UPGRADE_RULE_CONFIG u
from ac_recom_upgrade_rule_config u
where u.del_flag = 0
and u.pk_country = #{pkCountry}
and u.pk_base_id = #{pkBaseId}
and u.pk_settle_grade = #{pkSettleGrade}
and u.pk_recommend_grade &lt;= #{pkRecommendGrade}
and u.pk_settle_grade in (select m.pk_level
from AC_GOAL_MEMBER_CONFIG m
where m.del_flag = 0
and m.pk_country = #{pkCountry}
<if test="memberType != null">
and m.member_type = #{memberType}
<if test="pkCountry != null">
and u.pk_country = #{pkCountry}
</if>
and m.pk_base_id = #{pkBaseId})
order by u.creation_time desc
</select>
</mapper>

View File

@ -34,16 +34,4 @@
)
</update>
<select id="queryRepurSharRuleConfig" resultMap="AcRepurSharRuleConfigExt">
select ar.order_amount, ar.order_achieve, ar.ratio_value, ao.order_type, ac.pk_country
from ac_base_config ac
inner join ac_repur_shar_rule_config ar
on ac.pk_id = ar.pk_base_id
inner join ac_repur_shar_order_type ao
on ar.pk_id = ao.pk_rule_id
where ar.del_flag = 0
and ao.del_flag = 0
and ac.ACT_START_DATE &lt;= #{startDate, jdbcType=DATE}
and ac.ACT_END_DATE > #{endDate, jdbcType=DATE}
</select>
</mapper>

View File

@ -127,7 +127,7 @@ public class CuMemberTransferWhiteController extends BaseController {
@Log(module = EOperationModule.TRADE_CONFIG, business = EOperationBusiness.TRANSFER_ACCOUNT_WHITE, method = EOperationMethod.UPDATE)
@PostMapping("/update")
public AjaxResult updateTransferConfig(@RequestBody CuMemberTransferWhiteVO transferWhiteVO) {
CuMember cumember = iMemberServiceApi.queryMember(transferWhiteVO.getMemberCode()).getData();
CuMember cumember = iMemberServiceApi.getMember(transferWhiteVO.getMemberCode()).getData();
AjaxResult ajaxResult = parametersVerify(transferWhiteVO, cumember);
if ((Integer) ajaxResult.get(AjaxResult.CODE_TAG) == HttpStatus.ERROR) {
return ajaxResult;

View File

@ -223,11 +223,6 @@ public class EnumsInitController {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
//活动类型
for (EActType value : EActType.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
//发货方式
for (EDelivery value : EDelivery.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));

View File

@ -2,11 +2,9 @@ package com.hzs.system.sys.controller.manage;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONConfig;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.hzs.activity.base.IActivityApprovalServiceApi;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.constant.EnumsPrefixConstants;
@ -90,8 +88,6 @@ public class SysApprovalBusinessController extends BaseController {
@DubboReference
ICuAwardsControlServiceApi controlServiceApi;
@DubboReference
IActivityApprovalServiceApi iActivityApprovalServiceApi;
@DubboReference
IUpPolicyCurrencyServiceApi upPolicyCurrencyServiceApi;
@DubboReference
IUpdateExpireStopServiceApi updateExpireStopServiceApi;
@ -285,16 +281,6 @@ public class SysApprovalBusinessController extends BaseController {
approvalBusinessVO.setBusinessData(sysApprovalBusinessData.getBusinessData());
}
break;
case ACTIVITY_BUSINESS:
// 活动服务信息处理
R<?> activityR = iActivityApprovalServiceApi.queryApprovalData(EApprovalBusiness.getEnumByValue(approvalBusinessExt.getApprovalBusiness()), approvalBusinessExt.getBusinessCode(), SecurityUtils.getPkCountry());
if (activityR.isSuccess()) {
if (null != activityR.getData()) {
JSONConfig jsonConfig = JSONConfig.create().setDateFormat("yyyy-MM-dd HH:mm:ss");
approvalBusinessVO.setBusinessData(JSONUtil.toJsonStr(activityR.getData(), jsonConfig));
}
}
break;
default:
}
return AjaxResult.success(approvalBusinessVO);

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.hzs.activity.base.IActivityApprovalServiceApi;
import com.hzs.common.core.constant.SystemFieldConstants;
import com.hzs.common.core.constant.msg.DocumentMsgConstants;
import com.hzs.common.core.domain.R;
@ -79,8 +78,6 @@ public class ApprovalServiceImpl implements IApprovalService {
@DubboReference
INoticeAuditServiceApi iNoticeAuditServiceApi;
@DubboReference
IActivityApprovalServiceApi iActivityApprovalServiceApi;
@DubboReference
IApprovalPushInfo iApprovalPushInfo;
@DubboReference
IStatisticalLogServiceApi statisticalLogServiceApi;
@ -478,10 +475,6 @@ public class ApprovalServiceImpl implements IApprovalService {
// 公告站内信相关
resultR = iNoticeAuditServiceApi.noticeAuditProcess(approvalBusinessResultDTO);
break;
case ACTIVITY_BUSINESS:
// 活动相关处理
resultR = iActivityApprovalServiceApi.approvalCallback(approvalBusinessResultDTO);
break;
case CUSTOM_BUSINESS:
// 自定义签呈不需要进行后续业务操作
return null;

View File

@ -330,4 +330,5 @@ public class CacheConstants {
*/
public final static String AUTO_LOGIN = CACHE_PREFIX + "auth:login:";
public final static String TOP_30_ACTIVITY = CACHE_PREFIX + "top:30:activity:";
}

View File

@ -44,4 +44,13 @@ public class SysConstants {
*/
public static final List<Integer> NOT_BONUS_GRADE = Arrays.asList(EGrade.START_UP.getValue(), EGrade.HAI_FAN.getValue());
/**
* 2025.10.01 之前赠送等级后面不赠送了
*/
public static final Long GIFT_GRADE_TIME = 1759248000000L;
/**
* 2025.10.01 之前赠送等级后面不赠送了测试环境
*/
public static final Long GIFT_GRADE_TIME_TEST = 1758556800000L;
}

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -14,32 +13,37 @@ public enum EActType {
/**
* 商品赠品
*/
PRODUCT_GIFT(11, "商品赠品", 0, EnumsPrefixConstants.ACT_TYPE + "11"),
PRODUCT_GIFT(11, "商品赠品", 0),
/**
* 消费赠送
*/
CONSUMPTION_GIFT(12, "消费赠送", 0, EnumsPrefixConstants.ACT_TYPE + "12"),
CONSUMPTION_GIFT(12, "消费赠送", 0),
/**
* 直推赠送
*/
DIRECT_PUSH_GIFT(13, "直推赠送", 0, EnumsPrefixConstants.ACT_TYPE + "13"),
DIRECT_PUSH_GIFT(13, "直推赠送", 0),
/**
* 抽奖
*/
LOTTERY_DRAW(17, "抽奖", 0, EnumsPrefixConstants.ACT_TYPE + "17"),
LOTTERY_DRAW(17, "抽奖", 0),
/**
* 旅游活动
*/
TOURISM(22, "旅游活动", 0, EnumsPrefixConstants.ACT_TYPE + "22"),
TOURISM(22, "旅游活动", 0),
/**
* 会员消费赠送 活动
*/
MEMBER_CONSUMPTION(25, "会员消费赠送", 0, EnumsPrefixConstants.ACT_TYPE + "25"),
MEMBER_CONSUMPTION(25, "会员消费赠送", 0),
/**
* 直推升级
*/
RECOMMEND_UPGRADE(30, "直推升级", 0),
;
@ -55,8 +59,5 @@ public enum EActType {
* 是否启用0=,1= -- 来源EYesNo
*/
private final int enable;
/**
* 国际化翻译key值
*/
private final String key;
}

View File

@ -40,11 +40,6 @@ public enum EApprovalType {
*/
NOTICE_BUSINESS(5, "公告站内信"),
/**
* 活动相关处理
*/
ACTIVITY_BUSINESS(7, "活动相关处理"),
;
/**

View File

@ -94,4 +94,13 @@ public enum EGrade {
return null;
}
public static EGrade getGradeByIndex(int value){
for (EGrade eGrade : EGrade.values()) {
if (value == eGrade.index){
return eGrade;
}
}
return null;
}
}

View File

@ -254,6 +254,11 @@ public enum EOperationBusiness {
AC_RECOMMEEND_CONFIG("直推赠送"),
AC_DIRECT_PUSH_UPGRADE("直推升级"),
AC_DIRECT_PUSH_UPGRADE_LIST("直推升级数据"),
AC_WARES_RULE_CONFIG("商品赠送"),
AC_TOURISM_CONFIG("旅游活动"),

View File

@ -353,6 +353,10 @@ public enum EOperationModule {
AC_RECOMMEEND_CONFIG("直推赠送"),
AC_DIRECT_PUSH_UPGRADE("直推升级"),
AC_DIRECT_PUSH_UPGRADE_LIST("直推升级数据"),
AC_TOURISM_CONFIG("旅游活动"),
AC_WARES_RULE_CONFIG("商品赠送"),

View File

@ -3,15 +3,8 @@ package com.hzs.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 订单操作状态
*
* @Description:
* @Author: ljc
* @Time: 2023/4/27 11:14
* @Classname: EOrderOperateStatus
* @Package_name: com.hzs.common.core.enums
*/
@AllArgsConstructor
@Getter

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -14,27 +13,27 @@ public enum EPickType {
/**
* 关联 BS_PRODUCT
*/
PICK_PRODUCT(0, "提货产品", EnumsPrefixConstants.ACT_TYPE + "0"),
PICK_PRODUCT(0, "提货产品"),
/**
* 关联 BS_PRODUCT 一次全部提走
*/
PRIZE(1, "抽奖", EnumsPrefixConstants.ACT_TYPE + "1"),
PRIZE(1, "抽奖"),
/**
* 关联 AC_GIFT_CONFIG
*/
CONSUMPTION_GIFT(12, "消费赠送", EnumsPrefixConstants.ACT_TYPE + "12"),
CONSUMPTION_GIFT(12, "消费赠送"),
/**
* 关联 AC_GIFT_CONFIG
*/
DIRECT_PUSH_GIFT(13, "直推赠送", EnumsPrefixConstants.ACT_TYPE + "13"),
DIRECT_PUSH_GIFT(13, "直推赠送"),
/**
* 关联 AC_GIFT_CONFIG
*/
LOTTERY_DRAW(17, "抽奖", EnumsPrefixConstants.ACT_TYPE + "17"),
LOTTERY_DRAW(17, "抽奖"),
;
@ -46,10 +45,6 @@ public enum EPickType {
* 显示标签
*/
private final String label;
/**
* 国际化翻译key值
*/
private final String key;
/**
* 根据枚举值查询枚举

View File

@ -0,0 +1,84 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* 订单类型枚举类
*/
@AllArgsConstructor
@Getter
public enum ETop30Type {
/**
* 注册订单
*/
PEOPLE(1, "直推人数", "people"),
/**
* 升级订单
*/
AMOUNT(2, "直推金额", "amount")
;
/**
* 实际值
*/
private final int value;
/**
* 显示标签
*/
private final String label;
/**
* 显示标签
*/
private final String key;
/**
* 根据值返回枚举
*
* @param value
* @return
*/
public static ETop30Type getEnumByValue(int value) {
for (ETop30Type enums : ETop30Type.values()) {
if (enums.getValue() == value) {
return enums;
}
}
return null;
}
/**
* 根据值返回名称
*
* @param value
* @return
*/
public static String getLabelByValue(Integer value) {
if (null == value) {
return "";
}
for (ETop30Type enums : ETop30Type.values()) {
if (enums.getValue() == value) {
return enums.getLabel();
}
}
return "";
}
public static List<ETop30Type> getOrderTypeSpecial() {
List<ETop30Type> resultList = new ArrayList<>();
resultList.add(ETop30Type.PEOPLE);
resultList.add(ETop30Type.AMOUNT);
return resultList;
}
}

View File

@ -0,0 +1,98 @@
package com.hzs.common.core.utils;
/**
* 数据脱敏工具类
* 提供字符串脱敏功能可指定保留前几位和后几位字符
*/
public class DataMaskingUtil {
// 默认脱敏字符
private static final char DEFAULT_MASK_CHAR = '*';
/**
* 对字符串进行脱敏处理
* @param input 原始字符串
* @param keepPrefix 保留的前缀位数
* @param keepSuffix 保留的后缀位数
* @return 脱敏后的字符串
*/
public static String mask(String input, int keepPrefix, int keepSuffix) {
// 参数验证
if (input == null) {
return null;
}
// 处理边界情况
if (keepPrefix < 0 || keepSuffix < 0) {
throw new IllegalArgumentException("保留位数不能为负数");
}
int length = input.length();
// 如果字符串长度小于等于需要保留的位数之和直接返回原字符串
if (length <= keepPrefix + keepSuffix) {
return input;
}
// 构建StringBuilder用于高效拼接字符串
StringBuilder result = new StringBuilder(length);
// 添加前缀保留字符
result.append(input, 0, keepPrefix);
// 添加脱敏字符
int maskCount = length - keepPrefix - keepSuffix;
for (int i = 0; i < maskCount; i++) {
result.append(DEFAULT_MASK_CHAR);
}
// 添加后缀保留字符
result.append(input, length - keepSuffix, length);
return result.toString();
}
/**
* 对字符串进行脱敏处理可自定义脱敏字符
* @param input 原始字符串
* @param keepPrefix 保留的前缀位数
* @param keepSuffix 保留的后缀位数
* @param maskChar 自定义脱敏字符
* @return 脱敏后的字符串
*/
public static String mask(String input, int keepPrefix, int keepSuffix, char maskChar) {
// 参数验证
if (input == null) {
return null;
}
// 处理边界情况
if (keepPrefix < 0 || keepSuffix < 0) {
throw new IllegalArgumentException("保留位数不能为负数");
}
int length = input.length();
// 如果字符串长度小于等于需要保留的位数之和直接返回原字符串
if (length <= keepPrefix + keepSuffix) {
return input;
}
// 构建StringBuilder用于高效拼接字符串
StringBuilder result = new StringBuilder(length);
// 添加前缀保留字符
result.append(input, 0, keepPrefix);
// 添加脱敏字符
int maskCount = length - keepPrefix - keepSuffix;
for (int i = 0; i < maskCount; i++) {
result.append(maskChar);
}
// 添加后缀保留字符
result.append(input, length - keepSuffix, length);
return result.toString();
}
}

View File

@ -6,6 +6,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
@ -895,5 +896,58 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return LocalDate.parse(date, fmt);
}
/**
* 判断输入的年/月字符串是否超过当前月份
*
* @param yearMonthStr /月字符串格式为"yyyy/MM""2023/12"
* @return 如果输入的年月超过当前月份则返回true否则返回false
* @throws IllegalArgumentException 如果输入的字符串格式不正确
*/
public static boolean isYearMonthExceedCurrent(String yearMonthStr) {
// 参数校验
if (yearMonthStr == null || yearMonthStr.trim().isEmpty()) {
throw new IllegalArgumentException("年/月字符串不能为空");
}
try {
// 解析输入的年/月字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM");
YearMonth inputYearMonth = YearMonth.parse(yearMonthStr, formatter);
// 获取当前年月
YearMonth currentYearMonth = YearMonth.now();
// 比较输入年月和当前年月
// 如果输入年月大于当前年月则返回true表示超过当前月份
return inputYearMonth.isAfter(currentYearMonth);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("年/月字符串格式不正确,应为'yyyy/MM'格式,如'2023/12'", e);
}
}
/**
* 重载方法支持自定义日期格式
*
* @param yearMonthStr /月字符串
* @param pattern 日期格式"yyyy-MM""yyyyMM"
* @return 如果输入的年月超过当前月份则返回true否则返回false
* @throws IllegalArgumentException 如果输入参数不合法
*/
public static boolean isYearMonthExceedCurrent(String yearMonthStr, String pattern) {
if (pattern == null || pattern.trim().isEmpty()) {
throw new IllegalArgumentException("日期格式不能为空");
}
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
YearMonth inputYearMonth = YearMonth.parse(yearMonthStr, formatter);
YearMonth currentYearMonth = YearMonth.now();
return inputYearMonth.isAfter(currentYearMonth);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("年/月字符串格式不正确,无法使用模式'" + pattern + "'解析", e);
}
}
}

View File

@ -10,9 +10,6 @@ import lombok.experimental.Accessors;
/**
* 活动审批日志
*
* @author hzs
* @since 2023-04-22
*/
@Data
@Builder

View File

@ -41,7 +41,7 @@ public class AcBaseConfig extends BaseEntity {
private String actName;
/**
* 活动类型11=商品赠送 12=消费赠送 13=直推赠送 17=抽奖 24=升级权限赠送
* 活动类型11=商品赠送 12=消费赠送 13=直推赠送 17=抽奖 30=推荐升级
*/
@Transaction(transactionKey = EnumsPrefixConstants.ACT_TYPE)
@TableField("ACT_TYPE")

View File

@ -12,12 +12,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 消费买赠规则配置表
* </p>
*
* @author hzs
* @since 2023-04-20
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 消费赠送屏蔽配置表
* </p>
*
* @author hzs
* @since 2023-04-21
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -9,12 +9,7 @@ import java.io.Serializable;
import java.util.List;
/**
* @description: 业绩赠送配置
* @author: sui q
* @time: 2023/4/26 10:30
* @classname: AcConsumeRuleConfigExt
* @package_name: com.hzs.common.domain.activity.consume.ext
* version 1.0.0
* 业绩赠送配置
*/
@EqualsAndHashCode(callSuper = true)
@Data

View File

@ -9,12 +9,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 抽奖活动赠品配置
* </p>
*
* @author hzs
* @since 2023-04-21
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -9,12 +9,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 会员可抽奖次数记录
* </p>
*
* @author hzs
* @since 2023-04-21
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -9,12 +9,7 @@ import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* @description: 扩展类
* @author: sui q
* @time: 2023/4/27 15:07
* @classname: AcDrawRewardNumExt
* @package_name: com.hzs.common.domain.activity.draw.ext
* version 1.0.0
* 扩展类
*/
@EqualsAndHashCode(callSuper = true)
@Data

Some files were not shown because too many files have changed in this diff Show More