package com.doumee.service.business.impl; 
 | 
  
 | 
import com.doumee.core.constants.Constants; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.model.LoginUserInfo; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.business.ReceiveWeightMapper; 
 | 
import com.doumee.dao.business.model.Category; 
 | 
import com.doumee.dao.business.model.ReceiveWeight; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.ReceiveWeightService; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import org.apache.shiro.SecurityUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 接单权重配置表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2025/07/09 12:00 
 | 
 */ 
 | 
@Service 
 | 
public class ReceiveWeightServiceImpl implements ReceiveWeightService { 
 | 
  
 | 
    @Autowired 
 | 
    private ReceiveWeightMapper receiveWeightMapper; 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {Exception.class,BusinessException.class}) 
 | 
    public Integer create(ReceiveWeight receiveWeight) { 
 | 
        if(Objects.isNull(receiveWeight) 
 | 
            || Objects.isNull(receiveWeight.getReceiveMin()) 
 | 
            || Objects.isNull(receiveWeight.getReceiveMax()) 
 | 
            || Objects.isNull(receiveWeight.getLevel()) 
 | 
            || Objects.isNull(receiveWeight.getDelayTime()) 
 | 
            || receiveWeight.getLevel() < 1 || receiveWeight.getLevel() > 10 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        receiveWeight.setCreateTime(new Date()); 
 | 
        receiveWeight.setCreateUser(loginUserInfo.getId()); 
 | 
        receiveWeight.setUpdateTime(receiveWeight.getCreateTime()); 
 | 
        receiveWeight.setUpdateUser(loginUserInfo.getId()); 
 | 
        receiveWeight.setDeleted(Constants.ZERO); 
 | 
        //查询优先级是否已存在 
 | 
        if(receiveWeightMapper.selectCount(new QueryWrapper<ReceiveWeight>().lambda() 
 | 
                .eq(ReceiveWeight::getDeleted,Constants.ZERO).eq(ReceiveWeight::getLevel,receiveWeight.getLevel()))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"优先级已存在"); 
 | 
        } 
 | 
        receiveWeightMapper.insert(receiveWeight); 
 | 
        return receiveWeight.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        receiveWeightMapper.update(new UpdateWrapper<ReceiveWeight>().lambda().set(ReceiveWeight::getDeleted,Constants.ONE).eq(ReceiveWeight::getId,id)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(ReceiveWeight receiveWeight) { 
 | 
        UpdateWrapper<ReceiveWeight> deleteWrapper = new UpdateWrapper<>(receiveWeight); 
 | 
        receiveWeightMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        receiveWeightMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {Exception.class,BusinessException.class}) 
 | 
    public void updateById(ReceiveWeight receiveWeight) { 
 | 
        if(Objects.isNull(receiveWeight) 
 | 
                || Objects.isNull(receiveWeight.getId()) 
 | 
                || Objects.isNull(receiveWeight.getReceiveMin()) 
 | 
                || Objects.isNull(receiveWeight.getReceiveMax()) 
 | 
                || Objects.isNull(receiveWeight.getLevel()) 
 | 
                || Objects.isNull(receiveWeight.getDelayTime()) 
 | 
                || receiveWeight.getLevel() < 1 || receiveWeight.getLevel() > 10 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        receiveWeight.setUpdateTime(receiveWeight.getCreateTime()); 
 | 
        receiveWeight.setUpdateUser(loginUserInfo.getId()); 
 | 
        receiveWeight.setDeleted(Constants.ZERO); 
 | 
        //查询优先级是否已存在 
 | 
        if(receiveWeightMapper.selectCount(new QueryWrapper<ReceiveWeight>().lambda().ne(ReceiveWeight::getId,receiveWeight.getId()) 
 | 
                .eq(ReceiveWeight::getDeleted,Constants.ZERO).eq(ReceiveWeight::getLevel,receiveWeight.getLevel()))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"优先级已存在"); 
 | 
        } 
 | 
        receiveWeightMapper.updateById(receiveWeight); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<ReceiveWeight> receiveWeights) { 
 | 
        if (CollectionUtils.isEmpty(receiveWeights)) { 
 | 
            return; 
 | 
        } 
 | 
        for (ReceiveWeight receiveWeight: receiveWeights) { 
 | 
            this.updateById(receiveWeight); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public ReceiveWeight findById(Integer id) { 
 | 
        return receiveWeightMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public ReceiveWeight findOne(ReceiveWeight receiveWeight) { 
 | 
        QueryWrapper<ReceiveWeight> wrapper = new QueryWrapper<>(receiveWeight); 
 | 
        return receiveWeightMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<ReceiveWeight> findList(ReceiveWeight receiveWeight) { 
 | 
        QueryWrapper<ReceiveWeight> wrapper = new QueryWrapper<>(receiveWeight); 
 | 
        return receiveWeightMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<ReceiveWeight> findPage(PageWrap<ReceiveWeight> pageWrap) { 
 | 
        IPage<ReceiveWeight> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<ReceiveWeight> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        queryWrapper.selectAll(ReceiveWeight.class) 
 | 
                .selectAs(SystemUser::getRealname,ReceiveWeight::getUpdateUserName) 
 | 
                .leftJoin(SystemUser.class,SystemUser::getId,ReceiveWeight::getUpdateUser) 
 | 
                .eq(ReceiveWeight::getDeleted,Constants.ZERO) 
 | 
                .orderByDesc(ReceiveWeight::getLevel); 
 | 
        PageData<ReceiveWeight> result =PageData.from(receiveWeightMapper.selectJoinPage(page, ReceiveWeight.class,queryWrapper)); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(ReceiveWeight receiveWeight) { 
 | 
        QueryWrapper<ReceiveWeight> wrapper = new QueryWrapper<>(receiveWeight); 
 | 
        return receiveWeightMapper.selectCount(wrapper); 
 | 
    } 
 | 
} 
 |