Просмотр исходного кода

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

zouxuan 3 лет назад
Родитель
Сommit
32f23ee225
16 измененных файлов с 1129 добавлено и 0 удалено
  1. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java
  2. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampUserRelationDao.java
  3. 93 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TempLittleArtistTrainingCampDto.java
  4. 203 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCamp.java
  5. 100 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCampUserRelation.java
  6. 65 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserVo.java
  7. 58 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeDetailVo.java
  8. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeVo.java
  9. 75 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java
  10. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampUserRelationService.java
  11. 207 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java
  12. 28 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java
  13. 100 0
      mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml
  14. 28 0
      mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampUserRelationMapper.xml
  15. 4 0
      mec-common/common-core/src/main/java/com/ym/mec/common/page/WrapperUtil.java
  16. 94 0
      mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

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

@@ -0,0 +1,30 @@
+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.TempLittleArtistTrainingCamp;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表数据库访问层
+ *
+ * @author hgw
+ * @since 2022-05-17 20:56:22
+ */
+public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleArtistTrainingCamp> {
+
+    int insertBatch(@Param("entities") List<TempLittleArtistTrainingCamp> entities);
+
+    <T> IPage<T> queryUserTrainingTime(Page<T> page, @Param("param") Map<String, Object> param);
+
+    <T> List<T> queryUserTrainingTime(@Param("param") Map<String, Object> param);
+
+    List<Integer> queryAllUserId();
+
+    <T> IPage<T> queryCampUser(Page<T> page, @Param("param") Map<String, Object> param);
+}
+

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampUserRelationDao.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 训练营与学生关系表(TempLittleArtistTrainingCampUserRelation)表数据库访问层
+ *
+ * @author hgw
+ * @since 2022-05-18 15:48:00
+ */
+public interface TempLittleArtistTrainingCampUserRelationDao extends BaseMapper<TempLittleArtistTrainingCampUserRelation> {
+
+    int insertBatch(@Param("entities") List<TempLittleArtistTrainingCampUserRelation> entities);
+
+}
+

+ 93 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TempLittleArtistTrainingCampDto.java

@@ -0,0 +1,93 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+public class TempLittleArtistTrainingCampDto implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "活动名称")
+    private String name;
+
+    @NotNull(message = "报名开始日期不能为空")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "申请报名登记开始日期")
+    private Date applyStartDate;
+
+    @NotNull(message = "报名结束日期不能为空")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "申请报名登记结束日期")
+    private Date applyEndDate;
+
+    @NotNull(message = "训练开始日期不能为空")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "训练开始日期")
+    private Date trainStartDate;
+
+    @NotNull(message = "训练结束日期不能为空")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "训练结束日期")
+    private Date trainEndDate;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getApplyStartDate() {
+        return applyStartDate;
+    }
+
+    public void setApplyStartDate(Date applyStartDate) {
+        this.applyStartDate = applyStartDate;
+    }
+
+    public Date getApplyEndDate() {
+        return applyEndDate;
+    }
+
+    public void setApplyEndDate(Date applyEndDate) {
+        this.applyEndDate = applyEndDate;
+    }
+
+    public Date getTrainStartDate() {
+        return trainStartDate;
+    }
+
+    public void setTrainStartDate(Date trainStartDate) {
+        this.trainStartDate = trainStartDate;
+    }
+
+    public Date getTrainEndDate() {
+        return trainEndDate;
+    }
+
+    public void setTrainEndDate(Date trainEndDate) {
+        this.trainEndDate = trainEndDate;
+    }
+}

+ 203 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCamp.java

