浏览代码

Merge remote-tracking branch 'origin/saas_2022_05_17_activity' into saas_2022_05_17_activity

zouxuan 3 年之前
父节点
当前提交
0907695276

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java

@@ -3,6 +3,7 @@ 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.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,5 +27,13 @@ public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleAr
     List<Integer> queryAllUserId();
 
     <T> IPage<T> queryCampUser(Page<T> page, @Param("param") Map<String, Object> param);
+
+    /**
+     * imGroupId
+     * search
+     */
+    <T> IPage<T> queryUserTrainingDetail(Page<T> page, @Param("param") Map<String, Object> param);
+
+    List<ImGroup> queryCampImGroup(String imGroupIds);
 }
 

+ 70 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserTrainingDetailVo.java

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+@ApiModel(value = "训练营详情")
+public class TempCampUserTrainingDetailVo implements Serializable {
+    @ApiModelProperty(value = "用户id")
+    private Integer id;
+    @ApiModelProperty(value = "用户名称")
+    private String username;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "群组名称")
+    private String imGroupName;
+    @ApiModelProperty(value = "训练天数")
+    private Integer playDay;
+    @ApiModelProperty(value = "训练时间")
+    private Integer playTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getImGroupName() {
+        return imGroupName;
+    }
+
+    public void setImGroupName(String imGroupName) {
+        this.imGroupName = imGroupName;
+    }
+
+    public Integer getPlayDay() {
+        return playDay;
+    }
+
+    public void setPlayDay(Integer playDay) {
+        this.playDay = playDay;
+    }
+
+    public Integer getPlayTime() {
+        return playTime;
+    }
+
+    public void setPlayTime(Integer playTime) {
+        this.playTime = playTime;
+    }
+}

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserVo.java

@@ -9,9 +9,8 @@ import java.io.Serializable;
  * @author hgw
  * Created by 2022-03-02
  */
-@ApiModel(value = "分页查询机构信息")
+@ApiModel(value = "训练营参与人员信息")
 public class TempCampUserVo implements Serializable {
-
     @ApiModelProperty(value = "用户id")
     private Integer id;
     @ApiModelProperty(value = "用户名称")

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java

@@ -3,7 +3,9 @@ package com.ym.mec.biz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao;
 import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo;
 import com.ym.mec.biz.dal.vo.TempCampUserVo;
 import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
 import com.ym.mec.common.page.PageInfo;
@@ -70,6 +72,23 @@ public interface TempLittleArtistTrainingCampService extends IService<TempLittle
      */
     List<TempUserTrainingTimeDetailVo> queryUserTrainingTime(Map<String, Object> param);
 
+    /**
+     * 分页查询-训练营详情
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - imGroupId  所在群组Id
+     *              <p> - search 学员姓名/手机号/编号
+     */
+    PageInfo<TempCampUserTrainingDetailVo> queryUserTrainingDetail(Map<String, Object> param);
+
+    /**
+     * 根据群组Id查询群组信息
+     *
+     * @param imGroupIds 群组id,多个用逗号隔开
+     */
+    List<ImGroup> queryCampImGroup(String imGroupIds);
 }
 
 

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -8,8 +8,10 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao;
 import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
+import com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo;
 import com.ym.mec.biz.dal.vo.TempCampUserVo;
 import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
 import com.ym.mec.biz.service.TempLittleArtistTrainingCampService;
