Przeglądaj źródła

牙刷618活动,好友助力

wangxiaoming 7 lat temu
rodzic
commit
271d76b21d

+ 15 - 4
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ImageUtils.java

@@ -107,7 +107,7 @@ public final class ImageUtils {
                 y = heightDiff;
             }
             g.drawString(pressText, x, y + height_1);
-            
+
             /**
              * 水印图片
              */
@@ -129,10 +129,10 @@ public final class ImageUtils {
                                  String srcImg2, int imgx2, int imgy2,
                                  String pressText, int x, int y,Color colorName,int sizeNum
         ) throws Exception{
-            String fontName = "体";
+            String fontName = "体";
             int fontStyle = Font.BOLD;
-            int fontSize = 25;
-            Color color = Color.RED;
+            int fontSize = sizeNum;
+            Color color = colorName;
             float alpha = 1;
 
             /**
@@ -165,6 +165,17 @@ public final class ImageUtils {
             }
             g.drawString(pressText, x, y + height_1);
 
+//        Graphics2D g2d = (Graphics2D) g;
+//        g2d.setFont(new Font("宋体", Font.BOLD, 30));
+//        FontMetrics fm = g2d.getFontMetrics();
+//        String str = "文本居中";
+//        int stringWidth = fm.stringWidth(str);
+//        int stringAscent = fm.getAscent();
+//        int stringDescent = fm.getDescent ();
+//        int x = this.getWidth() / 2 - stringWidth / 2;
+//        int y = this.getHeight() / 2 + (stringAscent - stringDescent) / 2;
+//        g2d.drawString(str, x, y);
+
             Image tarImage = ImageIO.read(new File(srcImg1));
             g.drawImage(tarImage, imgx1, imgy1, tarImage.getWidth(null), tarImage.getHeight(null), null); // 水印文件结束
 

+ 12 - 11
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/PosterNumUtils.java

@@ -9,22 +9,23 @@ public class PosterNumUtils {
     public static final String IMG_PATH = "common/images/activity/";
     public static final String OLD_IMG_PATH = "common/images/activity/ditu.jpg";
 
-    public static final int CODE_WIDTH = 100;
-    public static final int CODE_HEIGHT = 100;
+    public static final int CODE_WIDTH = 153;
+    public static final int CODE_HEIGHT = 153;
 
-    public static final int HEAD_WIDTH = 80;
-    public static final int HEAD_HEIGHT = 80;
+    public static final int HEAD_WIDTH = 132;
+    public static final int HEAD_HEIGHT = 132;
 
-    public static final int TEXT_X = 100;
-    public static final int TEXT_Y = 30;
+//    public static final int TEXT_X = 220;
+    public static final int TEXT_X = -1;
+    public static final int TEXT_Y = 558;
 
-    public static final int HEAD_X = 20;
-    public static final int HEAD_Y = 20;
+    public static final int HEAD_X = 279;
+    public static final int HEAD_Y = 398;
 
-    public static final int CODE_X = 400;
-    public static final int CODE_Y = 600;
+    public static final int CODE_X = 270;
+    public static final int CODE_Y = 1070;
 
-    public static final int TEXT_FONT_SIZE = 30;
+    public static final int TEXT_FONT_SIZE = 35;
 
 
 }

+ 1 - 1
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -31,7 +31,7 @@ public class ResultInfo {
 	public  static String lostMemberInfo="";
 
 	public  static String barCodePrefix="MACHINE_QR_CODE";
-	public  static String barCodeActivity="OPENID";
+	public  static String barCodeActivity="ACTIVITY_OPENID";
 	/**
 	 * 初始化代理商信息openid成功前缀
 	 */

+ 9 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/activity/ActivityService.java

@@ -42,4 +42,13 @@ public interface ActivityService {
      * @return Integer
      */
     Integer  update(Activity  activity);
+
+
+    /**
+     * 好友助力
+     * @param openId
+     * @param activityOpenId
+     * @return
+     */
+    Integer  addActivityHelp(String openId,String activityOpenId);
 }

+ 44 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/activity/ActivityServiceImpl.java

@@ -1,9 +1,11 @@
 package com.iamberry.wechat.service.activity;
 
 import com.iamberry.wechat.core.entity.activity.Activity;
+import com.iamberry.wechat.core.entity.activity.ActivityHelp;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.face.activity.ActivityService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
+import com.iamberry.wechat.service.mapper.ActivityHelpMapper;
 import com.iamberry.wechat.service.mapper.ActivityMapper;
 import com.iamberry.wechat.service.mapper.CouponItemMapper;
 import com.iamberry.wechat.tools.StrUtils;
@@ -25,6 +27,8 @@ public class ActivityServiceImpl  implements ActivityService {
     @Autowired
     private ActivityMapper activityMapper;
     @Autowired
+    private ActivityHelpMapper activityHelpMapper;
+    @Autowired
     private CouponItemMapper couponItemMapper;
 
     /**
@@ -98,4 +102,44 @@ public class ActivityServiceImpl  implements ActivityService {
         return  flag;
     }
 
+    /**
+     * 好友助力
+     * @param openId
+     * @param activityOpenId
+     * @return
+     */
+    @Override
+    @Transactional
+    public  Integer  addActivityHelp(String openId,String activityOpenId){
+        Activity activity = new Activity();
+        activity.setUserOpenId(openId);
+        List<Activity> activityList = activityMapper.getActivityList(activity);
+        if(activityList == null || activityList.size() < 1){
+            return 0;
+        }
+        activity = activityList.get(0);
+
+        Activity ac = new Activity();
+        ac.setActivityId(activity.getActivityId());
+        //已有多少人助力
+        Integer  activityAlreadyHelp = activity.getActivityAlreadyHelp() + 1;
+        if(activityAlreadyHelp >= activity.getActivityAllHelp()){
+            ac.setActivityStatus(2);
+        }
+        ac.setActivityAlreadyHelp(activityAlreadyHelp);
+        Integer flag = activityMapper.update(ac);
+        if(flag < 1){
+            throw new RuntimeException("添加次数失败");
+        }
+
+        ActivityHelp activityHelp = new ActivityHelp();
+        activityHelp.setActivityId(activity.getActivityId());
+        activityHelp.setUserOpenId(activityOpenId);
+        flag = activityHelpMapper.save(activityHelp);
+        if(flag < 1){
+            throw new RuntimeException("添加助力好友失败");
+        }
+        return  flag;
+    }
+
 }

+ 73 - 35
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -1,50 +1,39 @@
 package com.iamberry.wechat.service.wechat;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.iamberry.wechat.core.entity.machineNumber.MachineNumber;
-import com.iamberry.wechat.face.machineNumber.MachineNumberService;
-import com.iamberry.wechat.tools.*;
-import net.sf.json.JSONObject;
-
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.drp.PlaceInfo;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.qrcode.Qrcode;
 import com.iamberry.wechat.core.entity.qrcode.TemporaryQrcode;
-import com.iamberry.wechat.core.entity.wx.ImageTextInfo;
-import com.iamberry.wechat.core.entity.wx.ImageTextMore;
-import com.iamberry.wechat.core.entity.wx.KeyWord;
-import com.iamberry.wechat.core.entity.wx.MenuKeySet;
-import com.iamberry.wechat.core.entity.wx.Status;
-import com.iamberry.wechat.core.entity.wx.TextMessage;
+import com.iamberry.wechat.core.entity.wx.*;
+import com.iamberry.wechat.face.activity.ActivityService;
 import com.iamberry.wechat.face.admin.SystemService;
 import com.iamberry.wechat.face.drp.PlaceInfoService;
 import com.iamberry.wechat.face.home.HomeService;
+import com.iamberry.wechat.face.machineNumber.MachineNumberService;
 import com.iamberry.wechat.face.qrcode.QrcodeService;
 import com.iamberry.wechat.face.qrcode.TemporaryQrcodeService;
-import com.iamberry.wechat.face.wechat.ImageTextInfoService;
-import com.iamberry.wechat.face.wechat.ImageTextMoreService;
-import com.iamberry.wechat.face.wechat.KeyWordService;
-import com.iamberry.wechat.face.wechat.MenuKeySetService;
-import com.iamberry.wechat.face.wechat.WeChatService;
+import com.iamberry.wechat.face.wechat.*;
 import com.iamberry.wechat.service.MessageManager;
 import com.iamberry.wechat.service.MessageUtil;
 import com.iamberry.wechat.service.ShopUtil;
 import com.iamberry.wechat.service.mapper.PlaceInfoMapper;
 import com.iamberry.wechat.service.relationship.Dao.WdRelationDao;
+import com.iamberry.wechat.tools.*;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * description : wechat handler的核心服务类
@@ -53,6 +42,9 @@ import com.iamberry.wechat.service.relationship.Dao.WdRelationDao;
  */
 @Service
 public class WeChatServiceImpl implements WeChatService {
+
+	private Logger logger = LoggerFactory.getLogger(WeChatServiceImpl.class);
+
 	@Autowired
 	private KeyWordService keyWordService;
 	@Autowired
@@ -79,6 +71,8 @@ public class WeChatServiceImpl implements WeChatService {
 	private WdRelationDao wdRelationDao;
 	@Autowired
 	private MachineNumberService machineNumberService;
+	@Autowired
+	private ActivityService activityService;
 	/**
 	 * 处理微信发来的请求
 	 * @param FromUserName
@@ -169,6 +163,7 @@ public class WeChatServiceImpl implements WeChatService {
 				
 				String eventType = requestMap.get("Event");// 事件类型
 				String eventKey = requestMap.get("EventKey");
+
 				if(eventType.equals("SCAN")){
 
 					//扫描机器二维码返回跳转到完善信息页面
@@ -178,7 +173,7 @@ public class WeChatServiceImpl implements WeChatService {
 							return status.getCountext();
 						}
 						respContent = status.getCountext();
-					} else {
+					}else {
 						// 已关注用户扫描二维码事件
 						int flag = subUserScannQrcodeEvent(requestMap, fromUserName);
 						if (flag == 1 ) {
@@ -192,7 +187,9 @@ public class WeChatServiceImpl implements WeChatService {
 							respContent = ResultInfo.subDefaultResponseText;
 						} else if (flag == 4) {
 							respContent = "欢迎您关注美国watero!您已享受购买水机终身优惠价3280元(普通会员销售价3680元),并且购买即赠三年滤芯套装,快来购买吧!<a href=\"http://w.iamberry.com/watero/wechat/wxCart/goProductList\">点击购买</a>";
-						} else {
+						} else if (flag == 5) {		//618好友助力
+
+						}else {
 							respContent = "欢迎您关注美国watero,恭喜您成为金牌会员。自己购买或者推荐朋友购买水机均将享受3280元优惠价,并免费赠送3年滤芯哦!点击菜单“分销中心-代理分销”可进入您的专属分销管理中心。";
 						}
 					}
@@ -207,6 +204,12 @@ public class WeChatServiceImpl implements WeChatService {
 								return status.getCountext();
 							}
 							respContent = status.getCountext();
+						} else if(eventKey.indexOf(ResultInfo.barCodeActivity) != -1){
+							Status status = bindingActivity(requestMap, fromUserName);
+							if (status.isFlag()) {
+								return status.getCountext();
+							}
+							respContent = status.getCountext();
 						} else {
 							//未关注用户扫描二维码关注事件处理
 							Status status = scannQRcodeSub(requestMap, fromUserName);
@@ -254,14 +257,47 @@ public class WeChatServiceImpl implements WeChatService {
 	}
 
 	/**
+	 * 618h好友助力
+	 * @param requestMap
+	 */
+	public Status bindingActivity(Map<String, String> requestMap, String fromUserName) {
+		Status status = new Status();
+		String senceid = requestMap.get("EventKey");//场景值
+		System.out.println("场景值"+senceid);
+		senceid = senceid.replaceAll(ResultInfo.barCodeActivity,"");//替换标识前的字符串
+		StringBuilder str = new StringBuilder();
+		try {
+			Integer flag = activityService.addActivityHelp(senceid,fromUserName);
+			if(flag < 1){
+				str.append("哇!确认过眼神,你将获得我们618天猫上朵旗舰店隐藏福利!");
+				str.append("现在立即TB搜索【上朵旗舰店】,联系客服,报福利暗号“618上朵”");
+				str.append("即可获赠额外50元优惠券哦~数量有限,赶紧行动起来哈~~~”");
+				logger.info(senceid + "的助力任务助力失败,助力好友为:"+fromUserName);
+			}else{
+				str.append("哇!确认过眼神,你将获得我们618天猫上朵旗舰店隐藏福利!");
+				str.append("现在立即TB搜索【上朵旗舰店】,联系客服,报福利暗号“618上朵”");
+				str.append("即可获赠额外50元优惠券哦~数量有限,赶紧行动起来哈~~~”");
+				logger.info(senceid + "的助力任务助力成功,助力好友为:"+fromUserName);
+			}
+		} catch (Exception e) {
+			inLongLogger.info(senceid + "的助力任务助力失败,助力好友为:"+fromUserName);
+			str.append("助力失败,请重试!");
+		}
+		status.setCountext(str.toString());
+		status.setFlag(false);
+		return status;
+	}
+
+	/**
 	 * 扫码进入赠送礼品信息页面(已关注)
 	 * @param requestMap
 	 */
 	public Status scannQrcodeGiveGift(Map<String, String> requestMap, String fromUserName) {
 		Status status = new Status();
 		String senceid = requestMap.get("EventKey");//场景值
+		System.out.println("场景值"+senceid);
 		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
-        String str = bindingMachine(senceid, fromUserName);
+		String str = bindingMachine(senceid, fromUserName);
         status.setCountext(str);
 		status.setFlag(false);
 		return status;
@@ -275,7 +311,6 @@ public class WeChatServiceImpl implements WeChatService {
 	public Status scannQrcodeSubGiveGift(Map<String, String> requestMap, String fromUserName) {
 		//赋值&更新数据
 		Status status = new Status();
-		Member member = refreshUserInfo(fromUserName);
 		String senceid = requestMap.get("EventKey");//场景值
 		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
 		String str = bindingMachine(senceid, fromUserName);
@@ -322,7 +357,7 @@ public class WeChatServiceImpl implements WeChatService {
 			return str.toString();
 		}
 	}
-	
+
 	/**
 	 * 绑定代理商信息(激活 微信openid绑定商户)
 	 * @param content
@@ -382,6 +417,9 @@ public class WeChatServiceImpl implements WeChatService {
 	 */
 	public int subUserScannQrcodeEvent(Map<String, String> requestMap, String fromUserName) throws Exception {
 		String senceid = requestMap.get("EventKey");//已经关注用户扫描二维码触发事件:获取二维码场景值
+
+		System.out.println("场景值sxx:"+senceid);
+
 		Member member = refreshUserInfo(fromUserName);
 		// 是否更新数据
 		boolean isNew = false;

+ 36 - 7
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/activity/ActivityHandler.java

@@ -4,7 +4,6 @@ import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.activity.Activity;
 import com.iamberry.wechat.core.entity.activity.ActivityHelp;
-import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.wx.QRCJson;
 import com.iamberry.wechat.face.activity.ActivityHelpService;
@@ -24,7 +23,6 @@ import javax.servlet.http.HttpServletRequest;
 import java.awt.*;
 import java.io.File;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -36,6 +34,7 @@ import java.util.List;
 @RequestMapping("/wechat/activity")
 public class ActivityHandler {
 
+
 	private static String ditupath = "";
 
 	@Autowired
@@ -128,7 +127,7 @@ public class ActivityHandler {
 	 */
 	@ResponseBody
 	@RequestMapping("/participate_activity")
-	public ResultMsg getColorPatterns(HttpServletRequest req){
+	public synchronized ResultMsg getColorPatterns(HttpServletRequest req){
 		long start = new Date().getTime();
 
 		ResultMsg rm = ResultMsg.getSuccess();
@@ -178,8 +177,11 @@ public class ActivityHandler {
 			activity.setActivityCodeImg(codeImgPath);
 			activity.setActivityImg(imgPath);
 			activity.setActivityStatus(1);
-			Integer f = activityService.save(activity);
-
+			List<Activity> acList = activityService.getActivityList(activity);
+			Integer f = 0;
+			if(acList==null || acList.size() < 1 ){
+				f = activityService.save(activity);
+			}
 			long end = new Date().getTime();
 			System.out.println("生成时间为:"+ (end-start));
 			if(f < 1){
@@ -196,6 +198,33 @@ public class ActivityHandler {
 		}
 	}
 
+	/**
+	 * 获取活动信息
+	 * @param req
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/get_activity")
+	public ResultMsg getActivity(HttpServletRequest req){
+		ResultMsg rm = ResultMsg.getSuccess();
+
+		Member member = WechatUtils.getUserBySession(req);
+		member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+
+		/*未参与过的*/
+		Activity activity = new Activity();
+		activity.setUserOpenId(member.getUserOpenid());
+		List<Activity> activityList = activityService.getActivityList(activity);
+		if(activityList != null && activityList.size() >  0){
+			rm.addData("activity",activityList.get(0));
+			return rm;
+		}else{
+			rm = ResultMsg.getError();
+			rm.setMessage("未参与活动");
+			return rm;
+		}
+	}
+
 
 	/**
 	 * 生成海报
@@ -221,8 +250,8 @@ public class ActivityHandler {
 		QRCJson qrc = WeixinUtil.createQrcode(json);
 		try {
 			/*下载二维码*/
-			DownloadWXCodeUtil.downloadByNIO2(qrc.getUrl(),codeName,path,PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT);
-			DownloadWXCodeUtil.downloadByNIO2(member.getUserHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT);
+			DownloadWXCodeUtil.downloadByNIO2(qrc.getUrl(),codeName,path,PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT,false);
+			DownloadWXCodeUtil.downloadByNIO2(member.getUserHead(),headName,path,PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT,true);
 
 			/*海报位置*/
 			String newImg = path+imgName;

+ 9 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wechat/event/WeChatHandler.java

@@ -57,6 +57,15 @@ public class WeChatHandler {
 					requestMap.get("CreateTime"), requestMap.get("Content"), 
 					requestMap.get("Event"), requestMap.get("Ticket"), 
 					requestMap.get("EventKey"));
+
+			System.out.println(requestMap.get("FromUserName"));
+			System.out.println(requestMap.get("ToUserName"));
+			System.out.println( requestMap.get("MsgType"));
+			System.out.println(requestMap.get("CreateTime"));
+			System.out.println(requestMap.get("Event"));
+			System.out.println(requestMap.get("EventKey"));
+			System.out.println(requestMap.get("Ticket"));
+
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

+ 12 - 4
tooth-wechat-web/src/main/java/com/iamberry/wechat/test/Test.java

@@ -1,8 +1,8 @@
 package com.iamberry.wechat.test;
 
+import com.iamberry.wechat.core.entity.wx.QRCJson;
 import com.iamberry.wechat.file.FileUtils;
-import com.iamberry.wechat.tools.ImageUtils;
-import com.iamberry.wechat.tools.PosterNumUtils;
+import com.iamberry.wechat.tools.*;
 import com.iamberry.wechat.utils.DownloadWXCodeUtil;
 
 import java.awt.*;
@@ -11,14 +11,22 @@ import java.util.Date;
 public class Test {
 
     public static void main(String[] args) {
+
+        //生成机器二维码
+//        String json = String.format(NameUtils.QR_SCENE, 2592000, ResultInfo.barCodeActivity + "123");
+//        QRCJson qrc = WeixinUtil.createQrcode(json);
+//
+//        if(true){
+//            return;
+//        }
         long start = new Date().getTime();
 
         long x = new Date().getTime();
         String url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEb8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVF4SHRiX2ZkaWgxa19aMDFyMU0AAgQ-8BhbAwQAjScA";
         String headUrl = "http://thirdwx.qlogo.cn/mmopen/Q3auHgzwzM5DPUwVaYlrN50M0vLJP3eNflBicuBCGdADmKJuZsf5Og1NxCc9FicibsWzrxZWtMibpdFviaItufuJK71C7kbKd2myN6FV7fYckCzA/132";
         try {
-            DownloadWXCodeUtil.downloadByNIO2(url,"ceshi.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT);
-            DownloadWXCodeUtil.downloadByNIO2(headUrl,"head.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT);
+            DownloadWXCodeUtil.downloadByNIO2(url,"ceshi.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.CODE_WIDTH,PosterNumUtils.CODE_HEIGHT,false);
+            DownloadWXCodeUtil.downloadByNIO2(headUrl,"head.png","E:\\java-work\\iamberry-tooth\\tooth-wechat-web\\src\\main\\webapp\\common\\images\\activity\\test\\",PosterNumUtils.HEAD_WIDTH,PosterNumUtils.HEAD_HEIGHT,true);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 22 - 9
tooth-wechat-web/src/main/java/com/iamberry/wechat/utils/DownloadWXCodeUtil.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.utils;
 
 import javax.imageio.ImageIO;
 import java.awt.*;
+import java.awt.geom.Ellipse2D;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
@@ -56,7 +57,7 @@ public class DownloadWXCodeUtil {
      * @param width
      * @param height
      */
-    public static void downloadByNIO2(String url,  String filename,String savePath,int width,int height) {
+    public static void downloadByNIO2(String url,  String filename,String savePath,int width,int height,boolean isCircular) {
         try (InputStream ins = new URL(url).openStream()) {
 //            JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(ins);
 //            BufferedImage image = decoderFile.decodeAsBufferedImage();
@@ -67,15 +68,27 @@ public class DownloadWXCodeUtil {
 //            ins.close();
 
             BufferedImage bi = ImageIO.read(ins);
-            Image srcImg = bi;
-            bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
-            bi.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
-            ImageIO.write(bi, "png", new File(savePath+filename));
+            if(isCircular){
+                int w = bi.getWidth();
+                int h = bi.getHeight();
+                BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+                Graphics2D g2 = output.createGraphics();
+                output = g2.getDeviceConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT);
+                g2.dispose();
+                g2 = output.createGraphics();
+                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+                g2.fillRoundRect(0, 0,w, h, 720, 720);
+                g2.setComposite(AlphaComposite.SrcIn);
+                g2.drawImage(bi, 0, 0, w, h, null);
+                g2.dispose();
+                ImageIO.write(output, "png", new File(savePath+filename));
+            }else{
+                Image srcImg = bi;
+                bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+                bi.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0,0, null);
+                ImageIO.write(bi, "png", new File(savePath+filename));
+            }
             ins.close();
-
-//			Path target = Paths.get(filename, savePath);
-//			Files.createDirectories(target.getParent());
-//			Files.copy(ins, target, StandardCopyOption.REPLACE_EXISTING);
         } catch (IOException e) {
             e.printStackTrace();
         }