diff --git a/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java b/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java index 6af7eb3..8619c91 100644 --- a/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java +++ b/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java @@ -177,6 +177,10 @@ public class AioDeviceController { return ApiResponse.success(false); } } + @GetMapping("/face/{faceId}/bindWxaCode") + public ApiResponse bindWxaCode(@PathVariable Long faceId) { + return ApiResponse.success(faceService.bindWxaCode(faceId)); + } // 照片商品列表 @GetMapping("/{faceId}/photo") public ApiResponse> sourceGoodsList(@PathVariable Long faceId) { diff --git a/src/main/java/com/ycwl/basic/service/pc/FaceService.java b/src/main/java/com/ycwl/basic/service/pc/FaceService.java index d6339d2..2037016 100644 --- a/src/main/java/com/ycwl/basic/service/pc/FaceService.java +++ b/src/main/java/com/ycwl/basic/service/pc/FaceService.java @@ -38,4 +38,6 @@ public interface FaceService { ApiResponse> contentListUseDefaultFace(); void bindFace(Long faceId, Long memberId); + + String bindWxaCode(Long faceId); } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index b9384bd..f262405 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -24,6 +24,7 @@ import com.ycwl.basic.model.pc.face.entity.FaceEntity; import com.ycwl.basic.model.pc.face.req.FaceReqQuery; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity; +import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity; @@ -45,6 +46,7 @@ import com.ycwl.basic.service.task.TaskFaceService; import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.adapters.IStorageAdapter; +import com.ycwl.basic.storage.enums.StorageAcl; import com.ycwl.basic.storage.utils.StorageUtil; import com.ycwl.basic.task.VideoPieceGetter; import com.ycwl.basic.utils.*; @@ -53,6 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; @@ -529,5 +532,31 @@ public class FaceServiceImpl implements FaceService { faceRepository.clearFaceCache(faceId); } + @Override + public String bindWxaCode(Long faceId) { + FaceEntity face = faceRepository.getFace(faceId); + MpConfigEntity mpConfig = scenicRepository.getScenicMpConfig(face.getScenicId()); + if (mpConfig == null) { + throw new BaseException("小程序配置不存在"); + } + String appId = mpConfig.getAppId(); + String appSecret = mpConfig.getAppSecret(); + String path = "pages/videoSynthesis/bind_face"; + String filePath = "qr_code_bf" + faceId + ".jpg"; + IStorageAdapter adapter = StorageFactory.use(); + if (adapter.isExists(filePath)) { + return adapter.getUrl(filePath); + } + try { + File file = new File(filePath); + WxMpUtil.generateUnlimitedWXAQRCode(appId, appSecret, path, faceId.toString(), file); + String s = adapter.uploadFile(null, file, filePath); + file.delete(); + adapter.setAcl(StorageAcl.PUBLIC_READ, filePath); + return s; + } catch (Exception e) { + throw new BaseException("生成二维码失败"); + } + } }