diff --git a/sql/menu.sql b/sql/menu.sql
new file mode 100644
index 00000000..1176a7ee
--- /dev/null
+++ b/sql/menu.sql
@@ -0,0 +1,19 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : 本地
+ Source Server Type : MySQL
+ Source Server Version : 50729
+ Source Host : localhost:3306
+ Source Schema : yshopb2c
+
+ Target Server Type : MySQL
+ Target Server Version : 50729
+ File Encoding : 65001
+
+ Date: 11/08/2020 11:23:45
+*/
+
+
+INSERT INTO `menu` VALUES (242, b'0', '直播管理', 'wechat/live/index', 48, 999, 'weixin', 'wxlive', b'0', b'0', 'Wxlive', '2020-08-10 17:20:54', NULL, 1, NULL, 0);
+
diff --git a/sql/yx_wechat_live.sql b/sql/yx_wechat_live.sql
new file mode 100644
index 00000000..17ba7d26
--- /dev/null
+++ b/sql/yx_wechat_live.sql
@@ -0,0 +1,43 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : 本地
+ Source Server Type : MySQL
+ Source Server Version : 50729
+ Source Host : localhost:3306
+ Source Schema : yshopb2c
+
+ Target Server Type : MySQL
+ Target Server Version : 50729
+ File Encoding : 65001
+
+ Date: 11/08/2020 11:22:41
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for yx_wechat_live
+-- ----------------------------
+DROP TABLE IF EXISTS `yx_wechat_live`;
+CREATE TABLE `yx_wechat_live` (
+ `roomid` bigint(11) NOT NULL COMMENT '直播间id',
+ `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '直播间标题',
+ `cover_imge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '背景图',
+ `share_imge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分享图片',
+ `live_status` int(9) NULL DEFAULT NULL COMMENT '直播间状态',
+ `start_time` bigint(11) NOT NULL COMMENT '开始时间',
+ `end_time` bigint(11) NOT NULL COMMENT '预计结束时间',
+ `anchor_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主播昵称',
+ `anchor_wechat` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主播微信号',
+ `anchor_imge` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '主播头像',
+ `type` tinyint(1) NOT NULL COMMENT '直播间类型 1:推流 0:手机直播',
+ `screen_type` tinyint(1) NOT NULL COMMENT '横屏、竖屏 【1:横屏,0:竖屏】',
+ `close_like` tinyint(1) NOT NULL COMMENT '是否关闭点赞 【0:开启,1:关闭】',
+ `close_comment` tinyint(1) NOT NULL COMMENT '是否关闭评论 【0:开启,1:关闭】',
+ `close_goods` tinyint(1) NOT NULL COMMENT '是否关闭货架 【0:开启,1:关闭】',
+ PRIMARY KEY (`roomid`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
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 fb45ce04..8701e683 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
@@ -17,7 +17,6 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import co.yixiang.api.YshopException;
import co.yixiang.common.util.IpUtil;
-import co.yixiang.common.util.JwtToken;
import co.yixiang.constant.ShopConstants;
import co.yixiang.enums.AppFromEnum;
import co.yixiang.modules.auth.param.LoginParam;
@@ -31,10 +30,8 @@ import co.yixiang.utils.EncryptUtils;
import co.yixiang.utils.RedisUtils;
import co.yixiang.utils.ShopKeyUtils;
import co.yixiang.utils.StringUtils;
-import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vdurmont.emoji.EmojiParser;
-import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
diff --git a/yshop-app/src/main/java/co/yixiang/modules/wechat/rest/controller/WechatController.java b/yshop-app/src/main/java/co/yixiang/modules/wechat/rest/controller/WechatController.java
index d250832e..8fcacb02 100644
--- a/yshop-app/src/main/java/co/yixiang/modules/wechat/rest/controller/WechatController.java
+++ b/yshop-app/src/main/java/co/yixiang/modules/wechat/rest/controller/WechatController.java
@@ -26,7 +26,7 @@ import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.modules.user.domain.YxUserRecharge;
import co.yixiang.modules.user.service.YxUserRechargeService;
-import co.yixiang.mp.config.WxMaConfiguration;
+import co.yixiang.tools.config.WxMaConfiguration;
import co.yixiang.mp.config.WxMpConfiguration;
import co.yixiang.mp.config.WxPayConfiguration;
import co.yixiang.utils.BigNum;
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 66345551..08e306a5 100644
--- a/yshop-app/src/test/java/co/yixiang/test/BaseTest.java
+++ b/yshop-app/src/test/java/co/yixiang/test/BaseTest.java
@@ -1,12 +1,21 @@
package co.yixiang.test;
+import co.yixiang.modules.wechat.service.dto.WxMaLiveInfo;
+import co.yixiang.modules.wechat.service.WxMaLiveService;
import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class BaseTest {
+ @Autowired
+ private WxMaLiveService wxMaLiveService;
+ public void test(){
+ WxMaLiveInfo.RoomInfo roomInfo = new WxMaLiveInfo.RoomInfo();
+ roomInfo.setName("测试直播间");
+ }
}
diff --git a/yshop-common/pom.xml b/yshop-common/pom.xml
index 45712b2f..43d0f3f2 100644
--- a/yshop-common/pom.xml
+++ b/yshop-common/pom.xml
@@ -11,7 +11,25 @@
yshop-common
公共模块
+
+ 3.8.0
+
+
+ com.github.binarywang
+ weixin-java-mp
+ ${weixin-java.version}
+
+
+ com.github.binarywang
+ weixin-java-pay
+ ${weixin-java.version}
+
+
+ com.github.binarywang
+ wx-java-miniapp-spring-boot-starter
+ ${weixin-java.version}
+
net.sf.dozer
dozer-spring
diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/domain/YxWechatLive.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/domain/YxWechatLive.java
new file mode 100644
index 00000000..20a50f3a
--- /dev/null
+++ b/yshop-mall/src/main/java/co/yixiang/modules/wechat/domain/YxWechatLive.java
@@ -0,0 +1,125 @@
+/**
+* Copyright (C) 2018-2020
+* All rights reserved, Designed By www.yixiang.co
+* 注意:
+* 本软件为www.yixiang.co开发研制,未经购买不得使用
+* 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台)
+* 一经发现盗用、分享等行为,将追究法律责任,后果自负
+*/
+package co.yixiang.modules.wechat.domain;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableName;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import javax.validation.constraints.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* @author hupeng
+* @date 2020-08-10
+*/
+@Data
+@TableName("yx_wechat_live")
+public class YxWechatLive implements Serializable {
+
+ /** 直播间id */
+ @TableId
+ private Long roomid;
+
+
+ /** 直播间标题 */
+ @NotBlank
+ private String name;
+
+
+ /** 背景图 */
+ @TableField(exist = false)
+ private String coverImg;
+
+
+ /** 分享图片 */
+ @TableField(exist = false)
+ private String shareImg;
+
+ /** 背景图 */
+ @NotBlank
+ private String coverImge;
+
+
+ /** 分享图片 */
+ @NotBlank
+ private String shareImge;
+
+ /** 主播头像 */
+ private String anchorImge;
+
+
+
+ /** 直播间状态 */
+ private Integer liveStatus;
+
+
+ /** 开始时间 */
+ private Long startTime;
+
+
+ /** 预计结束时间 */
+ private Long endTime;
+
+
+ /** 开始时间 */
+ @NotNull
+ @TableField(exist = false)
+ private Date startDate;
+
+
+ /** 预计结束时间 */
+ @NotNull
+ @TableField(exist = false)
+ private Date endDate;
+ /** 主播昵称 */
+ @NotBlank
+ private String anchorName;
+
+
+ /** 主播微信号 */
+ @NotBlank
+ private String anchorWechat;
+
+
+ /** 主播头像 */
+ @TableField(exist = false)
+ private String anchorImg;
+
+
+ /** 直播间类型 1:推流 0:手机直播 */
+ @NotNull
+ private Integer type;
+
+
+ /** 横屏、竖屏 【1:横屏,0:竖屏】 */
+ @NotNull
+ private Integer screenType;
+
+
+ /** 是否关闭点赞 【0:开启,1:关闭】 */
+ @NotNull
+ private Integer closeLike;
+
+
+ /** 是否关闭货架 【0:开启,1:关闭】 */
+ @NotNull
+ private Integer closeGoods;
+
+ /** 是否关闭评论 【0:开启,1:关闭】 */
+ @NotNull
+ private Integer closeComment;
+
+
+ public void copy(YxWechatLive source){
+ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+ }
+}
diff --git a/yshop-mall/src/main/java/co/yixiang/modules/wechat/rest/YxWechatLiveController.java b/yshop-mall/src/main/java/co/yixiang/modules/wechat/rest/YxWechatLiveController.java
new file mode 100644
index 00000000..4d298d43
--- /dev/null
+++ b/yshop-mall/src/main/java/co/yixiang/modules/wechat/rest/YxWechatLiveController.java
@@ -0,0 +1,85 @@
+/**
+* Copyright (C) 2018-2020
+* All rights reserved, Designed By www.yixiang.co
+* 注意:
+* 本软件为www.yixiang.co开发研制,未经购买不得使用
+* 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台)
+* 一经发现盗用、分享等行为,将追究法律责任,后果自负
+*/
+package co.yixiang.modules.wechat.rest;
+import java.util.Arrays;
+import co.yixiang.dozer.service.IGenerator;
+import lombok.AllArgsConstructor;
+import co.yixiang.logging.aop.log.Log;
+import co.yixiang.modules.wechat.domain.YxWechatLive;
+import co.yixiang.modules.wechat.service.YxWechatLiveService;
+import co.yixiang.modules.wechat.service.dto.YxWechatLiveQueryCriteria;
+import co.yixiang.modules.wechat.service.dto.YxWechatLiveDto;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @author hupeng
+* @date 2020-08-10
+*/
+@AllArgsConstructor
+@Api(tags = "wxlive管理")
+@RestController
+@RequestMapping("/api/yxWechatLive")
+public class YxWechatLiveController {
+
+ private final YxWechatLiveService yxWechatLiveService;
+ private final IGenerator generator;
+
+
+ @Log("导出数据")
+ @ApiOperation("导出数据")
+ @GetMapping(value = "/download")
+ @PreAuthorize("@el.check('admin','yxWechatLive:list')")
+ public void download(HttpServletResponse response, YxWechatLiveQueryCriteria criteria) throws IOException {
+ yxWechatLiveService.download(generator.convert(yxWechatLiveService.queryAll(criteria), YxWechatLiveDto.class), response);
+ }
+
+ @GetMapping
+ @Log("查询wxlive")
+ @ApiOperation("查询wxlive")
+ @PreAuthorize("@el.check('admin','yxWechatLive:list')")
+ public ResponseEntity