diff --git a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java index e77bcfbd..fd72fdde 100644 --- a/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java +++ b/yshop-mall/src/main/java/co/yixiang/modules/activity/service/mapper/YxStoreCombinationMapper.java @@ -27,7 +27,7 @@ import java.util.List; @Repository public interface YxStoreCombinationMapper extends CoreMapper { - @Select("SELECT c.id,c.effective_time as effectiveTime,c.image,c.people,c.price, s.sales as sales," + + @Select("SELECT c.id,c.effective_time as effectiveTime,c.info,c.image,c.people,c.price, s.sales as sales," + "c.title,c.unit_name as unitName,s.price as productPrice FROM yx_store_combination c " + "INNER JOIN yx_store_product s ON s.id=c.product_id " + " WHERE c.is_show = 1 AND c.is_del = 0 AND c.start_time < now() " + diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/domain/YxWechatLive.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/domain/YxWechatLive.java index 89dca08e..cf5b3983 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/domain/YxWechatLive.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/domain/YxWechatLive.java @@ -122,6 +122,12 @@ public class YxWechatLive implements Serializable { /** 是否关闭评论 【0:开启,1:关闭】 */ @NotNull private Integer closeComment; + @NotNull + private Integer closeReplay ; // 是否关闭回放 1 关闭 + @NotNull + private Integer closeShare ; // 是否关闭分享 1 关闭 + @NotNull + private Integer closeKf ; // 是否关闭客服,1 关闭 private String productId; diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/YxWechatLiveService.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/YxWechatLiveService.java index 07f694fc..20507b43 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/YxWechatLiveService.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/YxWechatLiveService.java @@ -10,11 +10,12 @@ package co.yixiang.modules.mp.service; import cn.binarywang.wx.miniapp.bean.WxMaLiveResult; import co.yixiang.common.service.BaseService; +import co.yixiang.modules.mp.service.dto.WxMaLiveInfo; import co.yixiang.modules.mp.service.dto.YxWechatLiveDto; import co.yixiang.modules.mp.service.dto.YxWechatLiveQueryCriteria; import co.yixiang.modules.mp.vo.WechatLiveVo; import co.yixiang.modules.mp.domain.YxWechatLive; -import co.yixiang.modules.product.vo.YxStoreProductQueryVo; +import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; @@ -62,6 +63,21 @@ public interface YxWechatLiveService extends BaseService{ */ void download(List all, HttpServletResponse response) throws IOException; + + /** + * 创建直播间 + *
+     * 调用此接口创建直播间,创建成功后将在直播间列表展示,调用额度: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 roomId diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveInfo.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveInfo.java new file mode 100644 index 00000000..7f70b58c --- /dev/null +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveInfo.java @@ -0,0 +1,58 @@ +package co.yixiang.modules.mp.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class WxMaLiveInfo { + + private static final long serialVersionUID = 7285263767524755887L; + + /** + * 直播列表 + */ + @Data + public static class RoomInfo implements Serializable { + private static final long serialVersionUID = 7745775280267417154L; + private String name; + private Integer roomid; + private String coverImg; + private String shareImg; + private Integer liveStatus; + private Long startTime; + private Long endTime; + private String anchorName; + private String anchorWechat; + private String anchorImg; + private Integer type; + private Integer screenType; + private Integer closeLike; + private Integer closeGoods; + private Integer closeComment; + private Integer closeReplay ; // 是否关闭回放 1 关闭 + private Integer closeShare ; // 是否关闭分享 1 关闭 + private Integer closeKf ; // 是否关闭客服,1 关闭 + private List goods; + } + + /** + * 商品列表 + */ + @Data + public static class Goods implements Serializable { + private static final long serialVersionUID = 5769245932149287574L; + private Integer goodsId; + private String coverImgUrl; + private String url; + private Integer priceType; + private String price; + private String price2; + private String name; + /** + * 1, 2:表示是为api添加商品,否则是在MP添加商品 + */ + private String thirdPartyTag; + } +} diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveResult.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveResult.java new file mode 100644 index 00000000..e910f785 --- /dev/null +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/WxMaLiveResult.java @@ -0,0 +1,131 @@ +package co.yixiang.modules.mp.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; + private Integer auditId; + private Integer goodsId; + private List goods; + + /** + * 直播间列表 + */ + @SerializedName("room_info") + private List roomInfos; + + /** + * 获取回放源视频列表 + */ + @SerializedName("live_replay") + private List liveReplay; + + public static cn.binarywang.wx.miniapp.bean.WxMaLiveResult fromJson(String json) { + return WxMaGsonBuilder.create().fromJson(json, cn.binarywang.wx.miniapp.bean.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-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java index a7c1df15..762a6d66 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/dto/YxWechatLiveDto.java @@ -88,6 +88,12 @@ public class YxWechatLiveDto implements Serializable { /** 是否关闭货架 【0:开启,1:关闭】 */ @ApiModelProperty(value = "是否关闭货架 【0:开启,1:关闭】") private Integer closeGoods; + + private Integer closeReplay ; // 是否关闭回放 1 关闭 + + private Integer closeShare ; // 是否关闭分享 1 关闭 + + private Integer closeKf ; // 是否关闭客服,1 关闭 /** * 关联商品id多个,隔开 */ diff --git a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java index de8e3e0b..cabd03b3 100644 --- a/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java +++ b/yshop-weixin/src/main/java/co/yixiang/modules/mp/service/impl/YxWechatLiveServiceImpl.java @@ -9,8 +9,8 @@ package co.yixiang.modules.mp.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.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import co.yixiang.common.service.impl.BaseServiceImpl; @@ -21,6 +21,7 @@ import co.yixiang.exception.BadRequestException; import co.yixiang.modules.mp.domain.YxWechatLiveGoods; import co.yixiang.modules.mp.service.YxWechatLiveGoodsService; import co.yixiang.modules.mp.service.YxWechatLiveService; +import co.yixiang.modules.mp.service.dto.WxMaLiveInfo; import co.yixiang.modules.mp.service.dto.YxWechatLiveDto; import co.yixiang.modules.mp.service.dto.YxWechatLiveGoodsDto; import co.yixiang.modules.mp.service.dto.YxWechatLiveQueryCriteria; @@ -39,10 +40,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; +import me.chanjar.weixin.common.enums.WxType; +import me.chanjar.weixin.common.error.WxError; import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.json.GsonParser; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -57,6 +62,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static cn.binarywang.wx.miniapp.api.WxMaLiveService.CREATE_ROOM; + /** * @author hupeng * @date 2020-08-10 @@ -139,7 +146,7 @@ public class YxWechatLiveServiceImpl extends BaseServiceImpl