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 getDeviceInfo(HttpServletRequest request) { String deviceId = request.getHeader("X-DeviceId"); AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId); if (aioDevice == null) { return ApiResponse.fail("设备不存在"); } List banners = aioDeviceMapper.getBannerByDeviceId(aioDevice.getId()); return ApiResponse.success(new AioDeviceInfoResp(aioDevice, banners)); } @GetMapping("/banners") public ApiResponse> getBanners(HttpServletRequest request) { String deviceId = request.getHeader("X-DeviceId"); AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId); if (aioDevice == null) { return ApiResponse.fail("设备不存在"); } List banners = aioDeviceMapper.getBannerByDeviceId(aioDevice.getId()); return ApiResponse.success(banners); } @GetMapping("/config") public ApiResponse 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 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 faceInfo(@PathVariable Long faceId) { return faceService.getById(faceId); } @ApiOperation("照片商品列表") @GetMapping("/{faceId}/photo") public ApiResponse> sourceGoodsList(@PathVariable Long faceId) { GoodsReqQuery query = new GoodsReqQuery(); query.setSourceType(2); query.setFaceId(faceId); List goodsDetailVOS = goodsService.sourceGoodsList(query); return ApiResponse.success(goodsDetailVOS); } @ApiOperation("创建订单") @PostMapping("/order") public ApiResponse 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 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)); } }