@@ -115,6 +117,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         Page<TempLittleArtistTrainingCamp> page = PageUtil.getPageInfo(param);
         page.setAsc("apply_start_date_");
         IPage<TempLittleArtistTrainingCamp> pageList = this.page(page, Wrappers.<TempLittleArtistTrainingCamp>lambdaQuery()
+                .eq(TempLittleArtistTrainingCamp::getDelFlag, 0)
                 .eq(WrapperUtil.strParamIsNull(param, "name"), TempLittleArtistTrainingCamp::getName, WrapperUtil.toStr(param, "name"))
                 .eq(WrapperUtil.strParamIsNull(param, "state"), TempLittleArtistTrainingCamp::getState, WrapperUtil.toStr(param, "state"))
                 .ge(Objects.nonNull(param.get("applyStartDate")), TempLittleArtistTrainingCamp::getApplyStartDate, param.get("applyStartDate"))
@@ -146,6 +149,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
      * @param param 参数
      *              <p> - userId 用户id
      */
+    @Override
     public List<TempUserTrainingTimeDetailVo> queryUserTrainingTime(Map<String, Object> param) {
         Integer userId = WrapperUtil.toInt(param, "userId", "学员id不能为空");
         //查询训练营的训练时间段
@@ -196,6 +200,32 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         return resultList;
     }
 
+    /**
+     * 分页查询-训练营详情
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - imGroupId  所在群组Id
+     *              <p> - search 学员姓名/手机号/编号
+     */
+    @Override
+    public PageInfo<TempCampUserTrainingDetailVo> queryUserTrainingDetail(Map<String, Object> param) {
+        Page<TempCampUserTrainingDetailVo> page = PageUtil.getPageInfo(param);
+        page.setDesc("b.playDay");
+        return PageUtil.pageInfo(baseMapper.queryUserTrainingDetail(page, param));
+    }
+
+    /**
+     * 根据群组Id查询群组信息
+     *
+     * @param imGroupIds 群组id,多个用逗号隔开
+     */
+    @Override
+    public List<ImGroup> queryCampImGroup(String imGroupIds) {
+        return baseMapper.queryCampImGroup(imGroupIds);
+    }
+
     private SysUser getUser() {
         //修改机构基础信息
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())

+ 47 - 0
mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml

@@ -97,4 +97,51 @@
             </if>
         </where>
     </select>
+
+    <select id="queryUserTrainingDetail" parameterType="java.util.Map" resultType="com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo">
+     SELECT a.user_id_ as id,
+        d.username_ as username,
+        d.phone_ as phone,
+        e.name_ as imGroupName,
+        ifnull(b.playDay, 0) as playDay,
+        ifnull(c.playTime, 0) as playTime
+        FROM temp_little_artist_training_camp_user_relation as a
+        left join (select a.user_id_, count(playDay) as playDay
+        from (SELECT cr.`user_id_`,
+        date(cr.`create_time_`) as playDay
+        FROM `sys_music_compare_record` cr
+        WHERE date(cr.`create_time_`) &gt;= #{param.startTime}
+        AND date(cr.`create_time_`) &lt;= #{param.endTime}
+        GROUP BY cr.`user_id_`, date(cr.`create_time_`)
+        HAVING sum(cr.`play_time_`) > 1200) as a
+        group by a.user_id_) as b on a.user_id_ = b.user_id_
+        left join (SELECT cr.`user_id_`,
+        sum(cr.`play_time_`) as playTime
+        FROM `sys_music_compare_record` cr
+        WHERE date(cr.`create_time_`) &gt;= #{param.startTime}
+        AND date(cr.`create_time_`) &lt;= #{param.endTime}
+        GROUP BY cr.`user_id_`) as c on a.user_id_ = c.user_id_
+        left join sys_user as d on d.id_ = a.user_id_
+        left join im_group as e on a.im_group_id_ = e.id_
+        <where>
+            <if test="param.imGroupId != null">
+                AND e.im_group_id_ = #{param.imGroupId}
+            </if>
+            <if test="param.search != null ">
+                AND (
+                d.`id_` LIKE CONCAT('%', #{param.search},'%')
+                OR d.`name_` LIKE CONCAT('%', #{param.search},'%')
+                OR d.`phone_` LIKE CONCAT('%', #{param.search},'%')
+                )
+            </if>
+        </where>
+    </select>
+
+    <select id="queryCampImGroup" resultType="com.ym.mec.biz.dal.entity.ImGroup">
+        select id_ as id,
+               name_ as name
+        from im_group
+        where find_in_set(id_, #{imGroupIds})
+    </select>
+
 </mapper>

+ 114 - 0
mec-student/src/main/java/com/ym/mec/student/controller/TempLittleArtistTrainingCampController.java

@@ -0,0 +1,114 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo;
+import com.ym.mec.biz.dal.vo.TempCampUserVo;
+import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
+import com.ym.mec.biz.service.TempLittleArtistTrainingCampService;
+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.*;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-17 20:56:22
+ */
+@Api(tags = "小小艺术家训练营活动")
+@RestController
+@RequestMapping("/tempLittleArtistTrainingCamp")
+public class TempLittleArtistTrainingCampController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private TempLittleArtistTrainingCampService tempLittleArtistTrainingCampService;
+
+    @ApiOperation("添加训练营")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<Object> add(@Valid @RequestBody TempLittleArtistTrainingCampDto dto) {
+        tempLittleArtistTrainingCampService.add(dto);
+        return succeed();
+    }
+
+    @ApiOperation("修改训练营")
+    @PostMapping(value = "/update")
+    public HttpResponseResult<Object> update(@Valid @RequestBody TempLittleArtistTrainingCampDto dto) {
+        tempLittleArtistTrainingCampService.update(dto);
+        return succeed();
+    }
+
+    @ApiOperation("修改机构启用停用状态")
+    @GetMapping(value = "/delete/{id}")
+    public HttpResponseResult<Object> opsState(@ApiParam(value = "训练营ID", required = true) @PathVariable("id") Integer id) {
+        tempLittleArtistTrainingCampService.delete(id);
+        return succeed();
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", dataType = "String", value = "训练营标题-模糊搜索"),
+            @ApiImplicitParam(name = "state", dataType = "String", value = "筹备中 READY,报名中 APPLY,未开始 NOT_START,进行中 ING,已结束 END"),
+            @ApiImplicitParam(name = "applyStartDate", dataType = "String", value = "申请报名登记开始日期-年月日"),
+            @ApiImplicitParam(name = "applyEndDate", dataType = "String", value = "申请报名登记结束日期-年月日"),
+            @ApiImplicitParam(name = "trainStartDate", dataType = "String", value = "训练开始日期-年月日"),
+            @ApiImplicitParam(name = "trainEndDate", dataType = "String", value = "训练结束日期-年月日"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", required = true, value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", required = true, value = "每页数量"),
+    })
+    @ApiOperation("分页查询-训练营列表")
+    @PostMapping(value = "/queryPageTrainingCamp")
+    public HttpResponseResult<PageInfo<TempLittleArtistTrainingCamp>> queryPageTrainingCamp(@RequestBody Map<String, Object> param) {
+        return succeed(tempLittleArtistTrainingCampService.queryPageTrainingCamp(param));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "学员姓名/手机号/编号-模糊搜索"),
+            @ApiImplicitParam(name = "state", dataType = "String", value = "状态:未报名NOT_APPLY ,已报名 APPLY"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", required = true, value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", required = true, value = "每页数量"),
+    })
+    @ApiOperation("分页查询-参与名单")
+    @PostMapping(value = "/queryPageTrainingCampUser")
+    public HttpResponseResult<PageInfo<TempCampUserVo>> queryPageTrainingCampUser(@RequestBody Map<String, Object> param) {
+        return succeed(tempLittleArtistTrainingCampService.queryPageTrainingCampUser(param));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", dataType = "Integer", required = true, value = "用户id"),
+    })
+    @ApiOperation("查询指定学生-训练营每日训练时长")
+    @PostMapping(value = "/queryUserTrainingTime")
+    public HttpResponseResult<List<TempUserTrainingTimeDetailVo>> queryUserTrainingTime(@RequestBody Map<String, Object> param) {
+        return succeed(tempLittleArtistTrainingCampService.queryUserTrainingTime(param));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "学员姓名/手机号/编号-模糊搜索"),
+            @ApiImplicitParam(name = "imGroupId", dataType = "Integer", value = "所在群组Id"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", required = true, value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", required = true, value = "每页数量"),
+    })
+    @ApiOperation("分页查询-训练营详情")
+    @PostMapping(value = "/queryUserTrainingDetail")
+    public HttpResponseResult<PageInfo<TempCampUserTrainingDetailVo>> queryUserTrainingDetail(@RequestBody Map<String, Object> param){
+        return succeed(tempLittleArtistTrainingCampService.queryUserTrainingDetail(param));
+    }
+
+    @ApiOperation("根据群组Id查询群组信息")
+    @GetMapping(value = "/queryCampImGroup")
+    public HttpResponseResult<List<ImGroup>> queryCampImGroup(@ApiParam(value = "群组id,多个用逗号隔开 imGroupIds", required = true) String imGroupIds){
+        return succeed(tempLittleArtistTrainingCampService.queryCampImGroup(imGroupIds));
+    }
+
+}
+

