| @@ -7,9 +7,9 @@ import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | 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.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -30,6 +30,236 @@ public class WxCardController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private FmOpenService openService; | 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("获取用户卡券") | @ApiOperation("获取用户卡券") | ||||
| @GetMapping("getCardList/{appId}") | @GetMapping("getCardList/{appId}") | ||||
| public ResultData getCardList(@PathVariable String appId, String openId) { | public ResultData getCardList(@PathVariable String appId, String openId) { | ||||