|
|
@@ -11,16 +11,22 @@ import com.github.microservice.net.ResultContent;
|
|
|
import com.github.microservice.net.ResultState;
|
|
|
import com.zhongshu.card.client.model.pay.UnionApplySignParam;
|
|
|
import com.zhongshu.card.client.model.projectAbout.ProjectWeChatInfoModel;
|
|
|
+import com.zhongshu.card.client.model.qrCode.QRCodeSceneModel;
|
|
|
import com.zhongshu.card.client.model.wechat.AccessTokenVo;
|
|
|
import com.zhongshu.card.client.model.wechat.UnlimitedQRCodeParam;
|
|
|
import com.zhongshu.card.server.core.controller.projectAbout.ProjectWeChatInfoController;
|
|
|
+import com.zhongshu.card.server.core.dao.qrCode.QRCodeSceneDao;
|
|
|
+import com.zhongshu.card.server.core.domain.qrCode.QRCodeScene;
|
|
|
import com.zhongshu.card.server.core.service.base.RedisService;
|
|
|
import com.zhongshu.card.server.core.service.projectAbout.ProjectWeChatInfoService;
|
|
|
+import com.zhongshu.card.server.core.util.CommonUtil;
|
|
|
import com.zhongshu.card.server.core.util.wx.WechatCUtil;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.Cleanup;
|
|
|
import lombok.SneakyThrows;
|
|
|
+import org.apache.commons.lang3.RandomStringUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -34,10 +40,10 @@ import java.util.Objects;
|
|
|
public class WeChatService {
|
|
|
|
|
|
@Autowired
|
|
|
- WechatCUtil wechatCUtil;
|
|
|
+ RedisService redisService;
|
|
|
|
|
|
@Autowired
|
|
|
- RedisService redisService;
|
|
|
+ QRCodeSceneDao qrCodeSceneDao;
|
|
|
|
|
|
@Autowired
|
|
|
ProjectWeChatInfoService projectWeChatInfoService;
|
|
|
@@ -65,13 +71,29 @@ public class WeChatService {
|
|
|
|
|
|
String accessToken = getAccessToken(weChatInfoModel.getAppId(), weChatInfoModel.getAppSecret());
|
|
|
|
|
|
- byte[] unlimitedQRCodeToByte = getUnlimitedQRCodeToByte(param.getScene(), param.getPage(), accessToken);
|
|
|
+ String sceneId = RandomStringUtils.randomAlphabetic(16);
|
|
|
+
|
|
|
+ QRCodeScene qrCodeScene = new QRCodeScene();
|
|
|
+ qrCodeScene.setSceneId(sceneId);
|
|
|
+ qrCodeScene.setScene(param.getScene());
|
|
|
+ qrCodeSceneDao.save(qrCodeScene);
|
|
|
+
|
|
|
+ byte[] unlimitedQRCodeToByte = getUnlimitedQRCodeToByte(sceneId, param.getPage(), accessToken);
|
|
|
response.addHeader("Content-Type","image/jpeg");
|
|
|
@Cleanup OutputStream outputStream = response.getOutputStream();
|
|
|
outputStream.write(unlimitedQRCodeToByte);
|
|
|
outputStream.flush();
|
|
|
}
|
|
|
|
|
|
+ public ResultContent getScene(String sceneId){
|
|
|
+ QRCodeScene qrCodeScene = qrCodeSceneDao.findTopBySceneId(sceneId);
|
|
|
+ QRCodeSceneModel qrCodeSceneModel = new QRCodeSceneModel();
|
|
|
+ if (qrCodeScene != null){
|
|
|
+ BeanUtils.copyProperties(qrCodeScene, qrCodeSceneModel);
|
|
|
+ }
|
|
|
+ return ResultContent.buildContent(qrCodeSceneModel);
|
|
|
+ }
|
|
|
+
|
|
|
public String getAccessToken(String appId, String secret) throws Exception {
|
|
|
String value = redisService.getValue(ACCESS_TOKEN_KEY + appId + ":");
|
|
|
if (Objects.isNull(value)) {
|