| 
					
				 | 
			
			
				@@ -4,16 +4,41 @@ import com.google.common.collect.ImmutableBiMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.entity.StoreEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.service.StoreService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.admin.utils.ParamUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.kmall.api.service.pay.wxpay.WxPayPropertiesBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.common.entity.SysUserEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.kmall.common.fileserver.util.FileManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.kmall.common.utils.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.kmall.common.utils.wechat.AccessToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.kmall.common.utils.wxtemplate.WxTemplateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.fileupload.FileItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.fileupload.disk.DiskFileItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.io.IOUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.HttpEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.entity.ContentType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.util.EntityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.shiro.authz.annotation.RequiresPermissions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Controller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.bind.annotation.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.file.Files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.HttpResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.client.methods.HttpPost; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.entity.StringEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.client.CloseableHttpClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.impl.client.HttpClientBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.http.protocol.HTTP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.multipart.MultipartFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.multipart.commons.CommonsMultipartFile; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Controller 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -161,4 +186,93 @@ public class StoreController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<StoreEntity> list = storeService.queryList(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return R.ok().put("list", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @RequestMapping("/qrcodeCanvas/{storeId}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @RequiresPermissions("store:qrcodeCanvas") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @ResponseBody 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public R qrcodeCanvas(@PathVariable("storeId") Integer storeId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        StoreEntity store = storeService.queryObject(storeId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(store==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RRException("门店信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AccessToken accessToken = WxTemplateUtil.getAccessToken(WxPayPropertiesBuilder.instance().getAppId(),WxPayPropertiesBuilder.instance().getSecret()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(accessToken == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RRException("token获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String token = accessToken.getToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //构建请求参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Object, Object> params = new HashMap<Object, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.put("scene", store.getId());//参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.put("page", "pages/index/index");//页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.put("width", 430); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String mapToXml = JSON.toJSONString(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            StringEntity entity = new StringEntity(mapToXml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            entity.setContentType("image/png"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            httpPost.setEntity(entity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpResponse response = httpClient.execute(httpPost); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            InputStream inputStream = response.getEntity().getContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String fileName = System.currentTimeMillis()+"_"+storeId+".png"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dirName = "\\upload"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            File dirFile = new File(dirName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //删除之前的图片文件夹 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            deleteFile(dirFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!dirFile.exists()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dirFile.mkdirs(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            File file = new File(dirName, fileName);// 可以是任何图片格式.jpg,.png等 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileOutputStream fos = new FileOutputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (inputStream != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    byte[] b = new byte[1024]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int nRead = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    while ((nRead = inputStream.read(b)) != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        fos.write(b, 0, nRead); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        fos.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        fos.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileItem fileItem = new DiskFileItem("mainFile", Files.probeContentType(file.toPath()), false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    file.getName(), (int) file.length(), file.getParentFile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try (InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream();) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                IOUtils.copy(input, os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                MultipartFile multipartFile = new CommonsMultipartFile(fileItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String url = FileManager.upload(multipartFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return R.ok().put("url", url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return R.ok().put("url", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void deleteFile(File dirFile){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(dirFile.exists()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(dirFile.isFile()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dirFile.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(File file:dirFile.listFiles()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    deleteFile(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |