TXiangmuController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.ylx.web.controller.massage;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ylx.common.annotation.Log;
  6. import com.ylx.common.core.domain.R;
  7. import com.ylx.common.enums.BusinessType;
  8. import com.ylx.common.exception.ServiceException;
  9. import com.ylx.massage.domain.THighlights;
  10. import com.ylx.massage.domain.TJs;
  11. import com.ylx.massage.domain.TJsDay;
  12. import com.ylx.massage.domain.TXiangmu;
  13. import com.ylx.massage.domain.vo.TXiangmuDetailVo;
  14. import com.ylx.massage.mapper.TJsDayMapper;
  15. import com.ylx.massage.service.THighlightsService;
  16. import com.ylx.massage.service.TJsService;
  17. import com.ylx.massage.service.TXiangmuService;
  18. import com.ylx.massage.utils.DateTimeUtils;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.annotation.Resource;
  25. import java.util.Date;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * 项目管理Controller
  30. *
  31. * @author ylx
  32. * @date 2024-03-22
  33. */
  34. @RestController
  35. @RequestMapping("api/xiangmu/v1")
  36. @Slf4j
  37. @Api(tags = {"项目管理"})
  38. public class TXiangmuController {
  39. @Resource
  40. private TXiangmuService xiangmuService;
  41. @Resource
  42. private THighlightsService highlightsService;
  43. @Resource
  44. private TJsDayMapper jsDayMapper;
  45. @Resource
  46. private TJsService jsService;
  47. /**
  48. * 获取所有项目
  49. *
  50. * @param tXiangmu
  51. * @return R<List<TXiangmu>>
  52. */
  53. @RequestMapping(value = "wx/getAll", method = RequestMethod.POST)
  54. @ApiOperation("获取所有项目")
  55. public R<List<TXiangmu>> geTXiangmu(@RequestBody TXiangmu tXiangmu) {
  56. LambdaQueryWrapper<TXiangmu> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  57. objectLambdaQueryWrapper.eq(StringUtils.isNotBlank(tXiangmu.getcId()), TXiangmu::getcId, tXiangmu.getcId());
  58. if (StringUtils.isNotBlank(tXiangmu.getcLdList())) {
  59. objectLambdaQueryWrapper.apply("FIND_IN_SET({0}, c_ld_list)", tXiangmu.getcLdList());
  60. }
  61. objectLambdaQueryWrapper.orderByAsc(TXiangmu::getdPrice);
  62. List<TXiangmu> list = xiangmuService.list(objectLambdaQueryWrapper);
  63. return R.ok(list);
  64. }
  65. /**
  66. * 查询指定技师的项目
  67. *
  68. * @param jsId 技师ID
  69. * @return R<List<TXiangmu>>
  70. */
  71. @GetMapping(value = "wx/getByJsId")
  72. @ApiOperation("查询指定技师的项目")
  73. public R<List<TXiangmu>> getByJsId(@RequestParam String openId) {
  74. try {
  75. log.info("查询指定技师的项目,openId:{}", openId);
  76. //通过openId查询技师项目编号
  77. TJs js = jsService.getOne(new LambdaQueryWrapper<TJs>().eq(TJs::getcOpenId, openId));
  78. if (js == null) {
  79. return R.fail("该技师不存在");
  80. }
  81. String bhList = js.getcBhList();
  82. if (StringUtils.isBlank(bhList)) {
  83. return R.fail("该技师没有项目");
  84. }
  85. LambdaQueryWrapper<TXiangmu> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  86. objectLambdaQueryWrapper.in(TXiangmu::getcId, bhList.split(","));
  87. List<TXiangmu> list = xiangmuService.list(objectLambdaQueryWrapper);
  88. return R.ok(list);
  89. } catch (Exception e) {
  90. e.printStackTrace();
  91. throw new RuntimeException(e);
  92. }
  93. }
  94. /**
  95. * 推荐技师
  96. *
  97. * @param deptName
  98. * @return R<List<TJs>>
  99. */
  100. @RequestMapping(value = "wx/recommend", method = RequestMethod.GET)
  101. @ApiOperation("推荐技师")
  102. public R<List<TJs>> recommend(@RequestParam String deptName) {
  103. // //推荐技师
  104. // List<TJsDay> tJsDays = jsDayMapper.selectRanking(deptName, null,
  105. // DateTimeUtils.formatDate(DateTimeUtils.addMonths(new Date(), -1)), DateTimeUtils.formatDate(new Date()));
  106. // //查技师
  107. // if (CollectionUtil.isEmpty(tJsDays)) {
  108. // return null;
  109. // }
  110. // List<String> jsId = tJsDays.stream().map(TJsDay::getJsId).collect(Collectors.toList());
  111. LambdaQueryWrapper<TJs> jsLambdaQueryWrapper = new LambdaQueryWrapper<>();
  112. jsLambdaQueryWrapper.eq(TJs::getnB1, 1).last("limit 4");
  113. return R.ok(jsService.list(jsLambdaQueryWrapper));
  114. }
  115. /**
  116. * 添加或者更新项目
  117. *
  118. * @param xiangmu
  119. * @return R
  120. */
  121. @Log(title = "项目管理", businessType = BusinessType.INSERT)
  122. @RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST)
  123. @ApiOperation("添加或者更新项目")
  124. public R saveOrUpdate(@RequestBody TXiangmu xiangmu) {
  125. try {
  126. return R.ok(xiangmuService.addOrUpdate(xiangmu));
  127. } catch (ServiceException s) {
  128. log.error(s.toString());
  129. return R.fail(s.getMessage());
  130. } catch (Exception e) {
  131. log.error(e.toString());
  132. return R.fail("系统异常");
  133. }
  134. }
  135. /**
  136. * 分页查询项目数据
  137. * @param page
  138. * @param tXiangmu
  139. * @return R<Page<TXiangmu>>
  140. */
  141. @RequestMapping(value = "/select", method = RequestMethod.GET)
  142. @ApiOperation("分页查询项目数据")
  143. public R<Page<TXiangmu>> selecTXiangmu(Page<TXiangmu> page, TXiangmu tXiangmu) {
  144. LambdaQueryWrapper<TXiangmu> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  145. objectLambdaQueryWrapper.like(StringUtils.isNotBlank(tXiangmu.getcTitle()), TXiangmu::getcTitle, tXiangmu.getcTitle()).
  146. orderByDesc(TXiangmu::getDtCreateTime);
  147. // 获取查询返回结果
  148. Page<TXiangmu> pageSelect = xiangmuService.page(page, objectLambdaQueryWrapper);
  149. return R.ok(pageSelect);
  150. }
  151. /**
  152. * 分页查询数据
  153. */
  154. @ApiOperation("根据id查询项目")
  155. @RequestMapping(value = "/getByid", method = RequestMethod.POST)
  156. public R getById(@RequestBody TXiangmu xiangmu) {
  157. TXiangmuDetailVo details = xiangmuService.details(xiangmu);
  158. return R.ok(details);
  159. }
  160. /**
  161. * 删除项目
  162. *
  163. * @param xiangmu
  164. * @return
  165. */
  166. @Log(title = "项目管理", businessType = BusinessType.DELETE)
  167. @RequestMapping(value = "/del", method = RequestMethod.POST)
  168. @ApiOperation("删除项目")
  169. public R del(@RequestBody TXiangmu xiangmu) {
  170. return R.ok(xiangmuService.removeById(xiangmu));
  171. }
  172. /**
  173. * 项目亮点
  174. *
  175. * @return R<List<THighlights>>
  176. */
  177. @ApiOperation("项目亮点")
  178. @Log(title = "项目亮点", businessType = BusinessType.OTHER)
  179. @RequestMapping(value = "/highlights", method = RequestMethod.GET)
  180. public R<List<THighlights>> getHighlights() {
  181. return R.ok(highlightsService.list());
  182. }
  183. }