FacilityController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /*
  2. * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * Redistributions of source code must retain the above copyright notice,
  8. * this list of conditions and the following disclaimer.
  9. * Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. * Neither the name of the dreamlu.net developer nor the names of its
  13. * contributors may be used to endorse or promote products derived from
  14. * this software without specific prior written permission.
  15. * Author: Chill 庄骞 (smallchill@163.com)
  16. */
  17. package org.springblade.modules.business.controller;
  18. import cn.hutool.core.collection.CollectionUtil;
  19. import cn.hutool.extra.qrcode.QrCodeUtil;
  20. import cn.hutool.extra.qrcode.QrConfig;
  21. import com.baomidou.mybatisplus.core.metadata.IPage;
  22. import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import io.swagger.annotations.ApiParam;
  26. import org.springblade.core.boot.ctrl.BladeController;
  27. import org.springblade.core.log.exception.ServiceException;
  28. import org.springblade.core.mp.support.Condition;
  29. import org.springblade.core.mp.support.Query;
  30. import org.springblade.core.tool.api.R;
  31. import org.springblade.core.tool.utils.Func;
  32. import org.springblade.modules.business.entity.Facility;
  33. import org.springblade.modules.business.entity.Shop;
  34. import org.springblade.modules.business.service.IFacilityService;
  35. import org.springblade.modules.business.service.IShopService;
  36. import org.springblade.modules.business.vo.FacilityVO;
  37. import org.springblade.modules.business.wrapper.FacilityWrapper;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.beans.factory.annotation.Value;
  40. import org.springframework.web.bind.annotation.*;
  41. import javax.servlet.http.HttpServletResponse;
  42. import javax.validation.Valid;
  43. import java.io.IOException;
  44. import java.io.OutputStream;
  45. /**
  46. * 售货设备表 控制器
  47. *
  48. * @author BladeX
  49. * @since 2024-07-16
  50. */
  51. @RestController
  52. @RequestMapping("/facility")
  53. @Api(value = "售货设备表", tags = "售货设备表接口")
  54. public class FacilityController extends BladeController {
  55. @Autowired
  56. private IFacilityService facilityService;
  57. @Autowired
  58. private IShopService shopService;
  59. @Value("${qrCode.domainUrl}")
  60. private String domainUrl;
  61. /**
  62. * 详情
  63. */
  64. @GetMapping("/detail")
  65. @ApiOperationSupport(order = 1)
  66. @ApiOperation(value = "详情", notes = "传入facility")
  67. public R<FacilityVO> detail(Facility facility) {
  68. Facility detail = facilityService.getOne(Condition.getQueryWrapper(facility));
  69. return R.data(FacilityWrapper.build().entityVO(detail));
  70. }
  71. /**
  72. * 分页 售货设备表
  73. */
  74. @GetMapping("/list")
  75. @ApiOperationSupport(order = 2)
  76. @ApiOperation(value = "分页", notes = "传入facility")
  77. public R<IPage<FacilityVO>> list(Facility facility, Query query) {
  78. IPage<Facility> pages = facilityService.page(Condition.getPage(query), Condition.getQueryWrapper(facility));
  79. IPage<FacilityVO> facilityVOIPage = FacilityWrapper.build().pageVO(pages);
  80. if (CollectionUtil.isNotEmpty(facilityVOIPage.getRecords())){
  81. facilityVOIPage.getRecords().forEach(facilityVO -> {
  82. facilityVO.setQrCode(domainUrl + "?qrcode=" + facilityVO.getId());
  83. });
  84. }
  85. return R.data(facilityVOIPage);
  86. }
  87. /**
  88. * 自定义分页 售货设备表
  89. */
  90. @GetMapping("/page")
  91. @ApiOperationSupport(order = 3)
  92. @ApiOperation(value = "分页", notes = "传入facility")
  93. public R<IPage<FacilityVO>> page(FacilityVO facility, Query query) {
  94. IPage<FacilityVO> pages = facilityService.selectFacilityPage(Condition.getPage(query), facility);
  95. return R.data(pages);
  96. }
  97. /**
  98. * 新增 售货设备表
  99. */
  100. @PostMapping("/save")
  101. @ApiOperationSupport(order = 4)
  102. @ApiOperation(value = "新增", notes = "传入facility")
  103. public R save(@Valid @RequestBody Facility facility) {
  104. return R.status(facilityService.add(facility));
  105. }
  106. /**
  107. * 修改 售货设备表
  108. */
  109. @PostMapping("/update")
  110. @ApiOperationSupport(order = 5)
  111. @ApiOperation(value = "修改", notes = "传入facility")
  112. public R update(@Valid @RequestBody Facility facility) {
  113. //设备编号校验
  114. if (facilityService.lambdaQuery()
  115. .eq(Facility::getFacilityNo, facility.getFacilityNo())
  116. .ne(Facility::getId, facility.getId()).count() > 0) {
  117. throw new ServiceException("设备编号已存在!");
  118. }
  119. return R.status(facilityService.updateById(facility));
  120. }
  121. /**
  122. * 新增或修改 售货设备表
  123. */
  124. @PostMapping("/submit")
  125. @ApiOperationSupport(order = 6)
  126. @ApiOperation(value = "新增或修改", notes = "传入facility")
  127. public R submit(@Valid @RequestBody Facility facility) {
  128. //查询设备门店所属商家
  129. // if (facility.getShopId() != null) {
  130. // Facility facility1 = facilityService.getById(facility.getId());
  131. // if (facility1 != null && !facility1.getMerchantId().equals(facility.getMerchantId())) {
  132. // throw new ServiceException("设备所属商家不能修改!");
  133. // }
  134. // }
  135. //获取门店所属商家
  136. Shop shop = shopService.getById(facility.getShopId());
  137. facility.setMerchantId(shop.getMerchantId());
  138. return R.status(facilityService.saveOrUpdate(facility));
  139. }
  140. /**
  141. * 删除 售货设备表
  142. */
  143. @PostMapping("/remove")
  144. @ApiOperationSupport(order = 7)
  145. @ApiOperation(value = "逻辑删除", notes = "传入ids")
  146. public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
  147. return R.status(facilityService.removeByIds(Func.toLongList(ids)));
  148. }
  149. @GetMapping("/buildQrcode")
  150. @ApiOperationSupport(order = 5)
  151. @ApiOperation(value = "下载设备码", notes = "下载设备码")
  152. public void buildQrcode(HttpServletResponse response, String id) throws IOException {
  153. OutputStream osOut = response.getOutputStream();
  154. QrConfig qrConfig = new QrConfig();
  155. qrConfig.setWidth(600);
  156. qrConfig.setHeight(600);
  157. QrCodeUtil.generate(domainUrl + "?deviceId=" + id,qrConfig, "jpg", osOut);
  158. osOut.close();
  159. }
  160. }