package com.kxs.user.biz.service.impl;
import java.math.BigDecimal;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kxs.common.core.constant.SecurityConstants;
import com.kxs.common.core.util.R;
import com.kxs.stat.api.feign.RemoteKxsStatService;
import com.kxs.stat.api.model.KxsUserTrade;
import com.kxs.user.api.emun.UserLevel;
import com.kxs.user.api.model.KxsUser;
import com.kxs.user.biz.mapper.KxsUserMapper;
import com.kxs.user.biz.mapper.KxsUserRealLevelMapper;
import com.kxs.user.api.model.KxsUserRealLevel;
import com.kxs.user.biz.service.KxsUserRealLevelService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;

/**
 * 用户当前真实等级表(KxsUserRealLevel)表服务实现类
 *
 * @author 系统
 * @since 2024-05-08 14:06:37
 */
@Service("kxsUserRealLevelService")
@RequiredArgsConstructor
public class KxsUserRealLevelServiceImpl extends ServiceImpl<KxsUserRealLevelMapper, KxsUserRealLevel> implements KxsUserRealLevelService {
    private final KxsUserMapper kxsUserMapper;
    @Override
    public void userRealLevel(KxsUserRealLevel kxsUserRealLevel) {
        Long userId = kxsUserRealLevel.getUserId();
        //构造月份
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
        String month = now.format(formatter);
        //查询记录
        KxsUserRealLevel kxsUserRealLevelSelect = baseMapper.selectOne(Wrappers.<KxsUserRealLevel>query().lambda().eq(KxsUserRealLevel::getUserId, userId).eq(KxsUserRealLevel::getMonth, month));
        if (kxsUserRealLevelSelect == null){
            //如果为空则增加pid后增加数据
            KxsUser kxsUser = kxsUserMapper.selectById(userId);
            if (kxsUser != null){
                kxsUserRealLevel.setPid(Long.valueOf(kxsUser.getPid()));
            }
            baseMapper.insert(kxsUserRealLevel);
        }else {
            //如果不为空则修改修改时间和职级
            kxsUserRealLevelSelect.setLevel(kxsUserRealLevel.getLevel());
            kxsUserRealLevelSelect.setUpdateTime(LocalDateTime.now());
            baseMapper.updateById(kxsUserRealLevelSelect);
        }
    }

}

