Browse Source

fix:生成舒雅乐园网页二维码

wrj 1 year ago
parent
commit
e1b68743be

+ 31 - 4
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/WeChatController.java

@@ -6,12 +6,16 @@ import cn.hutool.extra.qrcode.QrConfig;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ylx.common.annotation.Log;
 import com.ylx.common.annotation.Log;
+import com.ylx.common.config.RuoYiConfig;
 import com.ylx.common.constant.Constants;
 import com.ylx.common.constant.Constants;
 import com.ylx.common.core.controller.BaseController;
 import com.ylx.common.core.controller.BaseController;
+import com.ylx.common.core.domain.AjaxResult;
 import com.ylx.common.core.domain.R;
 import com.ylx.common.core.domain.R;
 import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.enums.BusinessType;
 import com.ylx.common.enums.BusinessType;
 import com.ylx.common.utils.MessageUtils;
 import com.ylx.common.utils.MessageUtils;
+import com.ylx.common.utils.file.FileUploadUtils;
+import com.ylx.framework.config.ServerConfig;
 import com.ylx.framework.manager.AsyncManager;
 import com.ylx.framework.manager.AsyncManager;
 import com.ylx.framework.manager.factory.AsyncFactory;
 import com.ylx.framework.manager.factory.AsyncFactory;
 import com.ylx.framework.web.service.WxTokenService;
 import com.ylx.framework.web.service.WxTokenService;
@@ -19,6 +23,8 @@ import com.ylx.massage.domain.CouponReceive;
 import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.service.CouponReceiveService;
 import com.ylx.massage.service.CouponReceiveService;
 import com.ylx.massage.service.TWxUserService;
 import com.ylx.massage.service.TWxUserService;
+import com.ylx.massage.service.TbFileService;
+import com.ylx.massage.utils.DateTimeUtils;
 import com.ylx.massage.utils.WeChatUtil;
 import com.ylx.massage.utils.WeChatUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
@@ -27,9 +33,11 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -53,7 +61,7 @@ public class WeChatController extends BaseController {
     /**
     /**
      * 二维码保存路径
      * 二维码保存路径
      */
      */
-    private final static String IMG_PATH = "D:\\Users\\code.png";
+    private String IMG_PATH = "D:\\Users\\";
 
 
 //    private final WeChatUserService weChatUserService;
 //    private final WeChatUserService weChatUserService;
 
 
@@ -75,6 +83,9 @@ public class WeChatController extends BaseController {
     @Resource
     @Resource
     private WxTokenService wxTokenService;
     private WxTokenService wxTokenService;
 
 
+    @Autowired
+    private TbFileService tbFileService;
+
     /**
     /**
      * 微信Token验证
      * 微信Token验证
      *
      *
@@ -197,7 +208,6 @@ public class WeChatController extends BaseController {
     }
     }
 
 
 
 
-
     /**
     /**
      * 刷新token,微信提供的token是有限时间的,但是对于财务报销系统仅需授权一次的情况下一般不需要进行更新
      * 刷新token,微信提供的token是有限时间的,但是对于财务报销系统仅需授权一次的情况下一般不需要进行更新
      *
      *
@@ -208,7 +218,7 @@ public class WeChatController extends BaseController {
 
 
         WxLoginUser wxLoginUser = this.getWxLoginUser();
         WxLoginUser wxLoginUser = this.getWxLoginUser();
         TWxUser user = wxUserService.getByOpenId(wxLoginUser.getCOpenid());
         TWxUser user = wxUserService.getByOpenId(wxLoginUser.getCOpenid());
-        if (user == null){
+        if (user == null) {
             throw new RuntimeException("用户不存在");
             throw new RuntimeException("用户不存在");
         }
         }
         // 发送get请求获取 RefreshToken
         // 发送get请求获取 RefreshToken
@@ -221,13 +231,30 @@ public class WeChatController extends BaseController {
         wxUserService.updateById(user);
         wxUserService.updateById(user);
         return accessToken;
         return accessToken;
     }
     }
+
     @ApiOperation("获取公众号二维码")
     @ApiOperation("获取公众号二维码")
     @RequestMapping(value = "getwxQrCode", method = RequestMethod.GET)
     @RequestMapping(value = "getwxQrCode", method = RequestMethod.GET)
     public String getWxQrCodeUtil(@RequestParam String openId) {
     public String getWxQrCodeUtil(@RequestParam String openId) {
 
 
-        String token = this.refreshToken();
+        String token = weChatUtil.getToken();
         Map<?, ?> url = weChatUtil.getUrl(token, openId);
         Map<?, ?> url = weChatUtil.getUrl(token, openId);
         return url.toString();
         return url.toString();
 
 
     }
     }
+
+    @ApiOperation("获取公众号网页二维码")
+    @GetMapping("/getweQrCode")
+    public AjaxResult weiXinLogin1(String openId) {
+        QrConfig config = new QrConfig(300, 300);
+        // 设置边距,即二维码和背景之间的边距
+        config.setMargin(1);
+        // 生成二维码到文件,也可以到流
+        String code = "https://www.baidu.com?openId="+openId;
+        log.info("code:{}", code);
+        String str = IMG_PATH;
+        File generate = QrCodeUtil.generate(code, config, FileUtil.file(RuoYiConfig.getUploadPath() + "/code.png"));
+
+        MultipartFile multipartFile = FileUploadUtils.getMultipartFile(generate);
+        return tbFileService.uploadFile(multipartFile);
+    }
 }
 }

+ 22 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/utils/WeChatUtil.java

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.io.UnsupportedEncodingException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.net.URLEncoder;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 
 
 
 
@@ -78,6 +77,28 @@ public class WeChatUtil {
         }
         }
     }
     }
 
 
+    /**
+     * 获取微信AccessToken
+     *
+     *
+     * @return 返回包含微信AccessToken的Map
+     */
+    public String getToken() {
+        StringBuffer url = new StringBuffer();
+        url.append("https://api.weixin.qq.com/cgi-bin/token")
+                .append("?grant_type=").append("client_credential")
+                .append("&appid=").append(wxPayProperties.getMpAppId())
+                .append("&secret=").append(wxPayProperties.getMpAppSecret());
+        String rs = HttpUtil.get(url.toString());
+        Map<?, ?> map = JSONObject.parseObject(rs, Map.class);
+        if (null == map.get(ERROR_CODE)) {
+            return map.get("access_token").toString();
+        } else {
+            log.error("getToken-获取access_token出错:{}", map);
+            throw new ServiceException("getToken-获取access_token出错");
+        }
+    }
+
     /**
     /**
      * 刷新AccessToken
      * 刷新AccessToken
      *
      *