| package com.mzl.flower.service.flower; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.mzl.flower.config.security.SecurityUtils; | 
| import com.mzl.flower.dto.request.flower.*; | 
| import com.mzl.flower.dto.response.flower.FlowerMarkupSpDTO; | 
| import com.mzl.flower.dto.response.flower.FlowerMarkupSpListDTO; | 
| import com.mzl.flower.entity.flower.FlowerMarkupSp; | 
| import com.mzl.flower.entity.partner.Partner; | 
| import com.mzl.flower.mapper.flower.FlowerMarkupSpMapper; | 
| import com.mzl.flower.service.BaseService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.math.BigDecimal; | 
| import java.util.List; | 
|   | 
| @Slf4j | 
| @Service | 
| @Transactional | 
| public class FlowerMarkupSpService extends BaseService { | 
|   | 
|     @Autowired | 
|     private FlowerMarkupSpMapper spMapper; | 
|   | 
|     public void saveMarkupSp(FlowerMarkupSpSaveDTO dto){ | 
|         FlowerMarkupSp sp = spMapper.selectOne(new QueryWrapper<FlowerMarkupSp>() | 
|                 .eq("partner_id", dto.getPartnerId()).eq("flower_id", dto.getFlowerId())); | 
|         if(sp == null){ | 
|             sp = new FlowerMarkupSp(); | 
|             sp.setFlowerId(dto.getFlowerId()); | 
|             sp.setFee(dto.getFee()); | 
|             sp.setPartnerId(dto.getPartnerId()); | 
|             sp.create(SecurityUtils.getUserId()); | 
|             spMapper.insert(sp); | 
|         } else { | 
|             sp.setFee(dto.getFee()); | 
|             sp.update(SecurityUtils.getUserId()); | 
|             spMapper.updateById(sp); | 
|         } | 
|   | 
|         markupCacheClient.addMarkupSp(dto.getPartnerId(), dto.getFlowerId(), sp); | 
|     } | 
|   | 
|     public void saveMarkupSpBatch(FlowerMarkupSpSaveBatchDTO dto){ | 
|         List<Long> flowerIds = dto.getFlowerIds(); | 
|         if(flowerIds != null && flowerIds.size() > 0){ | 
|             for(Long flowerId : flowerIds){ | 
|                 FlowerMarkupSpSaveDTO dt = new FlowerMarkupSpSaveDTO(); | 
|                 dt.setFlowerId(flowerId); | 
|                 dt.setPartnerId(dto.getPartnerId()); | 
|                 dt.setFee(dto.getFee()); | 
|   | 
|                 saveMarkupSp(dt); | 
|             } | 
|         } | 
|     } | 
|   | 
|     public FlowerMarkupSpDTO getMarkupSp(Long flowerId){ | 
|         FlowerMarkupSpDTO dto = new FlowerMarkupSpDTO(); | 
|         dto.setFlowerId(flowerId); | 
|   | 
|         Partner s = getCurrentPartner(); | 
|         Long sId = s.getId(); | 
|         FlowerMarkupSp sp = spMapper.selectOne(new QueryWrapper<FlowerMarkupSp>() | 
|                 .eq("partner_id", sId).eq("flower_id", flowerId)); | 
|   | 
|         dto.setFee(sp != null ? sp.getFee() : null); | 
|   | 
|         return dto; | 
|     } | 
|   | 
|     public Page<FlowerMarkupSpListDTO> selectMarkupSpFlowerList(Page page, FlowerMarkupSpQueryDTO dto){ | 
|         List<FlowerMarkupSpListDTO> ll = spMapper.selectMarkupSpFlowerList(page, dto.getPartnerId(), dto); | 
|         if(ll != null && ll.size() > 0){ | 
|             for(FlowerMarkupSpListDTO ss : ll){ | 
|                 ss.setPrice(getFinalPriceForPartner(dto.getPartnerId(), ss.getCategory(), ss.getFlowerId(), ss.getPrice(), ss.getLevel())); | 
|                 BigDecimal fee = ss.getFee(); | 
|                 if (fee == null) { | 
|                     fee = BigDecimal.ZERO; | 
|                 } | 
|                 ss.setSellPrice(ss.getPrice().add(fee)); | 
|             } | 
|         } | 
|   | 
|         page.setRecords(ll); | 
|         return page; | 
|     } | 
|   | 
|     public Page<FlowerMarkupSpListDTO> selectMarkupSpList(Page page, FlowerMarkupSpQueryDTO dto){ | 
|   | 
|         List<FlowerMarkupSpListDTO> ll = spMapper.selectMarkupSpList(page, dto.getPartnerId(), dto); | 
|         if(ll != null && ll.size() > 0){ | 
|             for(FlowerMarkupSpListDTO ss : ll){ | 
|                 ss.setPrice(getFinalPriceForPartner(dto.getPartnerId(), ss.getCategory(), ss.getFlowerId(), ss.getPrice(), ss.getLevel())); | 
|                 BigDecimal fee = ss.getFee(); | 
|                 if (fee == null) { | 
|                     fee = BigDecimal.ZERO; | 
|                 } | 
|                 ss.setSellPrice(ss.getPrice().add(fee)); | 
|             } | 
|         } | 
|   | 
|         page.setRecords(ll); | 
|         return page; | 
|     } | 
|   | 
|     public void deleteMarkupSp(Long flowerId){ | 
|         Partner s = getCurrentPartner(); | 
|         Long sId = s.getId(); | 
|         spMapper.delete(new QueryWrapper<FlowerMarkupSp>() | 
|                 .eq("partner_id", sId).eq("flower_id", flowerId)); | 
|   | 
|         markupCacheClient.deleteMarkupSp(sId, flowerId); | 
|     } | 
|   | 
| } |