@@ -0,0 +1,203 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表实体类
+ *
+ * @author hgw
+ * @since 2022-05-17 20:56:22
+ */
+@ApiModel(value = "temp_little_artist_training_camp-小小艺术家训练营活动")
+public class TempLittleArtistTrainingCamp implements Serializable {
+    //筹备中
+    public static final String READY = "READY";
+    //报名中
+    public static final String APPLY = "APPLY";
+    //未开始
+    public static final String NOT_START = "NOT_START";
+    //进行中
+    public static final String ING = "ING";
+    //已结束
+    public static final String END = "END";
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @TableField("name_")
+    @ApiModelProperty(value = "活动名称")
+    private String name;
+
+    @TableField("num_")
+    @ApiModelProperty(value = "报名人数")
+    private Integer num;
+
+    @TableField("apply_start_date_")
+    @ApiModelProperty(value = "申请报名登记开始日期")
+    private Date applyStartDate;
+
+    @TableField("apply_end_date_")
+    @ApiModelProperty(value = "申请报名登记结束日期")
+    private Date applyEndDate;
+
+    @TableField("train_start_date_")
+    @ApiModelProperty(value = "训练开始日期")
+    private Date trainStartDate;
+
+    @TableField("train_end_date_")
+    @ApiModelProperty(value = "训练结束日期")
+    private Date trainEndDate;
+
+    @TableField("state_")
+    @ApiModelProperty(value = "筹备中 READY,报名中 APPLY,未开始 NOT_START,进行中 ING,已结束 END")
+    private String state;
+
+    @TableField("im_group_ids_")
+    @ApiModelProperty(value = "聊天群组id多个用逗号隔开")
+    private String imGroupIds;
+
+    @TableField("del_flag_")
+    @ApiModelProperty(value = "删除标识 0未删除 1已删除' ")
+    private Integer delFlag;
+
+    @TableField("create_by_")
+    @ApiModelProperty(value = "创建人")
+    private Integer createBy;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_by_")
+    @ApiModelProperty(value = "修改人")
+    private Integer updateBy;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Date getApplyStartDate() {
+        return applyStartDate;
+    }
+
+    public void setApplyStartDate(Date applyStartDate) {
+        this.applyStartDate = applyStartDate;
+    }
+
+    public Date getApplyEndDate() {
+        return applyEndDate;
+    }
+
+    public void setApplyEndDate(Date applyEndDate) {
+        this.applyEndDate = applyEndDate;
+    }
+
+    public Date getTrainStartDate() {
+        return trainStartDate;
+    }
+
+    public void setTrainStartDate(Date trainStartDate) {
+        this.trainStartDate = trainStartDate;
+    }
+
+    public Date getTrainEndDate() {
+        return trainEndDate;
+    }
+
+    public void setTrainEndDate(Date trainEndDate) {
+        this.trainEndDate = trainEndDate;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getImGroupIds() {
+        return imGroupIds;
+    }
+
+    public void setImGroupIds(String imGroupIds) {
+        this.imGroupIds = imGroupIds;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Integer createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Integer getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Integer updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

+ 100 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCampUserRelation.java

@@ -0,0 +1,100 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 训练营与学生关系表(TempLittleArtistTrainingCampUserRelation)表实体类
+ *
+ * @author hgw
+ * @since 2022-05-18 15:48:00
+ */
+@ApiModel(value = "temp_little_artist_training_camp_user_relation-训练营与学生关系表")
+public class TempLittleArtistTrainingCampUserRelation implements Serializable {
+
+    //已报名 APPLY
+    public static final String APPLY = "APPLY";
+    //未报名NOT_APPLY
+    public static final String NOT_APPLY = "NOT_APPLY";
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @TableField("activity_id_")
+    @ApiModelProperty(value = "训练营id")
+    private Integer activityId;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "用户id")
+    private Integer userId;
+
+    @TableField("im_group_id_")
+    @ApiModelProperty(value = "im群id")
+    private Integer imGroupId;
+
+    @TableField("state_")
+    @ApiModelProperty(value = "状态:未报名NOT_APPLY ,已报名 APPLY")
+    private String state;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Integer activityId) {
+        this.activityId = activityId;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(Integer imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+}
+

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserVo.java

@@ -0,0 +1,65 @@
+package com.ym.mec.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @author hgw
+ * Created by 2022-03-02
+ */
+@ApiModel(value = "分页查询机构信息")
+public class TempCampUserVo implements Serializable {
+
+    @ApiModelProperty(value = "用户id")
+    private Integer id;
+    @ApiModelProperty(value = "用户名称")
+    private String username;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "状态:未报名NOT_APPLY ,已报名 APPLY")
+    private String state;
+    @ApiModelProperty(value = "训练营名称")
+    private String campName;
+
+    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 getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getCampName() {
+        return campName;
+    }
+
+    public void setCampName(String campName) {
+        this.campName = campName;
+    }
+}

+ 58 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeDetailVo.java

@@ -0,0 +1,58 @@
+package com.ym.mec.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class TempUserTrainingTimeDetailVo implements Serializable {
+
+    @ApiModelProperty(value = "用户id")
+    private Integer userId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE)
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "训练日期")
+    private Date trainingDate;
+
+    @ApiModelProperty(value = "训练时长/秒-保留2位")
+    private BigDecimal playTime;
+
+    @ApiModelProperty(value = "是否完成训练  0-未完成 1-已完成")
+    private Integer isFinish;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Date getTrainingDate() {
+        return trainingDate;
+    }
+
+    public void setTrainingDate(Date trainingDate) {
+        this.trainingDate = trainingDate;
+    }
+
+    public BigDecimal getPlayTime() {
+        return playTime;
+    }
+
+    public void setPlayTime(BigDecimal playTime) {
+        this.playTime = playTime;
+    }
+
+    public Integer getIsFinish() {
+        return isFinish;
+    }
+
+    public void setIsFinish(Integer isFinish) {
+        this.isFinish = isFinish;
+    }
+}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeVo.java

