BottomServiceImpl.java 1.89 KB
Newer Older
licc's avatar
licc committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
package cn.wisenergy.service.app.impl;

import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.UserDataMapper;
import cn.wisenergy.mapper.UsersMapper;
import cn.wisenergy.model.app.UserData;
import cn.wisenergy.model.dto.UsersInfoDto;
import cn.wisenergy.model.vo.UserQueryVo;
import cn.wisenergy.service.app.BottomService;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
/**
 * @author 86187
 */
@Service
@Slf4j
public class BottomServiceImpl implements BottomService {
    @Resource
    private UsersMapper usersMapper;

    @Resource
    private UserDataMapper userDataMapper;


    @Override
    public R<Boolean> getBottom(UserQueryVo queryVo) {
        Long usersId = userDataMapper.getMaxId();
        log.info("开始计算用户id:" + usersId);
        if (null == usersId) {
            usersId = 0L;
        }
        Integer startNo = Math.toIntExact(usersId) - 1;
        Integer endNo = queryVo.getNumber();
        //获取所有用户数据
        List<UserData> list = userDataMapper.getBottom(startNo, endNo);
        if (!CollectionUtils.isEmpty(list)) {
            for (UserData userData : list) {
                //3、向下最深层级层级数、伞下人员总和
                UsersInfoDto userInfoDto = usersMapper.getLevelAndTotal(userData.getUserId());
                if (null != userInfoDto) {
                    if (null != userInfoDto.getBottom()) {
                        userData.setBottom(userInfoDto.getBottom() - userData.getRank());
                    }
                    userData.setTotalPeople(userInfoDto.getTotalPeople());
                }

                int count = userDataMapper.edit(userData);
                if (count == 0) {
                    break;
                }
            }

        }
        return R.ok(0, true);
    }
}