From a18ec80f460f8178fb996bd2fec343065032c254 Mon Sep 17 00:00:00 2001 From: xuwenbo <717567226@qq.com> Date: Thu, 27 Aug 2020 17:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7wxjava=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=BA3.9.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yixiang/modules/services/AuthService.java | 4 +- .../test/java/co/yixiang/test/BaseTest.java | 4 +- yshop-common/pom.xml | 2 +- .../wechat/service/WxMaLiveGoodsService.java | 124 -------------- .../wechat/service/WxMaLiveService.java | 94 ---------- .../wechat/service/dto/WxMaLiveInfo.java | 131 -------------- .../wechat/service/dto/WxMaLiveResult.java | 135 --------------- .../impl/WxMaLiveGoodsServiceImpl.java | 160 ------------------ .../service/impl/WxMaLiveServiceImpl.java | 137 --------------- .../impl/YxWechatLiveGoodsServiceImpl.java | 19 +-- .../service/impl/YxWechatLiveServiceImpl.java | 16 +- .../rest/YxWechatLiveGoodsController.java | 2 - 12 files changed, 21 insertions(+), 807 deletions(-) delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveGoodsService.java delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveService.java delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveInfo.java delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveResult.java delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveGoodsServiceImpl.java delete mode 100644 yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveServiceImpl.java diff --git a/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java b/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java index 8701e683..5d45f6d5 100644 --- a/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java +++ b/yshop-app/src/main/java/co/yixiang/modules/services/AuthService.java @@ -180,8 +180,8 @@ public class AuthService { public YxUser wechatLogin(String code,String spread){ try { WxMpService wxService = WxMpConfiguration.getWxMpService(); - WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxService.oauth2getAccessToken(code); - WxMpUser wxMpUser = wxService.oauth2getUserInfo(wxMpOAuth2AccessToken, null); + WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxService.getOAuth2Service().getAccessToken(code); + WxMpUser wxMpUser = wxService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null); String openid = wxMpUser.getOpenId(); //如果开启了UnionId diff --git a/yshop-app/src/test/java/co/yixiang/test/BaseTest.java b/yshop-app/src/test/java/co/yixiang/test/BaseTest.java index 08e306a5..5909d25e 100644 --- a/yshop-app/src/test/java/co/yixiang/test/BaseTest.java +++ b/yshop-app/src/test/java/co/yixiang/test/BaseTest.java @@ -1,8 +1,8 @@ package co.yixiang.test; -import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo; -import co.yixiang.modules.wechat.service.WxMaLiveService; +import cn.binarywang.wx.miniapp.api.WxMaLiveService; +import cn.binarywang.wx.miniapp.bean.WxMaLiveInfo; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; diff --git a/yshop-common/pom.xml b/yshop-common/pom.xml index 43d0f3f2..c0d445a7 100644 --- a/yshop-common/pom.xml +++ b/yshop-common/pom.xml @@ -12,7 +12,7 @@ yshop-common 公共模块 - 3.8.0 + 3.9.0 diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveGoodsService.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveGoodsService.java deleted file mode 100644 index a42a346a..00000000 --- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveGoodsService.java +++ /dev/null @@ -1,124 +0,0 @@ -package co.yixiang.modules.wechat.service; - -import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo; -import co.yixiang.modules.wechat.service.dto.WxMaLiveResult; -import me.chanjar.weixin.common.error.WxErrorException; - -import java.util.List; - -/** - *
- * 直播间商品相关操作接口
- * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/commodity-api.html
- * Created by lipengjun on 2020/6/29.
- * 
- * - * @author lipengjun (939961241@qq.com) - */ -public interface WxMaLiveGoodsService { - String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/add"; - String RESET_AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit"; - String AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/audit"; - String DELETE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/delete"; - String UPDATE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/update"; - String GET_GOODS_WARE_HOUSE = "https://api.weixin.qq.com/wxa/business/getgoodswarehouse"; - String GET_APPROVED_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved"; - - /** - * 商品添加并提审 - *
-     * 调用此接口上传并提审需要直播的商品信息,审核通过后商品录入【小程序直播】商品库
-     * 注意:开发者必须保存【商品ID】与【审核单ID】,如果丢失,则无法调用其他相关接口
-     * 调用额度:500次/一天
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/add?access_token=ACCESS_TOKEN
-     * 
- * - * @param goods 商品 - * @return 返回auditId、goodsId - * @throws WxErrorException . - */ - WxMaLiveResult addGoods(WxMaLiveInfo.Goods goods) throws WxErrorException; - - /** - * 撤回审核 - *
-     * 调用此接口,可撤回直播商品的提审申请,消耗的提审次数不返还
-     * 调用额度:500次/一天
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit?access_token=ACCESS_TOKEN
-     * 
-     * @param auditId 审核单ID
-     * @param goodsId 商品ID
-     * @return 撤回审核是否成功
-     * @throws WxErrorException .
-     */
-    boolean resetAudit(Integer auditId, Integer goodsId) throws WxErrorException;
-
-    /**
-     * 重新提交审核
-     * 
-     * 调用此接口,可撤回直播商品的提审申请,消耗的提审次数不返还
-     * 调用额度:500次/一天(与接口'商品添加并提审'共用500次限制)
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/audit?access_token=ACCESS_TOKEN
-     * 
-     * @param goodsId 商品ID
-     * @return 审核单ID
-     * @throws WxErrorException .
-     */
-    String auditGoods(Integer goodsId) throws WxErrorException;
-
-    /**
-     * 删除商品
-     * 
-     * 调用此接口,可删除【小程序直播】商品库中的商品,删除后直播间上架的该商品也将被同步删除,不可恢复;
-     * 调用额度:1000次/一天
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/delete?access_token=ACCESS_TOKEN
-     * 
-     * @param goodsId 商品ID
-     * @return 删除商品是否成功
-     * @throws WxErrorException .
-     */
-    boolean deleteGoods(Integer goodsId) throws WxErrorException;
-
-    /**
-     * 更新商品
-     * 
-     * 调用此接口可以更新商品信息,审核通过的商品仅允许更新价格类型与价格,审核中的商品不允许更新,未审核的商品允许更新所有字段, 只传入需要更新的字段。
-     * 调用额度:1000次/一天
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/update?access_token=ACCESS_TOKEN
-     * 
- * - * @param goods 商品 - * @return 更新商品是否成功 - * @throws WxErrorException . - */ - boolean updateGoods(WxMaLiveInfo.Goods goods) throws WxErrorException; - - /** - * 获取商品状态 - *
-     * 调用此接口可获取商品的信息与审核状态
-     * 调用额度:1000次/一天
-     * http请求方式:POST https://api.weixin.qq.com/wxa/business/getgoodswarehouse?access_token=ACCESS_TOKEN
-     * 
-     * @param goodsIds 商品ID集
-     * @return 商品状态信息
-     * @throws WxErrorException .
-     */
-    WxMaLiveResult getGoodsWareHouse(List goodsIds) throws WxErrorException;
-
-    /**
-     * 获取商品列表
-     * 
-     * 调用此接口可获取商品列表
-     * 调用额度:10000次/一天
-     * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved?access_token=ACCESS_TOKEN
-     * 
-     * @param offset 分页条数起点
-     * @param limit  分页大小,默认30,不超过100
-     * @param status 商品状态,0:未审核。1:审核中,2:审核通过,3:审核驳回
-     * @return 商品列表
-     * @throws WxErrorException .
-     */
-    WxMaLiveResult getApprovedGoods(Integer offset, Integer limit, Integer status) throws WxErrorException;
-}
-
diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveService.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveService.java
deleted file mode 100644
index beb0a8a2..00000000
--- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/WxMaLiveService.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package co.yixiang.modules.wechat.service;
-
-import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo;
-import co.yixiang.modules.wechat.service.dto.WxMaLiveResult;
-import me.chanjar.weixin.common.error.WxErrorException;
-
-import java.util.List;
-
-/**
- * 
- *  直播相关操作接口.
- *  Created by yjwang on 2020/4/5.
- * 
- * - * @author yjwang - */ -public interface WxMaLiveService { - String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo"; - String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create"; - String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods"; - - /** - * 创建直播间 - *
-     * 调用此接口创建直播间,创建成功后将在直播间列表展示,调用额度:10000次/一天
-     * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#1
-     * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/create?access_token=ACCESS_TOKEN
-     * 
- * - * @param roomInfo 直播间信息 - * @return . - * @throws WxErrorException . - */ - Integer createRoom(WxMaLiveInfo.RoomInfo roomInfo) throws WxErrorException; - - /** - * 获取直播房间列表.(分页) - * - * @param start 起始拉取房间,start = 0 表示从第 1 个房间开始拉取 - * @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内 - * @return . - * @throws WxErrorException . - */ - WxMaLiveResult getLiveInfo(Integer start, Integer limit) throws WxErrorException; - - /** - * 获取所有直播间信息(没有分页直接获取全部) - * - * @return . - * @throws WxErrorException . - */ - List getLiveInfos() throws WxErrorException; - - /** - * 获取直播房间回放数据信息. - * - * @param action 获取回放 - * @param roomId 直播间 id - * @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取 - * @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内 - * @return . - * @throws WxErrorException . - */ - WxMaLiveResult getLiveReplay(String action, Integer roomId, Integer start, Integer limit) throws WxErrorException; - - /** - * 获取直播房间回放数据信息. - *

- * 获取回放 (默认:get_replay) - * - * @param roomId 直播间 id - * @param start 起始拉取视频,start = 0 表示从第 1 个视频片段开始拉取 - * @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内 - * @return . - * @throws WxErrorException . - */ - WxMaLiveResult getLiveReplay(Integer roomId, Integer start, Integer limit) throws WxErrorException; - - /** - * 直播间导入商品 - *

- * 调用接口往指定直播间导入已入库的商品 - * 调用频率 - * 调用额度:10000次/一天 - *

- * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods?access_token=ACCESS_TOKEN - *

-     * @param roomId 房间ID
-     * @param goodsIds 数组列表,可传入多个,里面填写 商品 ID
-     * @return 导入商品是否成功
-     * @throws WxErrorException .
-     */
-    boolean addGoodsToRoom(Integer roomId, List goodsIds) throws WxErrorException;
-}
diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveInfo.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveInfo.java
deleted file mode 100644
index 9e34c766..00000000
--- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveInfo.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package co.yixiang.modules.wechat.service.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-/**
- * 直播接口入参
- */
-@Data
-public class WxMaLiveInfo implements Serializable {
-    private static final long serialVersionUID = 7285263767524755887L;
-
-    /**
-     * 直播列表
-     */
-    @Data
-    public static class RoomInfo implements Serializable {
-        private static final long serialVersionUID = 7745775280267417154L;
-        /**
-         * 直播间名字,最短3个汉字,最长17个汉字,1个汉字相当于2个字符
-         */
-        private String name;
-        /**
-         * 直播房间id
-         */
-        private Integer roomid;
-        /**
-         * 背景图,填入mediaID(mediaID获取后,三天内有效);图片mediaID的获取,
-         * 请参考以下文档: https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html;
-         * 直播间背景图,图片规则:建议像素1080*1920,大小不超过2M
-         */
-        private String coverImg;
-
-        /**
-         * 分享图,填入mediaID(mediaID获取后,三天内有效);图片mediaID的获取,请参考以下文档: https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html;直播间分享图,图片规则:建议像素800*640,大小不超过1M;
-         */
-        private String shareImg;
-
-        /**
-         * 101:直播中,102:未开始,103已结束,104禁播,105:暂停,106:异常,107:已过期
-         */
-        private Integer liveStatus;
-        /**
-         * 直播计划开始时间(开播时间需要在当前时间的10分钟后 并且 开始时间不能在 6 个月后)
-         */
-        private Long startTime;
-        /**
-         * 直播计划结束时间(开播时间和结束时间间隔不得短于30分钟,不得超过24小时)
-         */
-        private Long endTime;
-        /**
-         * 主播昵称,最短2个汉字,最长15个汉字,1个汉字相当于2个字符
-         */
-        private String anchorName;
-        /**
-         * 主播微信号,如果未实名认证,需要先前往“小程序直播”小程序进行实名验证, 小程序二维码链接:https://res.wx.qq.com/op_res/BbVNeczA1XudfjVqCVoKgfuWe7e3aUhokktRVOqf_F0IqS6kYR--atCpVNUUC3zr
-         */
-        private String anchorWechat;
-
-        /**
-         * 主播头像
-         */
-        private String anchorImg;
-        /**
-         * 直播间类型 【1: 推流,0:手机直播】
-         */
-        private Integer type;
-
-        /**
-         * 横屏、竖屏 【1:横屏,0:竖屏】(横屏:视频宽高比为16:9、4:3、1.85:1 ;竖屏:视频宽高比为9:16、2:3)
-         */
-        private Integer screenType;
-        /**
-         * 是否关闭点赞 【0:开启,1:关闭】(若关闭,直播开始后不允许开启)
-         */
-        private Integer closeLike;
-        /**
-         * 是否关闭货架 【0:开启,1:关闭】(若关闭,直播开始后不允许开启)
-         */
-        private Integer closeGoods;
-        /**
-         * 是否关闭评论 【0:开启,1:关闭】(若关闭,直播开始后不允许开启)
-         */
-        private Integer closeComment;
-        /**
-         *
-         */
-        private List goods;
-    }
-
-    /**
-     * 商品列表
-     */
-    @Data
-    public static class Goods implements Serializable {
-        private static final long serialVersionUID = 5769245932149287574L;
-        /**
-         * 商品id
-         */
-        private Integer goodsId;
-        /**
-         * 填入mediaID(mediaID获取后,三天内有效);图片mediaID的获取,请参考以下文档: https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html;图片规则:图片尺寸最大300像素*300像素;
-         */
-        private String coverImgUrl;
-        /**
-         * 商品详情页的小程序路径,路径参数存在 url 的,该参数的值需要进行 encode 处理再填入
-         */
-        private String url;
-        /**
-         * 价格类型,1:一口价(只需要传入price,price2不传) 2:价格区间(price字段为左边界,price2字段为右边界,price和price2必传) 3:显示折扣价(price字段为原价,price2字段为现价, price和price2必传)
-         */
-        private Integer priceType;
-        /**
-         * 数字,最多保留两位小数,单位元
-         */
-        private String price;
-        /**
-         * 数字,最多保留两位小数,单位元
-         */
-        private String price2;
-        /**
-         * 商品名称,最长14个汉字,1个汉字相当于2个字符
-         */
-        private String name;
-        /**
-         * 1, 2:表示是为api添加商品,否则是在MP添加商品
-         */
-        private String thirdPartyTag;
-    }
-}
diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveResult.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveResult.java
deleted file mode 100644
index 2981a04d..00000000
--- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/dto/WxMaLiveResult.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package co.yixiang.modules.wechat.service.dto;
-
-import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-/**
- * 
- * 直播间操作返回结果
- * Created by lipengjun on 2020/6/29.
- * 
- * - * @author lipengjun (939961241@qq.com) - */ -@Data -public class WxMaLiveResult implements Serializable { - private static final long serialVersionUID = 1L; - private Integer errcode; - private String errmsg; - private Integer total; - /** - * 审核单ID - */ - private Integer auditId; - /** - * 商品ID - */ - private Integer goodsId; - private List goods; - - /** - * 直播间列表 - */ - @SerializedName("room_info") - private List roomInfos; - - /** - * 获取回放源视频列表 - */ - @SerializedName("live_replay") - private List liveReplay; - - public static WxMaLiveResult fromJson(String json) { - return WxMaGsonBuilder.create().fromJson(json, WxMaLiveResult.class); - } - - /** - * 商品列表 - */ - @Data - public static class Goods implements Serializable { - private static final long serialVersionUID = 5769245932149287574L; - @SerializedName("goods_id") - private Integer goodsId; - /** - * 获取商品列表返回的商品图片 - */ - @SerializedName("cover_img_url") - private String coverImgUrl; - /** - * 获取直播间列表返回的商品图片 - */ - @SerializedName("cover_img") - private String coverImg; - private String name; - private String url; - @SerializedName("price_type") - private Integer priceType; - /** - * 0:未审核,1:审核中,2:审核通过,3审核失败 - */ - @SerializedName("audit_status") - private Integer auditStatus; - private String price; - private String price2; - /** - * 1, 2:表示是为api添加商品,否则是在MP添加商品 - */ - @SerializedName("third_party_tag") - private String thirdPartyTag; - } - - /** - * 直播列表 - */ - @Data - public static class RoomInfo implements Serializable { - private static final long serialVersionUID = 7745775280267417154L; - private String name; - @SerializedName("roomid") - private Integer roomid; - @SerializedName("cover_img") - private String coverImg; - @SerializedName("share_img") - private String shareImg; - @SerializedName("live_status") - private Integer liveStatus; - @SerializedName("start_time") - private Long startTime; - @SerializedName("end_time") - private Long endTime; - @SerializedName("anchor_name") - private String anchorName; - @SerializedName("anchor_wechat") - private String anchorWechat; - @SerializedName("anchor_img") - private String anchorImg; - private Integer type; - @SerializedName("screen_type") - private Integer screenType; - @SerializedName("close_like") - private Integer closeLike; - @SerializedName("closeGoods") - private Integer closeGoods; - @SerializedName("close_comment") - private Integer closeComment; - private List goods; - } - - /** - * 回放数据列表 - */ - @Data - public static class LiveReplay implements Serializable { - private static final long serialVersionUID = 7683927205627536320L; - @SerializedName("expire_time") - private String expireTime; - @SerializedName("create_time") - private String createTime; - @SerializedName("media_url") - private String mediaUrl; - } -} diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveGoodsServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveGoodsServiceImpl.java deleted file mode 100644 index da0d4616..00000000 --- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveGoodsServiceImpl.java +++ /dev/null @@ -1,160 +0,0 @@ -package co.yixiang.modules.wechat.service.impl; - -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; -import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONUtil; -import co.yixiang.modules.wechat.service.WxMaLiveGoodsService; -import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo; -import co.yixiang.modules.wechat.service.dto.WxMaLiveResult; -import co.yixiang.tools.config.WxMaConfiguration; -import co.yixiang.utils.GsonParser; -import com.google.common.base.Joiner; -import com.google.common.collect.ImmutableMap; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import lombok.extern.slf4j.Slf4j; -import me.chanjar.weixin.common.WxType; -import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; -import me.chanjar.weixin.common.error.WxError; -import me.chanjar.weixin.common.error.WxErrorException; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Slf4j -@Service -public class WxMaLiveGoodsServiceImpl implements WxMaLiveGoodsService { - - @Value("${file.path}") - private String uploadDirStr; - @Override - public WxMaLiveResult addGoods(WxMaLiveInfo.Goods goods) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("goodsInfo", goods); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.ADD_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return WxMaLiveResult.fromJson(jsonObject.toString()); - } - - @Override - public boolean resetAudit(Integer auditId, Integer goodsId) throws WxErrorException { - Map map = new HashMap<>(4); - map.put("auditId", auditId); - map.put("goodsId", goodsId); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.RESET_AUDIT_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return true; - } - - @Override - public String auditGoods(Integer goodsId) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("goodsId", goodsId); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.AUDIT_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return jsonObject.get("auditId").getAsString(); - } - - @Override - public boolean deleteGoods(Integer goodsId) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("goodsId", goodsId); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.DELETE_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return true; - } - - @Override - public boolean updateGoods(WxMaLiveInfo.Goods goods) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("goodsInfo", goods); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.UPDATE_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return true; - } - - @Override - public WxMaLiveResult getGoodsWareHouse(List goodsIds) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("goods_ids", goodsIds); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveGoodsService.GET_GOODS_WARE_HOUSE, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return WxMaLiveResult.fromJson(jsonObject.toString()); - } - - @Override - public WxMaLiveResult getApprovedGoods(Integer offset, Integer limit, Integer status) throws WxErrorException { - ImmutableMap params = ImmutableMap.of("status", status, "offset", offset, "limit", limit); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.get(WxMaLiveGoodsService.GET_APPROVED_GOODS, Joiner.on("&").withKeyValueSeparator("=").join(params)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - JsonArray goodsArr = jsonObject.getAsJsonArray("goods"); - if (goodsArr.size() > 0) { - for (int i = 0; i < goodsArr.size(); i++) { - // 接口返回key是驼峰 - JsonObject goods = (JsonObject) goodsArr.get(i); - goods.addProperty("goods_id", goods.get("goodsId").getAsInt()); - goods.addProperty("cover_img_url", goods.get("coverImgUrl").getAsString()); - goods.addProperty("price_type", goods.get("priceType").getAsInt()); - goods.addProperty("third_party_tag", goods.get("thirdPartyTag").getAsInt()); - goods.addProperty("audit_status", status); - } - } - return WxMaLiveResult.fromJson(jsonObject.toString()); - } - - - /** - * 上传临时素材 - * @param wxMaService WxMaService - * @param picPath 图片路径 - * @return WxMpMaterialUploadResult - * @throws WxErrorException - */ - private WxMediaUploadResult uploadPhotoToWx(WxMaService wxMaService, String picPath) throws WxErrorException { - String filename = (int) System.currentTimeMillis() + ".png"; - String downloadPath = uploadDirStr + filename; - long size = HttpUtil.downloadFile(picPath, cn.hutool.core.io.FileUtil.file(downloadPath)); - picPath = downloadPath; - File picFile = new File( picPath ); - log.info( "picFile name : {}", picFile.getName() ); - WxMediaUploadResult wxMediaUploadResult = wxMaService.getMediaService().uploadMedia( WxConsts.MediaFileType.IMAGE, picFile ); - log.info( "wxMpMaterialUploadResult : {}", JSONUtil.toJsonStr( wxMediaUploadResult ) ); - return wxMediaUploadResult; - } - -} diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveServiceImpl.java deleted file mode 100644 index ca40dd8e..00000000 --- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/WxMaLiveServiceImpl.java +++ /dev/null @@ -1,137 +0,0 @@ -package co.yixiang.modules.wechat.service.impl; - -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; -import co.yixiang.modules.wechat.service.WxMaLiveService; -import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo; -import co.yixiang.modules.wechat.service.dto.WxMaLiveResult; -import co.yixiang.tools.config.WxMaConfiguration; -import co.yixiang.utils.GsonParser; -import com.google.gson.JsonObject; -import lombok.extern.slf4j.Slf4j; -import me.chanjar.weixin.common.WxType; -import me.chanjar.weixin.common.error.WxError; -import me.chanjar.weixin.common.error.WxErrorException; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - *
- *  Created by yjwang on 2020/4/5.
- * 
- * - * @author yjwang - */ -@Slf4j -@Service -public class WxMaLiveServiceImpl implements WxMaLiveService { - - @Value("${file.path}") - private String uploadDirStr; - @Override - public Integer createRoom(WxMaLiveInfo.RoomInfo roomInfo) throws WxErrorException { - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveService.CREATE_ROOM, WxMaGsonBuilder.create().toJson(roomInfo)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return jsonObject.get("roomId").getAsInt(); - } - /** - * 获取直播房间列表.(分页) - * - * @param start 起始拉取房间,start = 0 表示从第 1 个房间开始拉取 - * @param limit 每次拉取的个数上限,不要设置过大,建议 100 以内 - * @return . - * @throws WxErrorException . - */ - @Override - public WxMaLiveResult getLiveInfo(Integer start, Integer limit) throws WxErrorException { - JsonObject jsonObject = getLiveInfo(start, limit, null); - return WxMaLiveResult.fromJson(jsonObject.toString()); - } - /** - * 获取所有直播间信息(没有分页直接获取全部) - * - * @return . - * @throws WxErrorException . - */ - @Override - public List getLiveInfos() throws WxErrorException { - List results = new ArrayList<>(); - int start = 0; - Integer limit = 80; - Integer total = 0; - WxMaLiveResult liveInfo; - do { - if (total != 0 && total <= start) { - break; - } - liveInfo = getLiveInfo(start, limit); - if (liveInfo == null) { - return null; - } - results.addAll(liveInfo.getRoomInfos()); - total = liveInfo.getTotal(); - start = results.size(); - try { - Thread.sleep(100); - } catch (InterruptedException e) { - log.error("InterruptedException", e); - } - } while (results.size() <= total); - - return results; - } - - @Override - public WxMaLiveResult getLiveReplay(String action, Integer roomId, Integer start, Integer limit) throws WxErrorException { - Map map = new HashMap<>(4); - map.put("action", action); - map.put("room_id", roomId); - JsonObject jsonObject = getLiveInfo(start, limit, map); - return WxMaLiveResult.fromJson(jsonObject.toString()); - } - - @Override - public WxMaLiveResult getLiveReplay(Integer roomId, Integer start, Integer limit) throws WxErrorException { - return getLiveReplay("get_replay", roomId, start, limit); - } - - @Override - public boolean addGoodsToRoom(Integer roomId, List goodsIds) throws WxErrorException { - Map map = new HashMap<>(2); - map.put("roomId", roomId); - map.put("ids", goodsIds); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveService.ADD_GOODS, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return true; - } - - private JsonObject getLiveInfo(Integer start, Integer limit, Map map) throws WxErrorException { - if (map == null) { - map = new HashMap(2); - } - map.put("start", start); - map.put("limit", limit); - WxMaService wxMaService = WxMaConfiguration.getWxMaService(); - String responseContent = wxMaService.post(WxMaLiveService.GET_LIVE_INFO, WxMaGsonBuilder.create().toJson(map)); - JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); - } - return jsonObject; - } - - -} diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatLiveGoodsServiceImpl.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatLiveGoodsServiceImpl.java index f19dbb90..b504998e 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatLiveGoodsServiceImpl.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatLiveGoodsServiceImpl.java @@ -9,6 +9,8 @@ package co.yixiang.modules.wechat.service.impl; import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.WxMaLiveInfo; +import cn.binarywang.wx.miniapp.bean.WxMaLiveResult; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; @@ -18,10 +20,7 @@ import co.yixiang.dozer.service.IGenerator; import co.yixiang.enums.LiveGoodsEnum; import co.yixiang.exception.BadRequestException; import co.yixiang.modules.wechat.domain.YxWechatLiveGoods; -import co.yixiang.modules.wechat.service.WxMaLiveGoodsService; import co.yixiang.modules.wechat.service.YxWechatLiveGoodsService; -import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo; -import co.yixiang.modules.wechat.service.dto.WxMaLiveResult; import co.yixiang.modules.wechat.service.dto.YxWechatLiveGoodsDto; import co.yixiang.modules.wechat.service.dto.YxWechatLiveGoodsQueryCriteria; import co.yixiang.modules.wechat.service.mapper.YxWechatLiveGoodsMapper; @@ -59,10 +58,8 @@ public class YxWechatLiveGoodsServiceImpl extends BaseServiceImpl goodsIds) { try { - WxMaLiveResult liveInfos = wxMaLiveGoodsService.getGoodsWareHouse(goodsIds); + WxMaService wxMaService = WxMaConfiguration.getWxMaService(); + WxMaLiveResult liveInfos = wxMaService.getLiveGoodsService().getGoodsWareHouse(goodsIds); List convert = generator.convert(liveInfos.getGoods(), YxWechatLiveGoods.class); this.saveOrUpdateBatch(convert); } catch (WxErrorException e) { @@ -87,7 +85,8 @@ public class YxWechatLiveGoodsServiceImpl extends BaseServiceImpl liveInfos = wxMaLiveService.getLiveInfos(); + WxMaService wxMaService = WxMaConfiguration.getWxMaService(); + List liveInfos = wxMaService.getLiveService().getLiveInfos(); List convert = generator.convert(liveInfos, YxWechatLive.class); this.saveOrUpdateBatch(convert); } catch (WxErrorException e) { @@ -120,7 +118,7 @@ public class YxWechatLiveServiceImpl extends BaseServiceImpl