@@ -0,0 +1,7 @@
+package com.ym.mec.biz.dal.vo;
+
+import java.io.Serializable;
+
+public class TempUserTrainingTimeVo implements Serializable {
+
+}

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

@@ -0,0 +1,75 @@
+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.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.vo.TempCampUserVo;
+import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
+import com.ym.mec.common.page.PageInfo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表服务接口
+ *
+ * @author hgw
+ * @since 2022-05-17 20:56:22
+ */
+public interface TempLittleArtistTrainingCampService extends IService<TempLittleArtistTrainingCamp> {
+
+    TempLittleArtistTrainingCampDao getDao();
+
+    /**
+     * 新建训练营
+     */
+    void add(TempLittleArtistTrainingCampDto dto);
+
+    /**
+     * 修改训练营
+     */
+    void update(TempLittleArtistTrainingCampDto dto);
+
+    /**
+     * 删除训练营
+     */
+    void delete(Integer id);
+
+    /**
+     * 分页查询-训练营列表
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - name 训练营标题-模糊搜索
+     *              <p> - state 筹备中 READY,报名中 APPLY,未开始 NOT_START,进行中 ING,已结束 END
+     *              <p> - applyStartDate 申请报名登记开始日期-年月日
+     *              <p> - applyEndDate 申请报名登记结束日期-年月日
+     *              <p> - trainStartDate 训练开始日期-年月日
+     *              <p> - trainEndDate 训练结束日期-年月日
+     */
+    PageInfo<TempLittleArtistTrainingCamp> queryPageTrainingCamp(Map<String, Object> param);
+
+    /**
+     * 参与名单
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - state 状态:未报名NOT_APPLY ,已报名 APPLY
+     *              <p> - search 学员姓名/手机号/编号
+     */
+    PageInfo<TempCampUserVo> queryPageTrainingCampUser(Map<String, Object> param);
+
+    /**
+     * 查询指定学生-训练营每日训练时长
+     *
+     * @param param 参数
+     *              <p> - userId 用户id
+     */
+    List<TempUserTrainingTimeDetailVo> queryUserTrainingTime(Map<String, Object> param);
+
+}
+
+

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampUserRelationService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
+
+/**
+ * 训练营与学生关系表(TempLittleArtistTrainingCampUserRelation)表服务接口
+ *
+ * @author hgw
+ * @since 2022-05-18 15:48:00
+ */
+public interface TempLittleArtistTrainingCampUserRelationService extends IService<TempLittleArtistTrainingCampUserRelation> {
+
+    TempLittleArtistTrainingCampUserRelationDao getDao();
+}
+

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

