package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.sales.mapper.BusinessDescriptionMapper; import com.ruoyi.sales.pojo.BusinessDescription; import com.ruoyi.sales.pojo.BusinessOpportunity; import com.ruoyi.sales.service.BusinessOpportunityService; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import io.jsonwebtoken.lang.Collections; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author :yys * @date : 2025/12/12 9:29 */ @RestController @RequestMapping("/businessOpportunity") @Api(tags = "商机管理") public class BusinessOpportunityController extends BaseController { @Autowired private BusinessOpportunityService businessOpportunityService; @Autowired private BusinessDescriptionMapper BusinessDescriptionMapper; @Autowired private CommonFileServiceImpl commonFileService; @GetMapping("/listPage") @ApiOperation("商机列表") public AjaxResult listPage(Page page, BusinessOpportunity businessOpportunity) { IPage businessOpportunityIPage = businessOpportunityService.listPage(page, businessOpportunity); businessOpportunityIPage.getRecords().forEach(item -> { item.setBusinessCommonFiles(commonFileService.getFileList(item.getId(),9)); item.setBusinessDescription(BusinessDescriptionMapper.selectList(Wrappers.lambdaQuery(BusinessDescription.class) .eq(BusinessDescription::getBusinessOpportunityId, item.getId()))); }); return AjaxResult.success(businessOpportunityIPage); } @PostMapping("/add") @ApiOperation("添加商机") @Log(title = "商机管理-添加商机", businessType = BusinessType.INSERT) @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody BusinessOpportunity businessOpportunity) throws Exception{ businessOpportunityService.save(businessOpportunity); BusinessDescription businessDescription = new BusinessDescription(); BeanUtils.copyProperties(businessOpportunity, businessDescription); businessDescription.setBusinessOpportunityId(businessOpportunity.getId()); // 迁移临时文件到正式文件 commonFileService.migrateTempFilesToFormal(businessOpportunity.getId(), businessOpportunity.getTempFileIds()); return BusinessDescriptionMapper.insert(businessDescription) > 0 ? success() : error(); } @PostMapping("/addDescription") @ApiOperation("添加商机描述") @Log(title = "商机管理-添加商机描述", businessType = BusinessType.INSERT) public AjaxResult addDescription(@RequestBody BusinessDescription businessDescription) throws Exception{ // 迁移临时文件到正式文件 commonFileService.migrateTempFilesToFormal(businessDescription.getBusinessOpportunityId(), businessDescription.getTempFileIds()); return BusinessDescriptionMapper.insert(businessDescription) > 0 ? success() : error(); } @PostMapping("/update") @ApiOperation("修改商机") @Log(title = "商机管理-修改商机", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody BusinessOpportunity businessOpportunity) throws Exception{ // 迁移临时文件到正式文件 commonFileService.migrateTempFilesToFormal(businessOpportunity.getId(), businessOpportunity.getTempFileIds()); return businessOpportunityService.updateById(businessOpportunity) ? success() : error(); } @DeleteMapping("/delete") @ApiOperation("删除商机") @Log(title = "商机管理-删除商机", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody List ids) { if(Collections.isEmpty(ids)) return error("请选择要删除的商机"); return businessOpportunityService.removeBatchByIds(ids) ? success() : error(); } }