package com.ylx.web.controller.massage; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ylx.common.annotation.Log; import com.ylx.common.core.domain.R; import com.ylx.common.enums.BusinessType; import com.ylx.common.exception.ServiceException; import com.ylx.massage.domain.THighlights; import com.ylx.massage.domain.TJs; import com.ylx.massage.domain.TJsDay; import com.ylx.massage.domain.TXiangmu; import com.ylx.massage.domain.vo.TXiangmuDetailVo; import com.ylx.massage.mapper.TJsDayMapper; import com.ylx.massage.service.THighlightsService; import com.ylx.massage.service.TJsService; import com.ylx.massage.service.TXiangmuService; import com.ylx.massage.utils.DateTimeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * Controller * * @author ylx * @date 2024-03-22 */ @RestController @RequestMapping("api/xiangmu/v1") @Slf4j @Api(tags = {"项目管理"}) public class TXiangmuController { @Resource private TXiangmuService xiangmuService; @Resource private THighlightsService highlightsService; @Resource private TJsDayMapper jsDayMapper; @Resource private TJsService jsService; /** * 获取所有项目 * * @return */ @RequestMapping(value = "wx/getAll", method = RequestMethod.POST) @ApiOperation("获取所有项目") public R> geTXiangmu(@RequestBody TXiangmu tXiangmu) { LambdaQueryWrapper objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); objectLambdaQueryWrapper.eq(StringUtils.isNotBlank(tXiangmu.getcId()), TXiangmu::getcId, tXiangmu.getcId()); if (StringUtils.isNotBlank(tXiangmu.getcLdList())) { objectLambdaQueryWrapper.apply("FIND_IN_SET({0}, c_ld_list)", tXiangmu.getcLdList()); } objectLambdaQueryWrapper.orderByAsc(TXiangmu::getdPrice); List list = xiangmuService.list(objectLambdaQueryWrapper); return R.ok(list); } @RequestMapping(value = "wx/recommend", method = RequestMethod.GET) @ApiOperation("推荐技师") public List recommend(@RequestParam String deptName) { //推荐技师 List tJsDays = jsDayMapper.selectRanking(deptName, null, DateTimeUtils.formatDate(DateTimeUtils.addMonths(new Date(), -1)), DateTimeUtils.formatDate(new Date())); //查技师 if (CollectionUtil.isEmpty(tJsDays)) { return null; } List jsId = tJsDays.stream().map(TJsDay::getJsId).collect(Collectors.toList()); LambdaQueryWrapper jsLambdaQueryWrapper = new LambdaQueryWrapper<>(); jsLambdaQueryWrapper.in(CollectionUtil.isNotEmpty(jsId), TJs::getId, jsId); return jsService.list(jsLambdaQueryWrapper); } /** * 添加或者更新项目 * * @param xiangmu * @return */ @Log(title = "项目管理", businessType = BusinessType.INSERT) @RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST) @ApiOperation("添加或者更新项目") public R saveOrUpdate(@RequestBody TXiangmu xiangmu) { try { return R.ok(xiangmuService.addOrUpdate(xiangmu)); } catch (ServiceException s) { log.error(s.toString()); return R.fail(s.getMessage()); } catch (Exception e) { log.error(e.toString()); return R.fail("系统异常"); } } /** * 分页查询数据 */ @RequestMapping(value = "/select", method = RequestMethod.GET) @ApiOperation("分页查询数据") public R> selecTXiangmu(Page page, TXiangmu tXiangmu) { LambdaQueryWrapper objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); objectLambdaQueryWrapper.like(StringUtils.isNotBlank(tXiangmu.getcTitle()), TXiangmu::getcTitle, tXiangmu.getcTitle()). orderByDesc(TXiangmu::getDtCreateTime); // 获取查询返回结果 Page pageSelect = xiangmuService.page(page, objectLambdaQueryWrapper); return R.ok(pageSelect); } /** * 分页查询数据 */ @ApiOperation("根据id查询项目") @RequestMapping(value = "/getByid", method = RequestMethod.POST) public R getById(@RequestBody TXiangmu xiangmu) { TXiangmuDetailVo details = xiangmuService.details(xiangmu); return R.ok(details); } /** * 删除项目 * * @param xiangmu * @return */ @Log(title = "项目管理", businessType = BusinessType.DELETE) @RequestMapping(value = "/del", method = RequestMethod.POST) @ApiOperation("删除项目") public R del(@RequestBody TXiangmu xiangmu) { return R.ok(xiangmuService.removeById(xiangmu)); } /** * 项目两点 */ @ApiOperation("项目亮点") @RequestMapping(value = "/highlights", method = RequestMethod.GET) public R> getHighlights() { return R.ok(highlightsService.list()); } }