Skip to content

Commit c60fda4

Browse files
authored
🆕 #1651 添加小程序直播间商品相关操作接口
Co-authored-by: lipengjun <pengjun92>
1 parent eec3f78 commit c60fda4

12 files changed

Lines changed: 681 additions & 59 deletions
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package cn.binarywang.wx.miniapp.api;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaLiveInfo;
4+
import cn.binarywang.wx.miniapp.bean.WxMaLiveResult;
5+
import me.chanjar.weixin.common.error.WxErrorException;
6+
7+
import java.util.List;
8+
9+
/**
10+
* <pre>
11+
* 直播间商品相关操作接口
12+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/commodity-api.html
13+
* Created by lipengjun on 2020/6/29.
14+
* </pre>
15+
*
16+
* @author <a href="https://github.com/lipengjun92">lipengjun (939961241@qq.com)</a>
17+
*/
18+
public interface WxMaLiveGoodsService {
19+
String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/add";
20+
String RESET_AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit";
21+
String AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/audit";
22+
String DELETE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/delete";
23+
String UPDATE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/update";
24+
String GET_GOODS_WARE_HOUSE = "https://api.weixin.qq.com/wxa/business/getgoodswarehouse";
25+
String GET_APPROVED_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved";
26+
27+
/**
28+
* 商品添加并提审
29+
* <pre>
30+
* 调用此接口上传并提审需要直播的商品信息,审核通过后商品录入【小程序直播】商品库
31+
* 注意:开发者必须保存【商品ID】与【审核单ID】,如果丢失,则无法调用其他相关接口
32+
* 调用额度:500次/一天
33+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/add?access_token=ACCESS_TOKEN
34+
* </pre>
35+
*
36+
* @param goods 商品
37+
* @return 返回auditId、goodsId
38+
* @throws WxErrorException .
39+
*/
40+
WxMaLiveResult addGoods(WxMaLiveInfo.Goods goods) throws WxErrorException;
41+
42+
/**
43+
* 撤回审核
44+
* <pre>
45+
* 调用此接口,可撤回直播商品的提审申请,消耗的提审次数不返还
46+
* 调用额度:500次/一天
47+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit?access_token=ACCESS_TOKEN
48+
* <pre>
49+
* @param auditId 审核单ID
50+
* @param goodsId 商品ID
51+
* @return 撤回审核是否成功
52+
* @throws WxErrorException .
53+
*/
54+
boolean resetAudit(Integer auditId, Integer goodsId) throws WxErrorException;
55+
56+
/**
57+
* 重新提交审核
58+
* <pre>
59+
* 调用此接口,可撤回直播商品的提审申请,消耗的提审次数不返还
60+
* 调用额度:500次/一天(与接口'商品添加并提审'共用500次限制)
61+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/audit?access_token=ACCESS_TOKEN
62+
* <pre>
63+
* @param goodsId 商品ID
64+
* @return 审核单ID
65+
* @throws WxErrorException .
66+
*/
67+
String auditGoods(Integer goodsId) throws WxErrorException;
68+
69+
/**
70+
* 删除商品
71+
* <pre>
72+
* 调用此接口,可删除【小程序直播】商品库中的商品,删除后直播间上架的该商品也将被同步删除,不可恢复;
73+
* 调用额度:1000次/一天
74+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/delete?access_token=ACCESS_TOKEN
75+
* <pre>
76+
* @param goodsId 商品ID
77+
* @return 删除商品是否成功
78+
* @throws WxErrorException .
79+
*/
80+
boolean deleteGoods(Integer goodsId) throws WxErrorException;
81+
82+
/**
83+
* 更新商品
84+
* <pre>
85+
* 调用此接口可以更新商品信息,审核通过的商品仅允许更新价格类型与价格,审核中的商品不允许更新,未审核的商品允许更新所有字段, 只传入需要更新的字段。
86+
* 调用额度:1000次/一天
87+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/update?access_token=ACCESS_TOKEN
88+
* </pre>
89+
*
90+
* @param goods 商品
91+
* @return 更新商品是否成功
92+
* @throws WxErrorException .
93+
*/
94+
boolean updateGoods(WxMaLiveInfo.Goods goods) throws WxErrorException;
95+
96+
/**
97+
* 获取商品状态
98+
* <pre>
99+
* 调用此接口可获取商品的信息与审核状态
100+
* 调用额度:1000次/一天
101+
* http请求方式:POST https://api.weixin.qq.com/wxa/business/getgoodswarehouse?access_token=ACCESS_TOKEN
102+
* <pre>
103+
* @param goodsIds 商品ID集
104+
* @return 商品状态信息
105+
* @throws WxErrorException .
106+
*/
107+
WxMaLiveResult getGoodsWareHouse(List<Integer> goodsIds) throws WxErrorException;
108+
109+
/**
110+
* 获取商品列表
111+
* <pre>
112+
* 调用此接口可获取商品列表
113+
* 调用额度:10000次/一天
114+
* http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved?access_token=ACCESS_TOKEN
115+
* <pre>
116+
* @param offset 分页条数起点
117+
* @param limit 分页大小,默认30,不超过100
118+
* @param status 商品状态,0:未审核。1:审核中,2:审核通过,3:审核驳回
119+
* @return 商品列表
120+
* @throws WxErrorException .
121+
*/
122+
WxMaLiveResult getApprovedGoods(Integer offset, Integer limit, Integer status) throws WxErrorException;
123+
}
Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.binarywang.wx.miniapp.api;
22