+ 20 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

@@ -1,7 +1,9 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo;
 import com.ym.mec.biz.dal.vo.TempCampUserVo;
 import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
 import com.ym.mec.biz.service.TempLittleArtistTrainingCampService;
@@ -90,5 +92,23 @@ public class TempLittleArtistTrainingCampController extends BaseController {
         return succeed(tempLittleArtistTrainingCampService.queryUserTrainingTime(param));
     }
 
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "学员姓名/手机号/编号-模糊搜索"),
+            @ApiImplicitParam(name = "imGroupId", dataType = "Integer", value = "所在群组Id"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", required = true, value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", required = true, value = "每页数量"),
+    })
+    @ApiOperation("分页查询-训练营详情")
+    @PostMapping(value = "/queryUserTrainingDetail")
+    public HttpResponseResult<PageInfo<TempCampUserTrainingDetailVo>> queryUserTrainingDetail(@RequestBody Map<String, Object> param){
+        return succeed(tempLittleArtistTrainingCampService.queryUserTrainingDetail(param));
+    }
+
+    @ApiOperation("根据群组Id查询群组信息")
+    @GetMapping(value = "/queryCampImGroup")
+    public HttpResponseResult<List<ImGroup>> queryCampImGroup(@ApiParam(value = "群组id,多个用逗号隔开 imGroupIds", required = true) String imGroupIds){
+        return succeed(tempLittleArtistTrainingCampService.queryCampImGroup(imGroupIds));
+    }
+
 }