mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
🎨 #1233 公众号模板消息设置行业信息接口优化,增加枚举类 WxMpTemplateIndustryEnum 方便使用
This commit is contained in:
parent
48586de7d9
commit
159347eb9b
@ -24,7 +24,9 @@ public interface WxMpTemplateMsgService {
|
||||
* 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||
* </pre>
|
||||
*
|
||||
* @param wxMpIndustry 行业信息
|
||||
* @return 是否成功
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
boolean setIndustry(WxMpTemplateIndustry wxMpIndustry) throws WxErrorException;
|
||||
|
||||
@ -35,6 +37,7 @@ public interface WxMpTemplateMsgService {
|
||||
* </pre>
|
||||
*
|
||||
* @return wxMpIndustry
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
WxMpTemplateIndustry getIndustry() throws WxErrorException;
|
||||
|
||||
@ -44,7 +47,9 @@ public interface WxMpTemplateMsgService {
|
||||
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||
* </pre>
|
||||
*
|
||||
* @param templateMessage 模板消息
|
||||
* @return 消息Id
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
String sendTemplateMsg(WxMpTemplateMessage templateMessage) throws WxErrorException;
|
||||
|
||||
@ -58,6 +63,7 @@ public interface WxMpTemplateMsgService {
|
||||
*
|
||||
* @param shortTemplateId 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式
|
||||
* @return templateId 模板Id
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
String addTemplate(String shortTemplateId) throws WxErrorException;
|
||||
|
||||
@ -70,6 +76,7 @@ public interface WxMpTemplateMsgService {
|
||||
* </pre>
|
||||
*
|
||||
* @return templateId 模板Id
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
List<WxMpTemplate> getAllPrivateTemplate() throws WxErrorException;
|
||||
|
||||
@ -82,6 +89,8 @@ public interface WxMpTemplateMsgService {
|
||||
* </pre>
|
||||
*
|
||||
* @param templateId 模板Id
|
||||
* @return .
|
||||
* @throws WxErrorException .
|
||||
*/
|
||||
boolean delPrivateTemplate(String templateId) throws WxErrorException;
|
||||
}
|
||||
|
@ -42,8 +42,8 @@ public class WxMpTemplateMsgServiceImpl implements WxMpTemplateMsgService {
|
||||
|
||||
@Override
|
||||
public boolean setIndustry(WxMpTemplateIndustry wxMpIndustry) throws WxErrorException {
|
||||
if (null == wxMpIndustry.getPrimaryIndustry() || null == wxMpIndustry.getPrimaryIndustry().getId()
|
||||
|| null == wxMpIndustry.getSecondIndustry() || null == wxMpIndustry.getSecondIndustry().getId()) {
|
||||
if (null == wxMpIndustry.getPrimaryIndustry() || null == wxMpIndustry.getPrimaryIndustry().getCode()
|
||||
|| null == wxMpIndustry.getSecondIndustry() || null == wxMpIndustry.getSecondIndustry().getCode()) {
|
||||
throw new IllegalArgumentException("行业Id不能为空,请核实");
|
||||
}
|
||||
|
||||
|
@ -1,28 +1,26 @@
|
||||
package me.chanjar.weixin.mp.bean.template;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class WxMpTemplateIndustry implements Serializable {
|
||||
private static final long serialVersionUID = -7700398224795914722L;
|
||||
|
||||
private Industry primaryIndustry;
|
||||
private Industry secondIndustry;
|
||||
|
||||
public WxMpTemplateIndustry() {
|
||||
}
|
||||
|
||||
public WxMpTemplateIndustry(Industry primaryIndustry, Industry secondIndustry) {
|
||||
this.primaryIndustry = primaryIndustry;
|
||||
this.secondIndustry = secondIndustry;
|
||||
}
|
||||
private WxMpTemplateIndustryEnum primaryIndustry;
|
||||
private WxMpTemplateIndustryEnum secondIndustry;
|
||||
|
||||
public static WxMpTemplateIndustry fromJson(String json) {
|
||||
return WxMpGsonBuilder.create().fromJson(json, WxMpTemplateIndustry.class);
|
||||
@ -41,29 +39,22 @@ public class WxMpTemplateIndustry implements Serializable {
|
||||
* 官方文档中,创建和获取的数据结构不一样。所以采用冗余字段的方式,实现相应的接口.
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public static class Industry implements Serializable {
|
||||
private static final long serialVersionUID = -1707184885588012142L;
|
||||
private String id;
|
||||
private String firstClass;
|
||||
private String secondClass;
|
||||
|
||||
public Industry() {
|
||||
}
|
||||
|
||||
public Industry(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Industry(String id, String firstClass, String secondClass) {
|
||||
this.id = id;
|
||||
this.firstClass = firstClass;
|
||||
this.secondClass = secondClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return WxMpGsonBuilder.create().toJson(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,224 @@
|
||||
package me.chanjar.weixin.mp.bean.template;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 模版消息行业枚举.
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
* @date 2019-10-18
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum WxMpTemplateIndustryEnum {
|
||||
/**
|
||||
* IT科技 - 互联网|电子商务
|
||||
*/
|
||||
E_COMMERCE("IT科技", "互联网|电子商务", 1),
|
||||
/**
|
||||
* IT科技 - IT软件与服务
|
||||
*/
|
||||
IT_SOFTWARE_AND_SERVICES("IT科技", "IT软件与服务", 2),
|
||||
/**
|
||||
* IT科技 - IT硬件与设备
|
||||
*/
|
||||
IT_HARDWARE_AND_EQUIPMENT("IT科技", "IT硬件与设备", 3),
|
||||
/**
|
||||
* IT科技 - 电子技术
|
||||
*/
|
||||
ELECTRONIC_TECHNIQUE("IT科技", "电子技术", 4),
|
||||
/**
|
||||
* IT科技 - 通信与运营商
|
||||
*/
|
||||
COMMUNICATION_AND_OPERATOR("IT科技", "通信与运营商", 5),
|
||||
/**
|
||||
* IT科技 - 网络游戏
|
||||
*/
|
||||
ONLINE_GAME("IT科技", "网络游戏", 6),
|
||||
/**
|
||||
* 金融业 - 银行
|
||||
*/
|
||||
BANK("金融业", "银行", 7),
|
||||
/**
|
||||
* 金融业 - 基金|理财|信托
|
||||
*/
|
||||
FUND("金融业", "基金|理财|信托", 8),
|
||||
/**
|
||||
* 金融业 - 保险
|
||||
*/
|
||||
INSURANCE("金融业", "保险", 9),
|
||||
/**
|
||||
* 餐饮 - 餐饮
|
||||
*/
|
||||
REPAST("餐饮", "餐饮", 10),
|
||||
/**
|
||||
* 酒店旅游 - 酒店
|
||||
*/
|
||||
HOTEL("酒店旅游", "酒店", 11),
|
||||
/**
|
||||
* 酒店旅游 - 旅游
|
||||
*/
|
||||
TRAVEL("酒店旅游", "旅游", 12),
|
||||
/**
|
||||
* 运输与仓储 - 快递
|
||||
*/
|
||||
EXPRESS("运输与仓储", "快递", 13),
|
||||
/**
|
||||
* 运输与仓储 - 物流
|
||||
*/
|
||||
LOGISTICS("运输与仓储", "物流", 14),
|
||||
/**
|
||||
* 运输与仓储 - 仓储
|
||||
*/
|
||||
STORAGE("运输与仓储", "仓储", 15),
|
||||
/**
|
||||
* 教育 - 培训
|
||||
*/
|
||||
CULTIVATE("教育", "培训", 16),
|
||||
/**
|
||||
* 教育 - 院校
|
||||
*/
|
||||
ACADEMY("教育", "院校", 17),
|
||||
/**
|
||||
* 政府与公共事业 - 学术科研
|
||||
*/
|
||||
ACADEMIC_RESEARCH("政府与公共事业", "学术科研", 18),
|
||||
/**
|
||||
* 政府与公共事业 - 交警
|
||||
*/
|
||||
TRAFFIC_POLICE("政府与公共事业", "交警", 19),
|
||||
/**
|
||||
* 政府与公共事业 - 博物馆
|
||||
*/
|
||||
MUSEUM("政府与公共事业", "博物馆", 20),
|
||||
/**
|
||||
* 政府与公共事业 - 公共事业|非盈利机构
|
||||
*/
|
||||
PUBLIC_WORKS_NONPROFIT("政府与公共事业", "公共事业|非盈利机构", 21),
|
||||
/**
|
||||
* 医药护理 - 医药医疗
|
||||
*/
|
||||
MEDICAL_HEALTH("医药护理", "医药医疗", 22),
|
||||
/**
|
||||
* 医药护理 - 护理美容
|
||||
*/
|
||||
CARE_AND_BEAUTY("医药护理", "护理美容", 23),
|
||||
/**
|
||||
* 医药护理 - 保健与卫生
|
||||
*/
|
||||
HEALTH_AND_HYGIENE("医药护理", "保健与卫生", 24),
|
||||
/**
|
||||
* 交通工具 - 汽车相关
|
||||
*/
|
||||
AUTOMOTIVE_RELATED("交通工具", "汽车相关", 25),
|
||||
/**
|
||||
* 交通工具 - 摩托车相关
|
||||
*/
|
||||
MOTORCYCLE_CORRELATION("交通工具", "摩托车相关", 26),
|
||||
/**
|
||||
* 交通工具 - 火车相关
|
||||
*/
|
||||
THE_TRAIN_RELATED("交通工具", "火车相关", 27),
|
||||
/**
|
||||
* 交通工具 - 飞机相关
|
||||
*/
|
||||
THE_PLANE_RELATED("交通工具", "飞机相关", 28),
|
||||
/**
|
||||
* 房地产 - 建筑
|
||||
*/
|
||||
ARCHITECTURE("房地产", "建筑", 29),
|
||||
/**
|
||||
* 房地产 - 物业
|
||||
*/
|
||||
REAL_ESTATE("房地产", "物业", 30),
|
||||
/**
|
||||
* 消费品 - 消费品
|
||||
*/
|
||||
CONSUMER_GOODS("消费品", "消费品", 31),
|
||||
/**
|
||||
* 商业服务 - 法律
|
||||
*/
|
||||
LEGISLATION("商业服务", "法律", 32),
|
||||
/**
|
||||
* 商业服务 - 会展
|
||||
*/
|
||||
CONVENTION_AND_EXHIBITION("商业服务", "会展", 33),
|
||||
/**
|
||||
* 商业服务 - 中介服务
|
||||
*/
|
||||
INTERMEDIARY_SERVICES("商业服务", "中介服务", 34),
|
||||
/**
|
||||
* 商业服务 - 认证
|
||||
*/
|
||||
AUTHENTICATION("商业服务", "认证", 35),
|
||||
/**
|
||||
* 商业服务 - 会计|审计
|
||||
*/
|
||||
AUDIT("商业服务", "会计|审计", 36),
|
||||
/**
|
||||
* 文体娱乐 - 传媒
|
||||
*/
|
||||
MASS_MEDIA("文体娱乐", "传媒", 37),
|
||||
/**
|
||||
* 文体娱乐 - 体育
|
||||
*/
|
||||
SPORTS("文体娱乐", "体育", 38),
|
||||
/**
|
||||
* 文体娱乐 - 娱乐休闲
|
||||
*/
|
||||
LEISURE_AND_ENTERTAINMENT("文体娱乐", "娱乐休闲", 39),
|
||||
/**
|
||||
* 印刷 - 印刷
|
||||
*/
|
||||
PRINTING("印刷", "印刷", 40),
|
||||
/**
|
||||
* 其它 - 其它
|
||||
*/
|
||||
OTHER("其它", "其它", 41);
|
||||
|
||||
/**
|
||||
* 主行业(一级行业)
|
||||
*/
|
||||
public final String firstClass;
|
||||
/**
|
||||
* 副行业(二级行业)
|
||||
*/
|
||||
public final String secondClass;
|
||||
/**
|
||||
* 行业代码
|
||||
*/
|
||||
public final Integer code;
|
||||
|
||||
/**
|
||||
* 查找行业
|
||||
*
|
||||
* @param industry 二级行业名称
|
||||
* @return .
|
||||
*/
|
||||
public static WxMpTemplateIndustryEnum findBySecondary(String industry) {
|
||||
for (WxMpTemplateIndustryEnum industryEnum : WxMpTemplateIndustryEnum.values()) {
|
||||
if (industryEnum.secondClass.equals(industry)) {
|
||||
return industryEnum;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找行业
|
||||
*
|
||||
* @param code 行业编码
|
||||
* @return .
|
||||
*/
|
||||
public static WxMpTemplateIndustryEnum findByCode(int code) {
|
||||
for (WxMpTemplateIndustryEnum industryEnum : WxMpTemplateIndustryEnum.values()) {
|
||||
if (industryEnum.code == code) {
|
||||
return industryEnum;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -3,41 +3,32 @@ package me.chanjar.weixin.mp.util.json;
|
||||
import com.google.gson.*;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustryEnum;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
/**
|
||||
* @author miller
|
||||
*/
|
||||
public class WxMpIndustryGsonAdapter
|
||||
implements JsonSerializer<WxMpTemplateIndustry>, JsonDeserializer<WxMpTemplateIndustry> {
|
||||
private static WxMpTemplateIndustry.Industry convertFromJson(JsonObject json) {
|
||||
WxMpTemplateIndustry.Industry industry = new WxMpTemplateIndustry.Industry();
|
||||
industry.setFirstClass(GsonHelper.getString(json, "first_class"));
|
||||
industry.setSecondClass(GsonHelper.getString(json, "second_class"));
|
||||
return industry;
|
||||
}
|
||||
|
||||
public class WxMpIndustryGsonAdapter implements JsonSerializer<WxMpTemplateIndustry>, JsonDeserializer<WxMpTemplateIndustry> {
|
||||
@Override
|
||||
public JsonElement serialize(WxMpTemplateIndustry wxMpIndustry, Type type,
|
||||
JsonSerializationContext jsonSerializationContext) {
|
||||
public JsonElement serialize(WxMpTemplateIndustry wxMpIndustry, Type type, JsonSerializationContext context) {
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("industry_id1", wxMpIndustry.getPrimaryIndustry().getId());
|
||||
json.addProperty("industry_id2", wxMpIndustry.getSecondIndustry().getId());
|
||||
json.addProperty("industry_id1", wxMpIndustry.getPrimaryIndustry().getCode());
|
||||
json.addProperty("industry_id2", wxMpIndustry.getSecondIndustry().getCode());
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxMpTemplateIndustry deserialize(JsonElement jsonElement, Type type,
|
||||
JsonDeserializationContext jsonDeserializationContext)
|
||||
public WxMpTemplateIndustry deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context)
|
||||
throws JsonParseException {
|
||||
WxMpTemplateIndustry wxMpIndustry = new WxMpTemplateIndustry();
|
||||
JsonObject primaryIndustry = jsonElement.getAsJsonObject()
|
||||
.get("primary_industry").getAsJsonObject();
|
||||
wxMpIndustry.setPrimaryIndustry(convertFromJson(primaryIndustry));
|
||||
JsonObject secondaryIndustry = jsonElement.getAsJsonObject()
|
||||
.get("secondary_industry").getAsJsonObject();
|
||||
wxMpIndustry.setSecondIndustry(convertFromJson(secondaryIndustry));
|
||||
return wxMpIndustry;
|
||||
return new WxMpTemplateIndustry()
|
||||
.setPrimaryIndustry(this.convertFromJson(jsonElement.getAsJsonObject().get("primary_industry").getAsJsonObject()))
|
||||
.setSecondIndustry(this.convertFromJson(jsonElement.getAsJsonObject().get("secondary_industry").getAsJsonObject()));
|
||||
}
|
||||
|
||||
private WxMpTemplateIndustryEnum convertFromJson(JsonObject json) {
|
||||
return WxMpTemplateIndustryEnum.findBySecondary(GsonHelper.getString(json, "second_class"));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,10 +5,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.test.ApiTestModule;
|
||||
import me.chanjar.weixin.mp.api.test.TestConfigStorage;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplate;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry;
|
||||
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
|
||||
import me.chanjar.weixin.mp.bean.template.*;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Guice;
|
||||
@ -32,10 +29,8 @@ public class WxMpTemplateMsgServiceImplTest {
|
||||
|
||||
@Test(invocationCount = 5, threadPoolSize = 3)
|
||||
public void testSendTemplateMsg() throws WxErrorException {
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat(
|
||||
"yyyy-MM-dd HH:mm:ss.SSS");
|
||||
TestConfigStorage configStorage = (TestConfigStorage) this.wxService
|
||||
.getWxMpConfigStorage();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
TestConfigStorage configStorage = (TestConfigStorage) this.wxService.getWxMpConfigStorage();
|
||||
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
||||
.toUser(configStorage.getOpenid())
|
||||
.templateId(configStorage.getTemplateId())
|
||||
@ -58,8 +53,8 @@ public class WxMpTemplateMsgServiceImplTest {
|
||||
|
||||
@Test
|
||||
public void testSetIndustry() throws Exception {
|
||||
WxMpTemplateIndustry industry = new WxMpTemplateIndustry(new WxMpTemplateIndustry.Industry("1"),
|
||||
new WxMpTemplateIndustry.Industry("04"));
|
||||
WxMpTemplateIndustry industry = new WxMpTemplateIndustry(WxMpTemplateIndustryEnum.findByCode(1),
|
||||
WxMpTemplateIndustryEnum.findByCode(4));
|
||||
boolean result = this.wxService.getTemplateMsgService().setIndustry(industry);
|
||||
Assert.assertTrue(result);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user