UserDataServiceImpl.java 3.94 KB
package cn.wisenergy.service.app.impl;

import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.Actives;
import cn.wisenergy.model.app.UserData;
import cn.wisenergy.model.dto.UserDto;
import cn.wisenergy.model.dto.UsersInfoDto;
import cn.wisenergy.model.vo.UserQueryVo;
import cn.wisenergy.service.Manager.UserDataManger;
import cn.wisenergy.service.app.UserDataService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 86187
 */
@Service
@Slf4j
public class UserDataServiceImpl implements UserDataService {
    @Resource
    private UsersMapper usersMapper;

    @Resource
    private ActivesMapper activesMapper;

    @Resource
    private UserRechargeMapper userRechargeMapper;

    @Resource
    private UserWithdrawsMapper withdrawsMapper;

    @Resource
    private UsdtOrderDetailsMapper orderDetailsMapper;

    @Resource
    private UserDataManger userDataManger;

    @Resource
    private UserDataMapper userDataMapper;


    @Override
    public R<Boolean> addBatch(UserQueryVo queryVo) {

        //获取所有用户数据
        List<UserDto> userDtos = usersMapper.getAllUserData(queryVo.getStartNo(), queryVo.getEndNo());
        if (CollectionUtils.isEmpty(userDtos)) {
            return R.ok(1, false);
        }

        List<UserData> list = new ArrayList<>();
        for (UserDto userDto : userDtos) {
            Long userId = userDto.getUserId();
            UserData userData = new UserData();

            //1、用户基本信息
            userData.setUserId(userDto.getUserId());
            userData.setPhone(userDto.getPhone());
            userData.setRank(userDto.getRank());

            //2、用户身份、电话信息
            Actives actives = activesMapper.getByUserId(userId);
            if (null != actives) {
                userData.setIdNumber(actives.getIdNumber());
                userData.setRealName(actives.getRealName());
            }

            //3、向下最深层级层级数、伞下人员总和
            UsersInfoDto userInfoDto = usersMapper.getLevelAndTotal(userId);
            if (null != userInfoDto) {
                if (null != userInfoDto.getBottom()) {
                    userData.setBottom(userInfoDto.getBottom() - userDto.getRank());
                }
                userData.setTotalPeople(userInfoDto.getTotalPeople());
            }

            //4、充值总额
            Double totalRecharge = userRechargeMapper.getTotalRecharge(userId);
            userData.setTotalRecharge(totalRecharge);

            //5、提现总额
            Double totalWithdrawal = withdrawsMapper.getTotalWithdrawal(userId);
            userData.setTotalWithdrawal(totalWithdrawal);


            //6、otc卖出总额
            Double buyTotal = orderDetailsMapper.getBuyTotal(userId);
            userData.setBuyTotal(buyTotal);


            //7、otc买入总额
            Double saleTotal = orderDetailsMapper.getSaleTotal(userId);
            userData.setSaleTotal(saleTotal);

            //8、充币地址
            String receiveAddr = userRechargeMapper.getReceiveAddr(userId);
            userData.setReceiveAddr(receiveAddr);
            list.add(userData);
        }

        //写入数据库
        boolean bool = userDataManger.saveBatchUserData(list);
        if (!bool) {
            return R.ok(1, false);
        }
        return R.ok(0, true);
    }

    @Override
    public R<List<Long>> getUserIds(Integer startNo, Integer endNo) {

        List<Long> userIds = usersMapper.getUserIds(startNo, endNo);
        List<Long> list = new ArrayList<>();
        for (Long userId : userIds) {
            //判断是否存在统计数据
            Long id = userDataMapper.getUserId(userId);
            if (null == id) {
                list.add(userId);
            }
        }
        return R.ok(list);
    }
}