| @@ -7,9 +7,9 @@ import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import me.chanjar.weixin.common.error.WxErrorException; | |||
| import me.chanjar.weixin.mp.api.WxMpService; | |||
| import me.chanjar.weixin.mp.bean.card.WxMpCardBatchGetResult; | |||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||
| import me.chanjar.weixin.mp.bean.card.WxMpCardUserGetCardListResult; | |||
| import me.chanjar.weixin.mp.bean.card.*; | |||
| import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; | |||
| import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardCreateMessage; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| @@ -30,6 +30,236 @@ public class WxCardController extends BaseController { | |||
| @Autowired | |||
| private FmOpenService openService; | |||
| @ApiOperation("创建卡券") | |||
| @GetMapping("createCard/{appId}") | |||
| public ResultData createCard(@PathVariable String appId, String type) { | |||
| logger.debug("[" + getIpAddr() + "] WxCardController::createCard"); | |||
| BaseInfo base = new BaseInfo(); | |||
| base.setLogoUrl("http://mmbiz.qpic.cn/mmbiz_png/2kbqxXJ9VM94Uq1YAsZDPKcWnNIOU4lv2PJmgIf1HIicldDibj2xcXjwSeqI7ZTfUj0wOokFmurO6gA7ppzF0pug/0?wx_fmt=png"); | |||
| base.setBrandName("测试优惠券"); | |||
| base.setCodeType("CODE_TYPE_QRCODE"); | |||
| base.setTitle("测试标题"); | |||
| base.setColor("Color010"); | |||
| base.setNotice("测试Notice"); | |||
| base.setServicePhone("020-88888888"); | |||
| base.setDescription("不可与其他优惠同享\\n如需团购券发票,请在消费时向商户提出\\n店内均可使用,仅限堂食"); | |||
| DateInfo info = new DateInfo(); | |||
| info.setType("DATE_TYPE_FIX_TERM"); | |||
| info.setFixedBeginTerm(0); | |||
| info.setFixedTerm(30); | |||
| base.setDateInfo(info); | |||
| Sku sku = new Sku(); | |||
| sku.setQuantity(100); | |||
| base.setSku(sku); | |||
| base.setGetLimit(1); | |||
| base.setCanShare(true); | |||
| base.setCanGiveFriend(true); | |||
| base.setUseAllLocations(true); | |||
| base.setCenterTitle("顶部居中按钮"); | |||
| base.setCenterSubTitle("按钮下方的wording"); | |||
| base.setCenterUrl("www.qq.com"); | |||
| base.setCustomUrl("http://www.qq.com"); | |||
| base.setCustomUrlName("立即使用"); | |||
| base.setCustomUrlSubTitle("副标题tip"); | |||
| base.setPromotionUrlName("更多优惠"); | |||
| base.setPromotionUrl("http://www.qq.com"); | |||
| base.setLocationIdList("1234"); | |||
| WxMpService mpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId); | |||
| if(type.equalsIgnoreCase("groupon")) { | |||
| //团购券 | |||
| WxMpCardCreateMessage grouponMessage = new WxMpCardCreateMessage(); | |||
| GrouponCardCreateRequest grouponCardCreateRequest = new GrouponCardCreateRequest(); | |||
| GrouponCard grouponCard = new GrouponCard(); | |||
| grouponCard.setBaseInfo(base); | |||
| grouponCard.setDealDetail("deal detail"); | |||
| grouponCardCreateRequest.setGroupon(grouponCard); | |||
| grouponMessage.setCardCreateRequest(grouponCardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getCardService().createCard(grouponMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("cash")) { | |||
| //现金券 | |||
| WxMpCardCreateMessage cashMessage = new WxMpCardCreateMessage(); | |||
| CashCardCreateRequest cashCardCreateRequest = new CashCardCreateRequest(); | |||
| CashCard cashCard = new CashCard(); | |||
| cashCard.setBaseInfo(base); | |||
| cashCard.setLeastCost(1000); | |||
| cashCard.setReduceCost(100); | |||
| cashCardCreateRequest.setCash(cashCard); | |||
| cashMessage.setCardCreateRequest(cashCardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getCardService().createCard(cashMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("discount")) { | |||
| //折扣券 | |||
| WxMpCardCreateMessage discountMessage = new WxMpCardCreateMessage(); | |||
| DiscountCardCreateRequest discountCardCreateRequest = new DiscountCardCreateRequest(); | |||
| DiscountCard discountCard = new DiscountCard(); | |||
| discountCard.setBaseInfo(base); | |||
| discountCard.setDiscount(30); | |||
| discountCardCreateRequest.setDiscount(discountCard); | |||
| discountMessage.setCardCreateRequest(discountCardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getCardService().createCard(discountMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("gift")) { | |||
| //兑换券 | |||
| WxMpCardCreateMessage giftMessage = new WxMpCardCreateMessage(); | |||
| GiftCardCreateRequest giftCardCreateRequest = new GiftCardCreateRequest(); | |||
| GiftCard giftCard = new GiftCard(); | |||
| giftCard.setBaseInfo(base); | |||
| giftCard.setGift("星巴克雪瑞纳咖啡大杯"); | |||
| giftCardCreateRequest.setGift(giftCard); | |||
| giftMessage.setCardCreateRequest(giftCardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getCardService().createCard(giftMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("generalcard")) { | |||
| //普通兑换券 | |||
| WxMpCardCreateMessage generalMessage = new WxMpCardCreateMessage(); | |||
| GeneralCardCreateRequest generalCardCreateRequest = new GeneralCardCreateRequest(); | |||
| GeneralCard generalCard = new GeneralCard(); | |||
| generalCard.setBaseInfo(base); | |||
| generalCard.setDefaultDetail("音乐木盒"); | |||
| generalCardCreateRequest.setGeneralCoupon(generalCard); | |||
| generalMessage.setCardCreateRequest(generalCardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getCardService().createCard(generalMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("membercard")) { | |||
| //基本卡券创建 | |||
| WxMpMemberCardCreateMessage createMessage = new WxMpMemberCardCreateMessage(); | |||
| MemberCardCreateRequest cardCreateRequest = new MemberCardCreateRequest(); | |||
| MemberCard memberCard = new MemberCard(); | |||
| memberCard.setPrerogative("特权说明"); | |||
| //激活方式 | |||
| memberCard.setAutoActivate(true);//自动激活 | |||
| // memberCard.setActivateUrl("http://www.qq.com"); | |||
| // memberCard.setWxActivate(false);//微信激活 | |||
| memberCard.setSupplyBonus(true); | |||
| memberCard.setSupplyBalance(false); | |||
| memberCard.setBackgroundPicUrl(null); | |||
| memberCard.setDiscount(0); | |||
| BaseInfo baseInfo = new BaseInfo(); | |||
| baseInfo.setLogoUrl("http://mmbiz.qpic.cn/mmbiz_png/2kbqxXJ9VM94Uq1YAsZDPKcWnNIOU4lv2PJmgIf1HIicldDibj2xcXjwSeqI7ZTfUj0wOokFmurO6gA7ppzF0pug/0?wx_fmt=png"); | |||
| baseInfo.setCodeType("CODE_TYPE_QRCODE"); | |||
| baseInfo.setBrandName("金泸科技"); | |||
| baseInfo.setTitle("铂金用户贵宾卡"); | |||
| baseInfo.setColor("Color010"); | |||
| baseInfo.setNotice("卡券使用提醒"); | |||
| baseInfo.setDescription("卡券使用说明"); | |||
| baseInfo.setServicePhone("4008803016"); | |||
| //商品信息 | |||
| Sku sku1 = new Sku(); | |||
| baseInfo.setSku(sku1); | |||
| //使用日期 | |||
| DateInfo dateInfo = new DateInfo(); | |||
| baseInfo.setDateInfo(dateInfo); | |||
| memberCard.setBaseInfo(baseInfo); | |||
| memberCard.setBonusRules("请参考积分规则"); | |||
| cardCreateRequest.setMemberCard(memberCard); | |||
| createMessage.setCardCreateRequest(cardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getMemberCardService().createMemberCard(createMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } else if(type.equalsIgnoreCase("giftcard")) { | |||
| //基本卡券创建 | |||
| WxMpMemberCardCreateMessage createMessage = new WxMpMemberCardCreateMessage(); | |||
| MemberCardCreateRequest cardCreateRequest = new MemberCardCreateRequest(); | |||
| MemberCard memberCard = new MemberCard(); | |||
| memberCard.setPrerogative("特权说明"); | |||
| //激活方式 | |||
| memberCard.setAutoActivate(true);//自动激活 | |||
| // memberCard.setActivateUrl("http://www.qq.com"); | |||
| // memberCard.setWxActivate(false);//微信激活 | |||
| memberCard.setSupplyBonus(true); | |||
| memberCard.setSupplyBalance(false); | |||
| memberCard.setBackgroundPicUrl(null); | |||
| memberCard.setDiscount(0); | |||
| BaseInfo baseInfo = new BaseInfo(); | |||
| baseInfo.setLogoUrl("http://mmbiz.qpic.cn/mmbiz_png/2kbqxXJ9VM94Uq1YAsZDPKcWnNIOU4lv2PJmgIf1HIicldDibj2xcXjwSeqI7ZTfUj0wOokFmurO6gA7ppzF0pug/0?wx_fmt=png"); | |||
| baseInfo.setCodeType("CODE_TYPE_QRCODE"); | |||
| baseInfo.setBrandName("金泸科技"); | |||
| baseInfo.setTitle("铂金用户贵宾卡"); | |||
| baseInfo.setColor("Color010"); | |||
| baseInfo.setNotice("卡券使用提醒"); | |||
| baseInfo.setDescription("卡券使用说明"); | |||
| baseInfo.setServicePhone("4008803016"); | |||
| //商品信息 | |||
| Sku sku1 = new Sku(); | |||
| baseInfo.setSku(sku1); | |||
| //使用日期 | |||
| DateInfo dateInfo = new DateInfo(); | |||
| baseInfo.setDateInfo(dateInfo); | |||
| memberCard.setBaseInfo(baseInfo); | |||
| memberCard.setBonusRules("请参考积分规则"); | |||
| cardCreateRequest.setMemberCard(memberCard); | |||
| createMessage.setCardCreateRequest(cardCreateRequest); | |||
| try { | |||
| WxMpCardCreateResult result = mpService.getMemberCardService().createMemberCard(createMessage); | |||
| logger.info(result.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("发送客服消息-用户卡券") | |||
| @GetMapping("sendCard/{appId}") | |||
| public ResultData sendCard(@PathVariable String appId, String openId, String cardId) { | |||
| logger.debug("[" + getIpAddr() + "] WxCardController::sendCard"); | |||
| WxMpKefuMessage kfMessage = new WxMpKefuMessage(); | |||
| kfMessage.setToUser(openId); | |||
| kfMessage.setMsgType("wxcard"); | |||
| kfMessage.setCardId(cardId); | |||
| try { | |||
| WxMpService mpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId); | |||
| boolean result = mpService.getKefuService().sendKefuMessage(kfMessage); | |||
| logger.info("{}", result); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("获取用户卡券") | |||
| @GetMapping("getCardList/{appId}") | |||
| public ResultData getCardList(@PathVariable String appId, String openId) { | |||