Browse Source

Merge branch 'saas_zouxuan_2022_05_31' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java
	mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
	mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java
zouxuan 3 years ago
parent
commit
f6f3c7adf1

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -39,5 +40,10 @@ public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom>
      */
     IPage<RoomReservationUserVo> queryRoomUser(@Param("page") IPage<RoomReservationUserVo> page,
                                                   @Param("query") RoomReservationUserSearch query);
+    List<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(Map<String, Object> params);
+
+    int countLiveRoomGoodsOrderList(Map<String, Object> params);
+
+    Map sumLiveRoomGoodsOrderList(Map<String, Object> params);
 }
 

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveRoomBlackDao.java

@@ -3,7 +3,6 @@ package com.ym.mec.biz.dal.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import org.apache.ibatis.annotations.Param;
 
@@ -20,7 +19,7 @@ public interface ImLiveRoomBlackDao extends BaseMapper<ImLiveRoomBlack> {
 
     int insertBatch(@Param("entities") List<ImLiveRoomBlack> entities);
 
-    List<SysUser> queryStudent(@Param("tenantId") Integer tenantId, @Param("search") String search, @Param("roomUid") String roomUid);
+    <T> IPage<T> queryStudent(Page<T> page, @Param("param") Map<String, Object> param);
 
     <T> IPage<T> queryBlackList(Page<T> page, @Param("param") Map<String, Object> param);
 

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LiveRoomGoodsOrderQueryInfo.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+import java.util.Date;
+
+public class LiveRoomGoodsOrderQueryInfo extends QueryInfo {
+    private String roomUid;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    public String getRoomUid() {
+        return roomUid;
+    }
+
+    public void setRoomUid(String roomUid) {
+        this.roomUid = roomUid;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/LiveRoomGoodsOrderVo.java

@@ -0,0 +1,76 @@
+package com.ym.mec.biz.dal.vo;
+
+import java.math.BigDecimal;
+
+public class LiveRoomGoodsOrderVo extends BaseRoomUserVo{
+
+    private String phone;
+
+    private String goodsName;
+
+    private BigDecimal actualPrice;
+
+    private BigDecimal expectPrice;
+
+    private BigDecimal balance;
+
+    private BigDecimal couponRemitFee;
+
+    private String payTime;
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+
+    public BigDecimal getExpectPrice() {
+        return expectPrice;
+    }
+
+    public void setExpectPrice(BigDecimal expectPrice) {
+        this.expectPrice = expectPrice;
+    }
+
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    public BigDecimal getCouponRemitFee() {
+        return couponRemitFee;
+    }
+
+    public void setCouponRemitFee(BigDecimal couponRemitFee) {
+        this.couponRemitFee = couponRemitFee;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+}

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
 
@@ -94,5 +96,7 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      * @return
      */
     PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query);
+    //查询直播间商品订单列表
+    PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo);
 }
 

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveRoomBlackService.java

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo;
 import com.ym.mec.common.page.PageInfo;
 
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -20,9 +19,11 @@ public interface ImLiveRoomBlackService extends IService<ImLiveRoomBlack> {
     /**
      * 查询当前机构学生 -下拉框
      *
-     * @param search 搜索关键字不能为空
+     * @param param 参数
+     *              <p> search - 搜索关键字
+     *              <p> roomUid - 房间uid
      */
-    List<SysUser> queryStudentList(String roomUid, String search);
+    PageInfo<SysUser> queryStudentList(Map<String, Object> param);
 
     /**
      * 添加用户到房间黑名单中

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -21,9 +21,11 @@ import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.ImRoomMessage;
@@ -34,6 +36,7 @@ import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.collections.CollectionUtils;
@@ -1179,6 +1182,27 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         return PageUtil.pageInfo(page);
     }
 
+    @Override
+    public PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo) {
+        PageInfo<LiveRoomGoodsOrderVo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<LiveRoomGoodsOrderVo> dataList = null;
+        int count = baseMapper.countLiveRoomGoodsOrderList(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = baseMapper.queryLiveRoomGoodsOrderList(params);
+            pageInfo.setStatInfo(baseMapper.sumLiveRoomGoodsOrderList(params));
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
     /**
      * 查询直播间所有用户信息
      *

+ 9 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomBlackServiceImpl.java

@@ -45,17 +45,21 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
     /**
      * 查询当前机构学生 -下拉框
      *
-     * @param search 搜索关键字不能为空
+     * @param param 参数
+     *              <p> search - 搜索关键字
+     *              <p> roomUid - 房间uid
      */
     @Override
-    public List<SysUser> queryStudentList(String roomUid, String search) {
-        Optional.ofNullable(search).orElseThrow(() -> new BizException("search is null"));
+    public PageInfo<SysUser> queryStudentList(Map<String, Object> param) {
+        WrapperUtil.toStr(param, "search", "搜索关键字不能为空");
+        Page<SysUser> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setDesc("a.id_");
         Integer tenantId = TenantContextHolder.getTenantId();
         //管理员机构id 是-1
         if (Objects.nonNull(tenantId) && tenantId == -1) {
-            tenantId = null;
+            param.put("tenantId", tenantId);
         }
-        return baseMapper.queryStudent(tenantId, search, roomUid);
+        return PageUtil.pageInfo(baseMapper.queryStudent(pageInfo, param));
     }
 
     /**
@@ -122,7 +126,6 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
         WrapperUtil.toStr(param, "roomUid", "房间编号不能为空");
         Page<ImLiveRoomBlackVo> pageInfo = PageUtil.getPageInfo(param);
         pageInfo.setDesc("a.create_time_");
-        param.put("tenantId", TenantContextHolder.getTenantId());
         IPage<ImLiveRoomBlackVo> imLiveRoomBlackVoIPage = baseMapper.queryBlackList(pageInfo, param);
         return PageUtil.pageInfo(imLiveRoomBlackVoIPage);
     }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -283,12 +283,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             }
             //当前用户是否购买过免费直播课
             if(list.contains(sysUser.getId())){
-                throw new BizException("您已购买过本轮免费直播课");
+                throw new BizException("您已领取过本轮免费直播课");
             }
             //购买次数是否超过2次
             int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
             if(count >= 2){
-                throw new BizException("免费直播课已达到购买次数上限");
+                throw new BizException("免费直播课已达到领取次数上限");
             }
             //保存购买记录
             tempBuyFreeLiveTheoryCourseDao.insert(new TempBuyFreeLiveTheoryCourse(sysUser.getId()));
@@ -350,13 +350,13 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             }
             //当前用户是否购买过免费直播课
             if(list.contains(sysUser.getId())){
-                succeed.setMsg("您已购买过本轮免费直播课");
+                succeed.setMsg("您已领取过本轮免费直播课");
                 return succeed;
             }
             //购买次数是否超过2次
             int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
             if(count >= 2){
-                succeed.setMsg("免费直播课已达到购买次数上限");
+                succeed.setMsg("免费直播课已达到领取次数上限");
                 return succeed;
             }
         }else {

+ 52 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -112,6 +112,58 @@
             </foreach>
         </where>
     </select>
+    <resultMap id="LiveRoomGoodsOrderVo" type="com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo">
+        <result property="userId" column="user_id_"/>
+        <result property="userName" column="username_"/>
+        <result property="phone" column="phone_"/>
+        <result property="goodsName" column="goods_name_"/>
+        <result property="actualPrice" column="actual_amount_"/>
+        <result property="expectPrice" column="expect_amount_"/>
+        <result property="balance" column="balance_payment_amount_"/>
+        <result property="couponRemitFee" column="coupon_remit_fee_"/>
+        <result property="payTime" column="pay_time_"/>
+        <result property="goodsName" column="goods_name_"/>
+    </resultMap>
+    <sql id="queryLiveRoomGoodsOrderSql">
+        <where>
+            spo.group_type_ = 'LIVE_BUY' AND spo.type_ = 'LIVE_BUY'
+            AND spo.status_ = 'SUCCESS'
+            <if test="search != null and search != ''">
+                AND (su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+            <if test="roomUid != null and roomUid != ''">
+                AND spo.music_group_id_ = #{roomUid}
+            </if>
+            <if test="startTime != null">
+                AND DATE_FORMAT(spo.pay_time_, '%Y-%m-%d') >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                AND DATE_FORMAT(spo.pay_time_, '%Y-%m-%d') &lt;= #{endTime}
+            </if>
+        </where>
+    </sql>
+    <select id="queryLiveRoomGoodsOrderList" resultMap="LiveRoomGoodsOrderVo">
+        SELECT su.id_ user_id_,su.username_,su.phone_,spo.actual_amount_,spo.expect_amount_,
+        spo.balance_payment_amount_,spo.coupon_remit_fee_,spo.pay_time_,GROUP_CONCAT(lg.name_) goods_name_ FROM student_payment_order spo
+        LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+        LEFT JOIN live_goods lg ON FIND_IN_SET(lg.id_,spod.goods_id_list_)
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+        GROUP BY spo.id_
+        ORDER BY spo.pay_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <select id="countLiveRoomGoodsOrderList" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT spo.id_) FROM student_payment_order spo
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+    </select>
+    <select id="sumLiveRoomGoodsOrderList" resultType="java.util.Map">
+        SELECT COUNT(DISTINCT spo.user_id_) buyNum,SUM(spo.expect_amount_) totalAmount
+        FROM student_payment_order spo
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+    </select>
 
     <select id="queryRoomUser" resultType="com.ym.mec.biz.dal.vo.RoomReservationUserVo">
 

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -2,9 +2,11 @@ package com.ym.mec.web.controller;
 
 
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.common.controller.BaseController;
@@ -210,5 +212,10 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryBaseUserInfo(userIdList));
     }
 
+    @ApiOperation("查询直播间商品订单列表")
+    @GetMapping("/queryLiveRoomGoodsOrderList")
+    public HttpResponseResult<PageInfo<LiveRoomGoodsOrderVo>> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo){
+        return succeed(imLiveBroadcastRoomService.queryLiveRoomGoodsOrderList(queryInfo));
+    }
 }
 

+ 14 - 12
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveRoomBlackController.java

@@ -2,20 +2,20 @@ package com.ym.mec.web.controller;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
-import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveRoomBlackVo;
 import com.ym.mec.biz.service.ImLiveRoomBlackService;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-import com.ym.mec.common.controller.BaseController;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -35,12 +35,14 @@ public class ImLiveRoomBlackController extends BaseController {
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "roomUid", dataType = "String", value = "直播房间uid"),
-            @ApiImplicitParam(name = "search", dataType = "String", value = "搜索关键字-用户id,用户名,手机号"),
+            @ApiImplicitParam(name = "search", dataType = "String", value = "搜索关键字-用户id,用户名,手机号", required = true),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })
-    @ApiOperation("分页查询直播间列表")
-    @GetMapping("/queryStudentList")
-    public HttpResponseResult<List<SysUser>> queryStudentList(String roomUid, String search) {
-        return succeed(imLiveRoomBlackService.queryStudentList(roomUid, search));
+    @ApiOperation("查询当前机构学生 -下拉框")
+    @PostMapping("/queryStudentList")
+    public HttpResponseResult<PageInfo<SysUser>> queryStudentList(@RequestBody Map<String, Object> param) {
+        return succeed(imLiveRoomBlackService.queryStudentList(param));
     }
 
     @ApiImplicitParams({
@@ -49,7 +51,7 @@ public class ImLiveRoomBlackController extends BaseController {
     })
     @ApiOperation("添加用户到房间黑名单中")
     @PostMapping("/add")
-    public HttpResponseResult<Object> add(Map<String, Object> param){
+    public HttpResponseResult<Object> add(@RequestBody Map<String, Object> param) {
         imLiveRoomBlackService.add(param);
         return succeed();
     }
@@ -60,7 +62,7 @@ public class ImLiveRoomBlackController extends BaseController {
     })
     @ApiOperation("删除该用户从房间黑名单中移除")
     @PostMapping("/delete")
-    public HttpResponseResult<Object> delete(Map<String, Object> param){
+    public HttpResponseResult<Object> delete(@RequestBody Map<String, Object> param) {
         imLiveRoomBlackService.delete(param);
         return succeed();
     }