@@ -0,0 +1,207 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
+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.biz.service.TempLittleArtistTrainingCampUserRelationService;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import com.ym.mec.common.page.WrapperUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表服务实现类
+ *
+ * @author hgw
+ * @since 2022-05-17 20:56:23
+ */
+@Service("tempLittleArtistTrainingCampService")
+public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLittleArtistTrainingCampDao, TempLittleArtistTrainingCamp> implements TempLittleArtistTrainingCampService {
+
+    private final static Logger log = LoggerFactory.getLogger(TempLittleArtistTrainingCampServiceImpl.class);
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TempLittleArtistTrainingCampUserRelationService tempLittleArtistTrainingCampUserRelationService;
+
+    @Override
+    public TempLittleArtistTrainingCampDao getDao() {
+        return this.baseMapper;
+    }
+
+    /**
+     * 新建训练营
+     */
+    @Override
+    public void add(TempLittleArtistTrainingCampDto dto) {
+        SysUser user = getUser();
+        TempLittleArtistTrainingCamp entity = new TempLittleArtistTrainingCamp();
+        BeanUtils.copyProperties(dto, entity);
+        entity.setState(TempLittleArtistTrainingCamp.READY);
+        entity.setCreateBy(user.getId());
+        entity.setCreateTime(new Date());
+        this.save(entity);
+    }
+
+    /**
+     * 修改训练营
+     */
+    @Override
+    public void update(TempLittleArtistTrainingCampDto dto) {
+        SysUser user = getUser();
+        TempLittleArtistTrainingCamp entity = Optional.ofNullable(dto.getId())
+                .map(this::getById)
+                .orElseThrow(() -> new BizException("训练营不存在"));
+        entity.setName(dto.getName());
+        entity.setApplyStartDate(dto.getApplyStartDate());
+        entity.setApplyEndDate(dto.getApplyEndDate());
+        entity.setTrainStartDate(dto.getTrainStartDate());
+        entity.setTrainEndDate(dto.getTrainEndDate());
+        entity.setState(TempLittleArtistTrainingCamp.READY);
+        entity.setUpdateBy(user.getId());
+        entity.setUpdateTime(new Date());
+        this.updateById(entity);
+    }
+
+    /**
+     * 删除训练营
+     */
+    @Override
+    public void delete(Integer id) {
+        TempLittleArtistTrainingCamp entity = Optional.ofNullable(id)
+                .map(this::getById)
+                .orElseThrow(() -> new BizException("训练营不存在"));
+        entity.setDelFlag(0);
+        this.updateById(entity);
+    }
+
+    /**
+     * 分页查询-训练营列表
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - name 训练营标题-模糊搜索
+     *              <p> - state 筹备中 READY,报名中 APPLY,未开始 NOT_START,进行中 ING,已结束 END
+     *              <p> - applyStartDate 申请报名登记开始日期
+     *              <p> - applyEndDate 申请报名登记结束日期
+     *              <p> - trainStartDate 训练开始日期
+     *              <p> - trainEndDate 训练结束日期
+     */
+    @Override
+    public PageInfo<TempLittleArtistTrainingCamp> queryPageTrainingCamp(Map<String, Object> param) {
+        Page<TempLittleArtistTrainingCamp> page = PageUtil.getPageInfo(param);
+        page.setAsc("apply_start_date_");
+        IPage<TempLittleArtistTrainingCamp> pageList = this.page(page, Wrappers.<TempLittleArtistTrainingCamp>lambdaQuery()
+                .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"))
+                .le(Objects.nonNull(param.get("applyEndDate")), TempLittleArtistTrainingCamp::getApplyEndDate, param.get("applyEndDate"))
+                .ge(Objects.nonNull(param.get("trainStartDate")), TempLittleArtistTrainingCamp::getTrainStartDate, param.get("trainStartDate"))
+                .le(Objects.nonNull(param.get("trainEndDate")), TempLittleArtistTrainingCamp::getTrainEndDate, param.get("trainEndDate")));
+        return PageUtil.pageInfo(pageList);
+    }
+
+    /**
+     * 参与名单
+     *
+     * @param param 条件
+     *              <p> - row 条数
+     *              <p> - page 页数
+     *              <p> - state 状态:未报名NOT_APPLY ,已报名 APPLY
+     *              <p> - search 学员姓名/手机号/编号
+     */
+    @Override
+    public PageInfo<TempCampUserVo> queryPageTrainingCampUser(Map<String, Object> param) {
+        Page<TempCampUserVo> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setDesc("a.create_time_");
+        return PageUtil.pageInfo(baseMapper.queryCampUser(pageInfo, param));
+    }
+
+    /**
+     * 查询指定学生-训练营每日训练时长
+     *
+     * @param param 参数
+     *              <p> - userId 用户id
+     */
+    public List<TempUserTrainingTimeDetailVo> queryUserTrainingTime(Map<String, Object> param) {
+        Integer userId = WrapperUtil.toInt(param, "userId", "学员id不能为空");
+        //查询训练营的训练时间段
+        TempLittleArtistTrainingCampUserRelation campUser = tempLittleArtistTrainingCampUserRelationService.getOne(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
+                .eq(TempLittleArtistTrainingCampUserRelation::getUserId, userId));
+        TempLittleArtistTrainingCamp camp = this.getOne(Wrappers.<TempLittleArtistTrainingCamp>lambdaQuery()
+                .eq(TempLittleArtistTrainingCamp::getId, campUser.getActivityId())
+                .eq(TempLittleArtistTrainingCamp::getDelFlag, 0));
+        String startDateStr = DateUtil.dateToString(camp.getTrainStartDate());
+        String endDateStr = DateUtil.dateToString(camp.getTrainEndDate());
+
+        //生成训练时间集合
+        List<TempUserTrainingTimeDetailVo> resultList = new ArrayList<>();
+        LocalDate generateDate = LocalDate.parse(startDateStr);
+        boolean flag = true;
+        while (flag) {
+            if (generateDate.toString().equals(endDateStr)) {
+                flag = false;
+            }
+            TempUserTrainingTimeDetailVo tempUserTrainingTimeDetailVo = new TempUserTrainingTimeDetailVo();
+            tempUserTrainingTimeDetailVo.setUserId(userId);
+            tempUserTrainingTimeDetailVo.setTrainingDate(camp.getTrainStartDate());
+            tempUserTrainingTimeDetailVo.setPlayTime(BigDecimal.ZERO);
+            tempUserTrainingTimeDetailVo.setIsFinish(0);
+            resultList.add(tempUserTrainingTimeDetailVo);
+            generateDate = generateDate.plusDays(1);
+        }
+        //查询每日训练时长
+        param.put("startTime", startDateStr + " 00:00:00");
+        param.put("endTime", endDateStr + " 23:59:59");
+        List<TempUserTrainingTimeDetailVo> userTrainingTimeList = baseMapper.queryUserTrainingTime(param);
+        //拼接数据
+        if (CollectionUtils.isNotEmpty(userTrainingTimeList)) {
+            Map<String, BigDecimal> nowTrainingTime = userTrainingTimeList.stream()
+                    .collect(Collectors.toMap(k -> DateUtil.dateToString(k.getTrainingDate()), TempUserTrainingTimeDetailVo::getPlayTime));
+            resultList.forEach(vo -> {
+                String s = DateUtil.dateToString(vo.getTrainingDate());
+                BigDecimal t = nowTrainingTime.get(s);
+                if (Objects.nonNull(t)) {
+                    vo.setPlayTime(t);
+                    //大于1200秒
+                    if (t.intValue() > 1200) {
+                        vo.setIsFinish(1);
+                    }
+                }
+            });
+        }
+        return resultList;
+    }
+
+    private SysUser getUser() {
+        //修改机构基础信息
+        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
+                .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));
+    }
+
+
+}
+

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
+import com.ym.mec.biz.service.TempLittleArtistTrainingCampUserRelationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+/**
+ * 训练营与学生关系表(TempLittleArtistTrainingCampUserRelation)表服务实现类
+ *
+ * @author hgw
+ * @since 2022-05-18 15:48:00
+ */
+@Service("tempLittleArtistTrainingCampUserRelationService")
+public class TempLittleArtistTrainingCampUserRelationServiceImpl extends ServiceImpl<TempLittleArtistTrainingCampUserRelationDao, TempLittleArtistTrainingCampUserRelation> implements TempLittleArtistTrainingCampUserRelationService {
+
+    private final static Logger log = LoggerFactory.getLogger(TempLittleArtistTrainingCampUserRelationServiceImpl.class);
+
+    @Override
+    public TempLittleArtistTrainingCampUserRelationDao getDao() {
+        return this.baseMapper;
+    }
+
+}
+

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

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="name_" jdbcType="VARCHAR" property="name"/>
+        <result column="num_" jdbcType="INTEGER" property="num"/>
+        <result column="apply_start_date_" jdbcType="TIMESTAMP" property="applyStartDate"/>
+        <result column="apply_end_date_" jdbcType="TIMESTAMP" property="applyEndDate"/>
+        <result column="train_start_date_" jdbcType="TIMESTAMP" property="trainStartDate"/>
+        <result column="train_end_date_" jdbcType="TIMESTAMP" property="trainEndDate"/>
+        <result column="state_" jdbcType="VARCHAR" property="state"/>
+        <result column="im_group_ids_" jdbcType="VARCHAR" property="imGroupIds"/>
+        <result column="del_flag_" jdbcType="INTEGER" property="delFlag"/>
+        <result column="create_by_" jdbcType="INTEGER" property="createBy"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_by_" jdbcType="INTEGER" property="updateBy"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_, state_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
+        insert into temp_little_artist_training_camp(name_, num_, apply_start_date_, apply_end_date_, train_start_date_,
+        train_end_date_, state_, im_group_ids_, del_flag_,create_by_, create_time_, update_by_, update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.name}, #{entity.num}, #{entity.applyStartDate}, #{entity.applyEndDate}, #{entity.trainStartDate},
+            #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.createBy}, #{entity.createTime},
+            #{entity.updateBy}, #{entity.updateTime})
+        </foreach>
+    </insert>
+
+    <select id="queryUserTrainingTime" resultType="com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo" parameterType="java.util.Map">
+        SELECT
+        a.user_id_        AS userId,
+        a.create_time_ AS trainingDate,
+        sum(a.play_time_) AS playTime
+        FROM
+        ( SELECT
+              user_id_,
+              ifnull(play_time_, 0) AS play_time_,
+              date_format(create_time_, '%Y-%m-%d') AS create_time_
+        FROM sys_music_compare_record
+        <where>
+            <if test="param.startTime != null">
+                AND create_time_ &gt;= #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                AND create_time_ &lt;= #{param.endTime}
+            </if>
+            <if test="param.userId != null">
+                AND user_id_ = #{param.userId}
+            </if>
+            <if test="param.userIdList !=null and param.userIdList.size()>0">
+                AND user_id_ IN
+                <foreach collection="param.userIdList" item="userId" open="(" close=")" separator=",">
+                    #{userId}
+                </foreach>
+            </if>
+        </where>
+        ) AS a
+        GROUP BY a.user_id_, a.create_time_
+    </select>
+
+    <select id="queryAllUserId" resultType="java.lang.Integer">
+        SELECT
+        distinct user_id_
+        FROM
+            temp_little_artist_training_camp_user_relation
+       </select>
+
+    <select id="queryCampUser" resultType="com.ym.mec.biz.dal.vo.TempCampUserVo">
+        select
+        b.id_ as id,
+        b.username_ as username,
+        b.phone_ as phone,
+        a.state_ as state,
+        c.name_ as campName
+        from temp_little_artist_training_camp_user_relation as a
+        left join sys_user as b on a.user_id_ = b.id_
+        left join temp_little_artist_training_camp as c on a.activity_id_ = c.id_
+        <where>
+            <if test="param.state != null ">
+                AND a.state_ = #{param.state}
+            </if>
+            <if test="param.search != null ">
+                AND (
+                b.`id_` LIKE CONCAT('%', #{param.search},'%')
+                OR b.`name_` LIKE CONCAT('%', #{param.search},'%')
+                OR b.`phone_` LIKE CONCAT('%', #{param.search},'%')
+                )
+            </if>
+        </where>
+    </select>
+</mapper>

+ 28 - 0
mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampUserRelationMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="activity_id_" jdbcType="INTEGER" property="activityId"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="im_group_id_" jdbcType="INTEGER" property="imGroupId"/>
+        <result column="state_" jdbcType="VARCHAR" property="state"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , activity_id_, user_id_, im_group_id_, state_, create_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation">
+        insert into temp_little_artist_training_camp_user_relation(activity_id_, user_id_, im_group_id_, state_,
+        create_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.activityId}, #{entity.userId}, #{entity.imGroupId}, #{entity.state}, #{entity.createTime})
+        </foreach>
+    </insert>
+
+</mapper>

+ 4 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/page/WrapperUtil.java

@@ -146,6 +146,10 @@ public class WrapperUtil<T> {
                 .filter(StrPredicate);
     }
 
+    public static <S, O> boolean strParamIsNull(Map<S, O>  map, S str) {
+        return StrPredicate.test(WrapperUtil.toStr(map, str));
+    }
+
     public static List<String> toList(String key) {
         return toList(key, ",");
     }

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

@@ -0,0 +1,94 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
+import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
+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));
+    }
+
+}
+