package com.zt.modules.sys.service; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.zt.common.constant.Constant; 
 | 
import com.zt.common.db.query.QueryFilter; 
 | 
import com.zt.common.exception.RenException; 
 | 
import com.zt.common.service.BaseService; 
 | 
import com.zt.common.utils.TreeUtils; 
 | 
import com.zt.core.context.UserContext; 
 | 
import com.zt.modules.sys.dao.SysJobDao; 
 | 
import com.zt.modules.sys.model.SysJob; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * SYS_JOB 
 | 
 * 
 | 
 * @author zt generator 
 | 
 * @since 1.0.0 2020-06-04 
 | 
 */ 
 | 
@Service 
 | 
public class SysJobService extends BaseService<SysJobDao, SysJob> { 
 | 
    @Autowired 
 | 
    private SysJobUserService sysJobUserService; 
 | 
  
 | 
    public List<SysJob> tree(QueryFilter queryFilter) { 
 | 
        List<SysJob> list = baseDao.getList(queryFilter.getParams()); 
 | 
        return TreeUtils.build(list); 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void update(SysJob entity) { 
 | 
        SysJob tmp = get(entity.getId()); 
 | 
  
 | 
        TreeUtils.updateValidate( 
 | 
                baseDao.selectList(new QueryWrapper<SysJob>().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) 
 | 
                        .lambda().eq(SysJob::getTenantId, UserContext.getUser().getTenantId())), entity, tmp); 
 | 
  
 | 
        baseDao.updateById(entity); 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void delete(Long id) { 
 | 
        // 判断是否有子职位 
 | 
        if (this.getChildPosts(id).size() > 1) { 
 | 
            throw new RenException("请先删除下级岗位"); 
 | 
        } 
 | 
  
 | 
        // 删除职位时,删除职位用户关系表 
 | 
        sysJobUserService.deleteByJobId(id); 
 | 
  
 | 
        // 删除 
 | 
        this.deleteLogic(id); 
 | 
    } 
 | 
  
 | 
    private List<SysJob> getChildPosts(Long id) { 
 | 
        return baseDao.selectList(new QueryWrapper<SysJob>().eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) 
 | 
                .lambda().eq(SysJob::getPid, id)); 
 | 
    } 
 | 
} 
 |