package com.ruoyi.admin.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.admin.entity.RecoveryClassify; import com.ruoyi.admin.entity.RecoveryServe; import com.ruoyi.admin.entity.RecoveryServePrice; import com.ruoyi.admin.request.RecoveryServePriceRequest; import com.ruoyi.admin.request.RecoveryServeRequest; import com.ruoyi.admin.service.RecoveryClassifyService; import com.ruoyi.admin.service.RecoveryServePriceService; import com.ruoyi.admin.service.RecoveryServeService; import com.ruoyi.admin.vo.RecoveryServeResultVO; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 前端控制器 *

* * @author hjl * @since 2024-05-29 */ @RestController @RequestMapping("/recoveryServe") @Api(tags = {"后台-回收管理-回收服务管理"}) public class RecoveryServeController { @Resource private RecoveryServeService recoveryServeService; @Resource private RecoveryClassifyService recoveryClassifyService; @Resource private RecoveryServePriceService recoveryServePriceService; /** * 回收服务分页列表 * * @param pageNum 页码 * @param pageSize 每页显示条数 */ @RequiresPermissions("serve_recycling_list") @ApiOperation(value = "回收服务分页查询列表", tags = {"后台-回收管理-回收服务管理"}) @GetMapping(value = "/page") @ApiImplicitParams({ @ApiImplicitParam(value = "服务名称", name = "serveName", dataType = "String"), @ApiImplicitParam(value = "回收价格起点", name = "startPrice", dataType = "String"), @ApiImplicitParam(value = "回收价格终点", name = "endPrice", dataType = "String"), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> queryPageList(String serveName, String startPrice, String endPrice, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LambdaQueryChainWrapper wrapper = recoveryServeService.lambdaQuery(); // 服务名称模糊匹配 wrapper = StringUtils.isNotBlank(serveName) ? wrapper.like(RecoveryServe::getServeName, serveName) : wrapper; // 回收价格区间匹配 wrapper = null != startPrice ? wrapper.ge(RecoveryServe::getDefaultPrice, startPrice) : wrapper; wrapper = null != endPrice ? wrapper.le(RecoveryServe::getDefaultPrice, endPrice) : wrapper; return R.ok(wrapper.eq(RecoveryServe::getIsDelete, 0) .orderByDesc(RecoveryServe::getCreateTime).page(Page.of(pageNum, pageSize))); } /** * 回收服务列表 */ @RequiresPermissions("serve_recycling_list") @ApiOperation(value = "回收服务列表", tags = {"后台-回收管理-回收服务管理"}) @GetMapping(value = "/list") public R> queryPageList() { return R.ok(recoveryServeService.lambdaQuery().eq(RecoveryServe::getIsDelete, 0) .orderByDesc(RecoveryServe::getCreateTime).list()); } /** * 所属分类列表 */ @RequiresPermissions("serve_recycling_list") @ApiOperation(value = "所属分类列表", tags = {"后台-回收管理-回收服务管理"}) @GetMapping(value = "/typeList") public R> typeList() { return R.ok(recoveryClassifyService.lambdaQuery() .eq(RecoveryClassify::getIsDelete, 0) .orderByDesc(RecoveryClassify::getCreateTime) .list()); } /** * 回收服务详情 * * @param id 回收服务id */ @RequiresPermissions("serve_detail") @ApiOperation(value = "回收服务详情", tags = {"后台-回收管理-回收服务管理"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @ApiImplicitParam(value = "回收服务id", name = "id", dataType = "Integer", required = true) }) public R detail(@RequestParam Integer id) { RecoveryServe recoveryServe = recoveryServeService.getById(id); List priceList = recoveryServePriceService.lambdaQuery() .eq(RecoveryServePrice::getRecoveryServeId, id) .eq(RecoveryServePrice::getIsDelete, 0).list(); return R.ok(new RecoveryServeResultVO(recoveryServe, priceList)); } /** * 新增回收服务 * * @param recoveryServeRequest 回收服务信息 */ @RequiresPermissions("serve_save") @ApiOperation(value = "新增回收服务", tags = {"后台-回收管理-回收服务管理"}) @PostMapping(value = "/save") public R save(@RequestBody RecoveryServeRequest recoveryServeRequest) { RecoveryServe serve = recoveryServeRequest.getServe(); boolean save = recoveryServeService.save(serve); // 城市及对饮回收价 if (null != recoveryServeRequest.getPriceList()) { for (RecoveryServePriceRequest data : recoveryServeRequest.getPriceList()) { BigDecimal recoveryPrice = data.getRecoveryPrice(); String city = data.getCity(); // 信息封装 RecoveryServePrice price = new RecoveryServePrice(); price.setRecoveryServeId(serve.getId()); price.setRecoveryPrice(recoveryPrice); price.setCity(city); price.setCityCode(data.getCityCode()); save = save && recoveryServePriceService.save(price); } } return save ? R.ok() : R.fail(); } /** * 修改回收服务 * * @param recoveryServeRequest 回收服务信息 */ @RequiresPermissions("serve_update") @ApiOperation(value = "修改回收服务", tags = {"后台-回收管理-回收服务管理"}) @PostMapping(value = "/update") public R update(@RequestBody RecoveryServeRequest recoveryServeRequest) { RecoveryServe serve = recoveryServeRequest.getServe(); serve.setId(recoveryServeRequest.getId()); boolean update = recoveryServeService.updateById(serve); // 城市及对应回收价 List priceList = recoveryServePriceService.lambdaQuery() .eq(RecoveryServePrice::getRecoveryServeId, recoveryServeRequest.getId()) .eq(RecoveryServePrice::getIsDelete, 0).list(); if (!priceList.isEmpty()) { for (RecoveryServePrice price : priceList) { price.setIsDelete(Constants.ONE); } update = update && recoveryServePriceService.updateBatchById(priceList); } // 新增省市及回收价 if (null != recoveryServeRequest.getPriceList()) { for (RecoveryServePriceRequest data : recoveryServeRequest.getPriceList()) { BigDecimal recoveryPrice = data.getRecoveryPrice(); String city = data.getCity(); // 信息封装 RecoveryServePrice price = new RecoveryServePrice(); price.setRecoveryServeId(serve.getId()); price.setRecoveryPrice(recoveryPrice); price.setCity(city); price.setCityCode(data.getCityCode()); update = update && recoveryServePriceService.save(price); } } return update ? R.ok() : R.fail(); } /** * 根据id批量删除回收服务 * * @param ids 回收服务多条id拼接 */ @RequiresPermissions("serve_delete") @ApiOperation(value = "批量删除回收服务", tags = {"后台-回收管理-回收服务管理"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @ApiImplicitParam(value = "多个id ',' 拼接", name = "ids", dataType = "String", required = true) }) public R batchDelete(@RequestParam String ids) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = recoveryServeService.lambdaQuery().in(RecoveryServe::getId, idList).list(); list.forEach(data -> data.setIsDelete(1)); recoveryServePriceService.lambdaUpdate() .set(RecoveryServePrice::getIsDelete, Constants.ONE) .in(RecoveryServePrice::getRecoveryServeId, idList).update(); return recoveryServeService.updateBatchById(list) ? R.ok() : R.fail(); } }