package cn.newfeifan.mall.module.distri.service.integral;

import cn.newfeifan.mall.module.distri.enums.CaclEnum;

/**
 * 推荐用户积分 Service 接口
 *
 * @author 非繁人
 */
public interface IntegralService {

//    /**
//     * 创建推荐用户积分
//     *
//     * @param createReqVO 创建信息
//     * @return 编号
//     */
//    Long createIntegral(@Valid IntegralSaveReqVO createReqVO);
//
//    /**
//     * 更新推荐用户积分
//     *
//     * @param updateReqVO 更新信息
//     */
//    void updateIntegral(@Valid IntegralSaveReqVO updateReqVO);
//
//    /**
//     * 删除推荐用户积分
//     *
//     * @param id 编号
//     */
//    void deleteIntegral(Long id);
//
//    /**
//     * 获得推荐用户积分
//     *
//     * @param id 编号
//     * @return 推荐用户积分
//     */
//    IntegralDO getIntegral(Long id);
//
//    /**
//     * 获得推荐用户积分分页
//     *
//     * @param pageReqVO 分页查询
//     * @return 推荐用户积分分页
//     */
//    PageResult<IntegralDO> getIntegralPage(IntegralPageReqVO pageReqVO);
//
//    /**
//     * 根据用户ID查询是否有钱包
//     * @param descendant
//     * @return
//     */
//    IntegralDO selectByUser(Long descendant);


    /**
     * 修改用户积分
     *
     * @param userId 要修改积分的用户
     * @param caclEnum 导致积分变化的事件类型枚举
     * @param amount 用户积分变化金额，可为负数
     * @param freezeAmount 用户冻结积分变化金额，可为负数
     * @return 返回是否执行成功。执行失败，通常是就是用户积分不足，没积分抵扣
     */
    Boolean updateUserIntegral(Long userId, CaclEnum caclEnum, Long amount, Long freezeAmount,
                               Long tradeOrderId,
                               String orderNum
                               );

//    /**
//     * 修改用户身价
//     * @param userId 用户ID
//     * @param socialStatusUpdateEnum 身价变动类别
//     * @param socialStatusPoint 身价变化值
//     * @param ObjectId 导致身价变动的对应业务对象ID，如订单ID、收藏记录ID、新注册用户ID等
//     * @return 升级后的身价名称，如果返回null，表明没升级
//     */
//    String updateUserSocialStatus(Long userId, SocialStatusUpdateEnum socialStatusUpdateEnum, Integer socialStatusPoint,
//                                   Long ObjectId);
}