郑永安
2023-06-19 2fcd97552d16718cc7997629fd637a73a5a4483f
src/main/java/com/gk/firework/Service/ServiceImpl/UserServiceImpl.java
对比新文件
@@ -0,0 +1,232 @@
package com.gk.firework.Service.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gk.firework.Config.Oauth2.OauthRole;
import com.gk.firework.Domain.DTO.JiangWaiDeadlineReqDTO;
import com.gk.firework.Domain.Exception.BusinessException;
import com.gk.firework.Domain.RoleInfo;
import com.gk.firework.Domain.UserDeadlineOperationLog;
import com.gk.firework.Domain.UserInfo;
import com.gk.firework.Domain.Utils.PageInfo;
import com.gk.firework.Domain.Utils.StringUtils;
import com.gk.firework.Domain.Vo.UserVo;
import com.gk.firework.Mapper.UserInfoMapper;
import com.gk.firework.Service.RoleService;
import com.gk.firework.Service.UserDeadlineService;
import com.gk.firework.Service.UserService;
import com.spire.xls.BubbleSizeType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Service("UserService")
public class UserServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserService {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Autowired
    private RoleService roleService;
    @Autowired
    private UserDeadlineService userDeadlineService;
    @Override
    public UserVo selectByLoginname(String username) {
        return userInfoMapper.selectByLoginname(username);
    }
    @Override
    public List<OauthRole> selectRoleByUser(Integer userId) {
        return userInfoMapper.selectRoleByUser(userId);
    }
    @Override
    public void selectUserDataGrid(PageInfo pageInfo) {
        Page<UserVo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
        List<OrderItem> orderItems = new ArrayList<>();
        OrderItem orderItem = new OrderItem();
        if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
            orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
            orderItem.setColumn(pageInfo.getSort());
        }else {
            orderItem.setAsc(false);
            orderItem.setColumn("createddate");
        }
        orderItems.add(orderItem);
        page.setOrders(orderItems);
        List<UserVo> list = userInfoMapper.selectUserDataGrid(page,pageInfo.getCondition());
        for (UserVo userVo : list) {
            List<RoleInfo> roleInfoList = roleService.selectRoleByUser(userVo.getId());
            userVo.setRoles(roleInfoList);
        }
        pageInfo.setResult(list);
        pageInfo.setTotalCount(page.getTotal());
    }
    @Override
    public UserInfo selectByUser(String username) {
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername(username);
        userInfo.setIsdel((byte)0);
        QueryWrapper<UserInfo> wrapper = new QueryWrapper<> (userInfo);
        return userInfoMapper.selectOne(wrapper);
    }
    @Override
    public List<UserInfo> selectUserInfo(Long id, String username) {
        return userInfoMapper.selectUserInfo(id,username);
    }
    @Override
    public void deleteOneByCompanyId(Long companyId) {
        userInfoMapper.deleteOneByCompanyId(companyId);
    }
    @Override
    public UserInfo selectOneByCompanyId(Long companyId) {
        LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(UserInfo::getCompanyid, companyId)
                .eq(UserInfo::getIsdel,(byte)0);
        return userInfoMapper.selectOne(queryWrapper);
    }
    @Override
    public boolean checkUserById(String userId) {
        if (StringUtils.isBlank(userId)){
            return false;
        }
        UserInfo userInfo = userInfoMapper.selectById(userId);
        return userInfo != null;
    }
    @Override
    public UserInfo selectSupervise(String province, String city, String district, String street, String committee) {
        return userInfoMapper.selectSupervise(province, city, district, street, committee);
    }
    @Override
    public UserVo selectUserVoByName(String username) {
        return userInfoMapper.selectUserVoByName(username);
    }
    /**
    * @Description: 根据企业id查找用户和终端机用户
    * @date 2021/5/13 19:03
    */
    @Override
    public List<UserInfo> selectByCompanyId(Long id,int isdel) {
        LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(UserInfo::getCompanyid, id)
                .eq(UserInfo::getIsdel,(byte)isdel);
        return userInfoMapper.selectList(queryWrapper);
    }
    @Override
    public void deleteById(Long id) {
        LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(UserInfo::getIsdel, (byte) 1)
                .eq(UserInfo::getId, id);
        this.update(updateWrapper);
    }
    @Override
    public void recoverOneById(Long id) {
        LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(UserInfo::getIsdel, (byte) 0)
                .eq(UserInfo::getId, id);
        this.update(updateWrapper);
    }
    @Override
    public List<UserInfo> selectByCompany(String company) {
        LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(UserInfo::getCompany, company).eq(UserInfo::getIsdel,(byte)0);
        return userInfoMapper.selectList(queryWrapper);
    }
    @Override
    public void updateCodeByCompany(String company, String code) {
        LambdaUpdateWrapper<UserInfo> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(UserInfo::getCode, code)
                .eq(UserInfo::getCompany, company)
                .eq(UserInfo::getIsdel,(byte)0);
        this.update(updateWrapper);
    }
    @Override
    @Transactional
    public void updateDeadline(JiangWaiDeadlineReqDTO reqDTO, UserInfo user) {
        if (reqDTO.getUid() == null || reqDTO.getDeadline() == null) {
            throw new BusinessException("入参为空");
        }
        UserInfo userInfo = this.getById(reqDTO.getUid());
        if (userInfo == null || userInfo.getIsdel() == 1) {
            throw new BusinessException("用户不存在");
        }
        if (reqDTO.getDeadline().before(new Date())) {
            throw new BusinessException("选择截止时间需要在今日之后");
        }
        if (user.getType() == null || user.getType() != 1) {
            throw new BusinessException("当前操作人无权操作");
        }
        // 判断修改企业类型
        if (userInfo.getIssale() == 1) {
            throw new BusinessException("操作用户类型错误,需为非销售用户");
        }
        // 数据得有companynumber 和 companyid  =>确定他不是监管部门
        if (StringUtils.isBlank(userInfo.getCompanynumber()) || userInfo.getCompanyid() == null) {
            throw new BusinessException("用户企业类型非法,只能修改企业信息");
        }
        Date deadline = reqDTO.getDeadline();
        Calendar instance = Calendar.getInstance();
        instance.setTime(deadline);
        instance.set(Calendar.HOUR_OF_DAY,23);
        instance.set(Calendar.MINUTE,59);
        instance.set(Calendar.SECOND,59);
        //exc
        // 根据 companyid 修改 会修改 销售端和 非销售端 两条数据
        int i = userInfoMapper.updateDeadlineByCompanyId(userInfo.getCompanyid(), instance.getTime());
        if (i == 0) {
            throw new BusinessException("数据未发生改变");
        }
        if (i != 2) {
            throw new BusinessException("数据修改失败,请联系管理员");
        }
        UserDeadlineOperationLog log = new UserDeadlineOperationLog();
        log.setGmtCreate(new Date());
        log.setOperator(user.getUsername());
        log.setOperatorUid(user.getId());
        log.setToUname(userInfo.getUsername());
        log.setToUid(userInfo.getId());
        log.setVal(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(instance.getTime()));
        boolean save = userDeadlineService.save(log);
        if (!save) {
            throw new BusinessException("记录保存失败,请联系管理员");
        }
    }
    @Override
    public void updateDeadline2NullByComapnyId(Long companyid) {
        if (companyid == null) {
            throw new BusinessException("系统入参为空");
        }
        userInfoMapper.updateDeadline2NullByComapnyId(companyid);
    }
}