| @@ -1,8 +1,6 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONArray; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| @@ -19,22 +17,16 @@ import com.iformall.mapper.WxCampaignMapper; | |||||
| import com.iformall.mapper.WxCouponChannelMapper; | import com.iformall.mapper.WxCouponChannelMapper; | ||||
| import com.iformall.mapper.WxScreenAdMapper; | import com.iformall.mapper.WxScreenAdMapper; | ||||
| import com.iformall.service.WxAppinfoService; | import com.iformall.service.WxAppinfoService; | ||||
| import com.iformall.service.WxCampaignService; | |||||
| import com.iformall.service.WxScreenAdService; | import com.iformall.service.WxScreenAdService; | ||||
| import com.iformall.utils.MaUtil; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.http.HttpEntity; | |||||
| import org.springframework.http.HttpHeaders; | |||||
| import org.springframework.http.MediaType; | |||||
| import org.springframework.http.ResponseEntity; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.web.client.RestTemplate; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.HashMap; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| @Service | @Service | ||||
| public class WxScreenAdServiceImpl implements WxScreenAdService { | public class WxScreenAdServiceImpl implements WxScreenAdService { | ||||
| @@ -157,8 +149,6 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { | |||||
| } | } | ||||
| } | } | ||||
| private static String wxacodeunlimit = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="; | |||||
| private static int QRCODE_WIDTH = 300; | private static int QRCODE_WIDTH = 300; | ||||
| private static String QRCODE_PAGE_HOME = "pages/index/index"; | private static String QRCODE_PAGE_HOME = "pages/index/index"; | ||||
| private static boolean QRCODE_AUTO_COLOR = false; | private static boolean QRCODE_AUTO_COLOR = false; | ||||
| @@ -169,44 +159,25 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { | |||||
| private static String QRCODE_JUMP_CMD_COUPON = "JC"; | private static String QRCODE_JUMP_CMD_COUPON = "JC"; | ||||
| private static String QRCODE_JUMP_CMD_CAMPGIN = "JB"; | private static String QRCODE_JUMP_CMD_CAMPGIN = "JB"; | ||||
| private byte[] getQrcode(Long id, int type, WxAppinfo appInfo) throws Exception { | private byte[] getQrcode(Long id, int type, WxAppinfo appInfo) throws Exception { | ||||
| String accessToken = appInfo.getAccessToken(); | |||||
| HttpHeaders headers = new HttpHeaders(); | |||||
| headers.setContentType(MediaType.APPLICATION_JSON); | |||||
| Map<String,Object> map = new HashMap<>(); | |||||
| if(appInfo == null) { | |||||
| logger.error("QRCODE get error: appinfo is null"); | |||||
| return null; | |||||
| } | |||||
| WxMaService wxMaService = MaUtil.getWeappService(appInfo); | |||||
| String scene = ""; | |||||
| if (EnumScreenAdType.COUPON.getCode().equals(type)) | if (EnumScreenAdType.COUPON.getCode().equals(type)) | ||||
| map.put("scene", QRCODE_JUMP_CMD_COUPON+":"+id.toString()); | |||||
| scene = QRCODE_JUMP_CMD_COUPON+":"+id.toString(); | |||||
| else if (EnumScreenAdType.CAMPAIGN.getCode().equals(type)) | else if (EnumScreenAdType.CAMPAIGN.getCode().equals(type)) | ||||
| map.put("scene", QRCODE_JUMP_CMD_CAMPGIN+":"+id.toString()); | |||||
| scene = QRCODE_JUMP_CMD_CAMPGIN+":"+id.toString(); | |||||
| else | else | ||||
| map.put("scene", QRCODE_JUMP_CMD_HOME+":"+"0"); | |||||
| map.put("page", QRCODE_PAGE_HOME); | |||||
| map.put("width", QRCODE_WIDTH); | |||||
| map.put("auto_color", QRCODE_AUTO_COLOR); | |||||
| map.put("is_hyaline", QRCODE_IS_HYALINE); | |||||
| //map.put("line_color", ); | |||||
| HttpEntity<Map<String,Object>> entity = new HttpEntity<Map<String,Object>>(map, headers); | |||||
| String reqUrl =wxacodeunlimit+accessToken; | |||||
| RestTemplate restTemplate = new RestTemplate(); | |||||
| ResponseEntity<byte[]> responseEntity = restTemplate.postForEntity(reqUrl, entity, byte[].class); | |||||
| byte[] result = null; | |||||
| if(responseEntity.hasBody()) { | |||||
| result = responseEntity.getBody(); | |||||
| try { | |||||
| JSONObject jResult = JSONObject.parseObject(result.toString()); | |||||
| if (jResult != null) { //error | |||||
| logger.error( "QRCODE get error:" + jResult.getIntValue("errcode")+"-"+ jResult.getString("errmsg")); | |||||
| return null; | |||||
| } | |||||
| } catch (Exception e) { | |||||
| return result; | |||||
| } | |||||
| } | |||||
| scene = QRCODE_JUMP_CMD_HOME+":"+"0"; | |||||
| logger.error( "QRCODE get error responseEntity:" + responseEntity.toString()); | |||||
| try { | |||||
| return wxMaService.getQrcodeService().createWxaCodeUnlimitBytes(scene, QRCODE_PAGE_HOME, QRCODE_WIDTH, QRCODE_AUTO_COLOR, null, QRCODE_IS_HYALINE); | |||||
| }catch (WxErrorException e) { | |||||
| logger.error("QRCODE get error: " + e.getMessage()); | |||||
| } | |||||
| return null; | return null; | ||||
| } | } | ||||
| } | } | ||||