Compare commits
	
		
			16 Commits
		
	
	
		
			df2e775bbb
			...
			970e37cf05
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						970e37cf05 | |
| 
							
							
								
								 | 
						6314e51dcf | |
| 
							
							
								
								 | 
						dce78bb2f0 | |
| 
							
							
								
								 | 
						490c523822 | |
| 
							
							
								
								 | 
						0b0ebc93f9 | |
| 
							
							
								
								 | 
						9c8b9c3634 | |
| 
							
							
								
								 | 
						3314fdb8d9 | |
| 
							
							
								
								 | 
						9563a3a86b | |
| 
							
							
								
								 | 
						c2e90e1587 | |
| 
							
							
								
								 | 
						9e212330ba | |
| 
							
							
								
								 | 
						1eae26d056 | |
| 
							
							
								
								 | 
						851a50e867 | |
| 
							
							
								
								 | 
						9dfb0eda92 | |
| 
							
							
								
								 | 
						ab2f87992c | |
| 
							
							
								
								 | 
						77c389c85e | |
| 
							
							
								
								 | 
						321c458410 | 
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询全部
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 调用调用直推升级接口
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询会员的安置位置
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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为设置numberOfPeople,2为设置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));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
            // 判断活动状态
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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> {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,6 @@ public interface AcBaseConfigMapper extends BaseMapper<AcBaseConfig> {
 | 
			
		|||
     * 根据活动类型查询基本配置
 | 
			
		||||
     *
 | 
			
		||||
     * @param baseConfigVO 基本活动配置
 | 
			
		||||
     * @return List<AcBaseConfig>
 | 
			
		||||
     */
 | 
			
		||||
    List<AcBaseConfig> selectBaseConfigByType(AcBaseConfigVO baseConfigVO);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新审核修改记录
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,9 +17,6 @@ import java.util.List;
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * 活动基本配置表 服务实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-20
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
public class AcBaseConfigServiceImpl extends ServiceImpl<AcBaseConfigMapper, AcBaseConfig> implements IAcBaseConfigService {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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> {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,9 +43,6 @@ import java.util.List;
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * 消费买赠规则配置表 服务实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-20
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存活动审批日志信息
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改已购买总次数 (已购买次数)
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 会员提货列表
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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, "直推升级数据导出");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 直推赠送查看详情
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据活动配置主键删除推荐升级配置
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    /**
 | 
			
		||||
     * 活动基本配置主键
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存活动审批日志信息
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,7 +78,6 @@
 | 
			
		|||
                order by aw.order_amount desc
 | 
			
		||||
            </otherwise>
 | 
			
		||||
        </choose>
 | 
			
		||||
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 <= #{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 <= #{endActEndDate,javaType=DATE}
 | 
			
		||||
        </if>
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 <= #{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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 <= #{startDate, jdbcType=DATE}
 | 
			
		||||
          and ac.ACT_END_DATE > #{endDate, jdbcType=DATE}
 | 
			
		||||
    </select>
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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()));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:";
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,11 +40,6 @@ public enum EApprovalType {
 | 
			
		|||
     */
 | 
			
		||||
    NOTICE_BUSINESS(5, "公告站内信"),
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 活动相关处理
 | 
			
		||||
     */
 | 
			
		||||
    ACTIVITY_BUSINESS(7, "活动相关处理"),
 | 
			
		||||
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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("旅游活动"),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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("商品赠送"),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据枚举值查询枚举
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,9 +10,6 @@ import lombok.experimental.Accessors;
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * 活动审批日志
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-22
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,12 +12,7 @@ import lombok.EqualsAndHashCode;
 | 
			
		|||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 消费买赠规则配置表
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-20
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode;
 | 
			
		|||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 消费赠送屏蔽配置表
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-21
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,12 +9,7 @@ import lombok.*;
 | 
			
		|||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 抽奖活动赠品配置
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-21
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,12 +9,7 @@ import lombok.*;
 | 
			
		|||
import lombok.experimental.Accessors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>
 | 
			
		||||
 * 会员可抽奖次数记录
 | 
			
		||||
 * </p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author hzs
 | 
			
		||||
 * @since 2023-04-21
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
		Loading…
	
		Reference in New Issue