You've already forked FrameTour-BE
149 lines
6.3 KiB
Java
149 lines
6.3 KiB
Java
package com.ycwl.basic.controller.extern;
|
|
|
|
import com.ycwl.basic.annotation.IgnoreToken;
|
|
import com.ycwl.basic.mapper.AioDeviceMapper;
|
|
import com.ycwl.basic.mapper.MemberMapper;
|
|
import com.ycwl.basic.model.aio.entity.AioDeviceBannerEntity;
|
|
import com.ycwl.basic.model.aio.entity.AioDeviceEntity;
|
|
import com.ycwl.basic.model.aio.entity.AioDevicePriceConfigEntity;
|
|
import com.ycwl.basic.model.aio.req.AioDeviceCreateOrderReq;
|
|
import com.ycwl.basic.model.aio.resp.AioDeviceCreateOrderResp;
|
|
import com.ycwl.basic.model.aio.resp.AioDeviceInfoResp;
|
|
import com.ycwl.basic.model.jwt.JwtInfo;
|
|
import com.ycwl.basic.model.mobile.face.FaceRecognizeResp;
|
|
import com.ycwl.basic.model.mobile.goods.GoodsDetailVO;
|
|
import com.ycwl.basic.model.mobile.goods.GoodsReqQuery;
|
|
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
|
import com.ycwl.basic.model.pc.member.entity.MemberEntity;
|
|
import com.ycwl.basic.model.pc.member.resp.MemberRespVO;
|
|
import com.ycwl.basic.pay.entity.PayResponse;
|
|
import com.ycwl.basic.service.aio.AioDeviceService;
|
|
import com.ycwl.basic.service.mobile.GoodsService;
|
|
import com.ycwl.basic.service.pc.FaceService;
|
|
import com.ycwl.basic.service.pc.OrderService;
|
|
import com.ycwl.basic.utils.ApiResponse;
|
|
import com.ycwl.basic.utils.JwtTokenUtil;
|
|
import com.ycwl.basic.utils.SnowFlakeUtil;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import jakarta.servlet.ServletRequest;
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
@Slf4j
|
|
@IgnoreToken
|
|
@RestController
|
|
@RequestMapping("/api/aio")
|
|
public class AioDeviceController {
|
|
@Autowired
|
|
private GoodsService goodsService;
|
|
@Autowired
|
|
private FaceService faceService;
|
|
@Autowired
|
|
private MemberMapper memberMapper;
|
|
@Autowired
|
|
private AioDeviceMapper aioDeviceMapper;
|
|
@Autowired
|
|
private AioDeviceService aioDeviceService;
|
|
@Autowired
|
|
private OrderService orderService;
|
|
|
|
@GetMapping("/info")
|
|
public ApiResponse<AioDeviceInfoResp> getDeviceInfo(HttpServletRequest request) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
List<AioDeviceBannerEntity> banners = aioDeviceMapper.getBannerByDeviceId(aioDevice.getId());
|
|
return ApiResponse.success(new AioDeviceInfoResp(aioDevice, banners));
|
|
}
|
|
|
|
@GetMapping("/banners")
|
|
public ApiResponse<List<AioDeviceBannerEntity>> getBanners(HttpServletRequest request) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
List<AioDeviceBannerEntity> banners = aioDeviceMapper.getBannerByDeviceId(aioDevice.getId());
|
|
return ApiResponse.success(banners);
|
|
}
|
|
|
|
@GetMapping("/config")
|
|
public ApiResponse<AioDevicePriceConfigEntity> getPriceConfig(HttpServletRequest request) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
AioDevicePriceConfigEntity config = aioDeviceMapper.getPriceConfigByDeviceId(aioDevice.getId());
|
|
return ApiResponse.success(config);
|
|
}
|
|
|
|
@PostMapping("/faceUpload")
|
|
public ApiResponse<FaceRecognizeResp> faceUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
MemberEntity memberEntity = new MemberEntity();
|
|
memberEntity.setScenicId(aioDevice.getScenicId());
|
|
memberEntity.setCreateDate(new Date());
|
|
memberEntity.setId(SnowFlakeUtil.getLongId());
|
|
memberEntity.setNickname("用户");
|
|
memberMapper.add(memberEntity);
|
|
FaceRecognizeResp resp = faceService.faceUpload(file, aioDevice.getScenicId(), memberEntity.getId());
|
|
return ApiResponse.success(resp);
|
|
}
|
|
|
|
@ApiOperation("人脸信息")
|
|
@GetMapping("/{faceId}")
|
|
public ApiResponse<FaceRespVO> faceInfo(@PathVariable Long faceId) {
|
|
return faceService.getById(faceId);
|
|
}
|
|
@ApiOperation("照片商品列表")
|
|
@GetMapping("/{faceId}/photo")
|
|
public ApiResponse<List<GoodsDetailVO>> sourceGoodsList(@PathVariable Long faceId) {
|
|
GoodsReqQuery query = new GoodsReqQuery();
|
|
query.setSourceType(2);
|
|
query.setFaceId(faceId);
|
|
List<GoodsDetailVO> goodsDetailVOS = goodsService.sourceGoodsList(query);
|
|
return ApiResponse.success(goodsDetailVOS);
|
|
}
|
|
|
|
@ApiOperation("创建订单")
|
|
@PostMapping("/order")
|
|
public ApiResponse<AioDeviceCreateOrderResp> createOrder(HttpServletRequest request, @RequestBody AioDeviceCreateOrderReq req) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
return ApiResponse.success(aioDeviceService.createOrder(aioDevice, req));
|
|
}
|
|
|
|
@ApiOperation("查询订单")
|
|
@GetMapping("/order/{orderId}")
|
|
public ApiResponse<PayResponse> queryOrder(HttpServletRequest request, @PathVariable("orderId") Long orderId) {
|
|
String deviceId = request.getHeader("X-DeviceId");
|
|
AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId);
|
|
if (aioDevice == null) {
|
|
return ApiResponse.fail("设备不存在");
|
|
}
|
|
return ApiResponse.success(orderService.queryOrder(orderId));
|
|
}
|
|
}
|