3-
import cn.binarywang.wx.miniapp.bean.WxMaGetLiveInfo;
3+
import cn.binarywang.wx.miniapp.bean.WxMaLiveInfo;
4+
import cn.binarywang.wx.miniapp.bean.WxMaLiveResult;
45
import me.chanjar.weixin.common.error.WxErrorException;
56

67
import java.util.List;
@@ -15,6 +16,22 @@
1516
*/
1617
public interface WxMaLiveService {
1718
String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo";
19+
String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create";
20+
String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods";
21+
22+
/**
23+
* 创建直播间
24+
* <pre>
25+
* 调用此接口创建直播间,创建成功后将在直播间列表展示,调用额度:10000次/一天
26+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#1
27+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/create?access_token=ACCESS_TOKEN
28+
* </pre>
29+
*
30+
* @param roomInfo 直播间信息
31+
* @return .
32+
* @throws WxErrorException .
33+
*/
34+
Integer createRoom(WxMaLiveInfo.RoomInfo roomInfo) throws WxErrorException;
1835

1936
/**
2037
* 获取直播房间列表.(分页)
@@ -24,39 +41,54 @@ public interface WxMaLiveService {
2441
* @return .
2542
* @throws WxErrorException .
2643
*/
27-
WxMaGetLiveInfo getLiveInfo(Integer start, Integer limit) throws WxErrorException;
44+
WxMaLiveResult getLiveInfo(Integer start, Integer limit) throws WxErrorException;
2845

2946
/**
3047
* 获取所有直播间信息(没有分页直接获取全部)
48+
*
3149
* @return
3250
* @throws WxErrorException
3351
*/
34-
List<WxMaGetLiveInfo.RoomInfo> getLiveinfos() throws WxErrorException;
52+
List<WxMaLiveResult.RoomInfo> getLiveinfos() throws WxErrorException;
3553

3654
/**
37-
*
3855
* 获取直播房间回放数据信息.
3956
*
40-
* @param action 获取回放
57+
* @param action 获取回放
4158
* @param room_id 直播间 id
42-
* @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取
43-
* @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内
59+
* @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取
60+
* @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内
4461
* @return
4562
* @throws WxErrorException
4663
*/
47-
WxMaGetLiveInfo getLiveReplay(String action, Integer room_id, Integer start, Integer limit) throws WxErrorException;
64+
WxMaLiveResult getLiveReplay(String action, Integer room_id, Integer start, Integer limit) throws WxErrorException;
4865

4966
/**
50-
*
5167
* 获取直播房间回放数据信息.
68+
* <p>
69+
* 获取回放 (默认:get_replay)
5270
*
53-
* 获取回放 (默认:get_replay)
5471
* @param room_id 直播间 id
55-
* @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取
56-
* @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内
72+
* @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取
73+
* @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内
5774
* @return
5875
* @throws WxErrorException
5976
*/
60-
WxMaGetLiveInfo getLiveReplay(Integer room_id, Integer start, Integer limit) throws WxErrorException;
77+
WxMaLiveResult getLiveReplay(Integer room_id, Integer start, Integer limit) throws WxErrorException;
6178

79+
/**
80+
* 直播间导入商品
81+
* <p>
82+
* 调用接口往指定直播间导入已入库的商品
83+
* 调用频率
84+
* 调用额度:10000次/一天
85+
* <p>
86+
* http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods?access_token=ACCESS_TOKEN
87+
* <pre>
88+
* @param roomId 房间ID
89+
* @param goodsIds 数组列表,可传入多个,里面填写 商品 ID
90+
* @return 导入商品是否成功
91+
* @throws WxErrorException .
92+
*/
93+
boolean addGoodsToRoom(Integer roomId, List<Integer> goodsIds) throws WxErrorException;
6294
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.binarywang.wx.miniapp.api;
2+
3+
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
4+
import me.chanjar.weixin.common.error.WxErrorException;
5+
6+
import java.io.File;
7+
8+
/**
9+
* <pre>
10+
* 素材管理的相关接口
11+
* 文档地址:https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html
12+
* Created by lipengjun on 2020/6/29.
13+
* </pre>
14+
*
15+
* @author <a href="https://github.com/lipengjun92">lipengjun (939961241@qq.com)</a>
16+
*/
17+
public interface WxMaMaterialService {
18+
String MEDIA_UPLOAD_URL = "https://api.weixin.qq.com/cgi-bin/media/upload?type=%s";
19+
/**
20+
* <pre>
21+
* 新增临时素材
22+
* 小程序获取临时素材,用于直播间商品
23+
* 素材管理接口对所有认证的订阅号和服务号开放。通过本接口,小程序可以新增临时素材(即上传临时多媒体文件),返回的mediaId用于直播间商品使用。
24+
* 请注意:
25+
* 1、对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源。
26+
* 2、media_id是可复用的。
27+
* 3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒,支持mp3/amr格式
28+
* 4、需使用https调用本接口。
29+
* 本接口即为原“上传多媒体文件”接口。
30+
* 注意事项:
31+
* 上传的临时多媒体文件有格式和大小限制,如下:
32+
* 图片(image): 2M,支持PNG\JPEG\JPG\GIF格式
33+
* 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
34+
* 视频(video):10MB,支持MP4格式
35+
* 缩略图(thumb):64KB,支持JPG格式
36+
* 媒体文件在后台保存时间为3天,即3天后media_id失效。
37+
* 详情请见: <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738726&token=&lang=zh_CN">新增临时素材</a>
38+
* 接口url格式:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
39+
* </pre>
40+
*
41+
* @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts}
42+
* @param file 文件对象
43+
* @throws WxErrorException
44+
*/
45+
WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException;
46+
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,4 +280,18 @@ public interface WxMaService extends WxService {
280280
* @return .
281281
*/
282282
WxMaLiveService getLiveService();
283+
284+
/**
285+
* 获取直播间商品服务对象
286+
*
287+
* @return .
288+
*/
289+
WxMaLiveGoodsService getLiveGoodsService();
290+
291+
/**
292+
* 获取小程序素材管理服务对象
293+
*
294+
* @return .
295+
*/
296+
WxMaMaterialService getMaterialService();
283297
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
5656
private final WxMaSubscribeService subscribeService = new WxMaSubscribeServiceImpl(this);
5757
private final WxMaCloudService cloudService = new WxMaCloudServiceImpl(this);
5858
private final WxMaLiveService liveService = new WxMaLiveServiceImpl(this);
59+
private final WxMaLiveGoodsService liveGoodsService = new WxMaLiveGoodsServiceImpl(this);
60+
private final WxMaMaterialService maMaterialService = new WxMaMaterialServiceImpl(this);
5961

6062
private int retrySleepMillis = 1000;
6163
private int maxRetryTimes = 5;
@@ -394,4 +396,14 @@ public WxMaCloudService getCloudService() {
394396
public WxMaLiveService getLiveService() {
395397
return this.liveService;
396398
}
399+
400+
@Override
401+
public WxMaLiveGoodsService getLiveGoodsService() {
402+
return this.liveGoodsService;
403+
}
404+
405+
@Override
406+
public WxMaMaterialService getMaterialService() {
407+
return this.maMaterialService;
408+
}
397409
}

0 commit comments

Comments
 (0)