package cn.iocoder.yudao.module.crm.api.contract; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; import cn.iocoder.yudao.module.crm.api.contract.dto.CrmContractForSaleDTO; import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper; import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * CRM 合同 API 实现类 * * @author 超级管理员 */ @RestController @RequestMapping(CrmContractApi.PREFIX) @Validated public class CrmContractApiImpl implements CrmContractApi { @Resource @Lazy // 延迟加载,避免循环依赖 private CrmContractService contractService; @Resource private CrmContractMapper contractMapper; @Resource private CrmContractProductMapper contractProductMapper; @Override public CommonResult getContractForSaleByNo(String no) { CrmContractDO contract = contractMapper.selectByNoForUpdate(no); if (contract == null) return success(null); CrmContractForSaleDTO result = BeanUtils.toBean(contract, CrmContractForSaleDTO.class); result.setItems(BeanUtils.toBean(contractProductMapper.selectListByContractId(contract.getId()), CrmContractForSaleDTO.Item.class)); return success(result); } @Override public CommonResult updateContractStatus(Long id, Integer status) { contractService.updateContractStatus(id, status); return success(true); } @Override public CommonResult updateContractStatusByOrderId(Long orderId, Integer status) { contractService.updateContractStatusByOrderId(orderId, status); return success(true); } }