소스 검색

Merge branch 'zx_saas_director_0927' into dev

刘俊驰 11 달 전
부모
커밋
82b6512e31
17개의 변경된 파일1142개의 추가작업 그리고 8개의 파일을 삭제
  1. 57 0
      mec-application/src/main/java/com/ym/mec/student/controller/TempDirectorTrainingCampController.java
  2. 70 0
      mec-application/src/main/java/com/ym/mec/web/controller/TempDirectorTrainingCampController.java
  3. 53 0
      mec-application/src/main/java/com/ym/mec/web/controller/TempDirectorTrainingCampDetailController.java
  4. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempDirectorTrainingCampDao.java
  5. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempDirectorTrainingCampDetailDao.java
  6. 67 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempDirectorTrainingCamp.java
  7. 106 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempDirectorTrainingCampDetail.java
  8. 223 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TempDirectorTrainingCampDetailWrapper.java
  9. 136 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TempDirectorTrainingCampWrapper.java
  10. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempDirectorTrainingCampDetailService.java
  11. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempDirectorTrainingCampService.java
  12. 27 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java
  13. 95 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempDirectorTrainingCampDetailServiceImpl.java
  14. 127 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempDirectorTrainingCampServiceImpl.java
  15. 2 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  16. 64 0
      mec-biz/src/main/resources/config/mybatis/TempDirectorTrainingCampDetailMapper.xml
  17. 39 0
      mec-biz/src/main/resources/config/mybatis/TempDirectorTrainingCampMapper.xml

+ 57 - 0
mec-application/src/main/java/com/ym/mec/student/controller/TempDirectorTrainingCampController.java

@@ -0,0 +1,57 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCampDetail;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "乐队指导训练营活动")
+@RestController
+@RequestMapping("${app-config.url.student:}/tempDirectorTrainingCamp")
+public class TempDirectorTrainingCampController extends BaseController {
+
+    @Resource
+    private TempDirectorTrainingCampService tempDirectorTrainingCampService;
+    @Resource
+    private TempDirectorTrainingCampDetailService tempDirectorTrainingCampDetailService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @ApiOperation(value="获取训练营详情")
+    @GetMapping(value = "/getDetail")
+    public HttpResponseResult<TempDirectorTrainingCamp> addCamp(Integer campId){
+        return succeed(tempDirectorTrainingCampService.getById(campId));
+    }
+
+    @ApiOperation(value="根据身份证号、手机号获取用户基本信息")
+    @PostMapping(value = "/getUserDetail")
+    public HttpResponseResult<TempDirectorTrainingCampDetail> getUserDetail(@RequestBody TempDirectorTrainingCampDetailWrapper.UserDetail userDetail){
+        if(userDetail.getTempDirectorTrainingCampId() == null || (StringUtils.isEmpty(userDetail.getCardNo()) && StringUtils.isEmpty(userDetail.getMobile()))){
+            throw new BizException("参数校验失败");
+        }
+        TempDirectorTrainingCampDetail one = tempDirectorTrainingCampDetailService.lambdaQuery()
+                .eq(TempDirectorTrainingCampDetail::getTempDirectorTrainingCampId,userDetail.getTempDirectorTrainingCampId())
+                .eq(StringUtils.isNotEmpty(userDetail.getCardNo()), TempDirectorTrainingCampDetail::getCardNo, userDetail.getCardNo())
+                .eq(StringUtils.isNotEmpty(userDetail.getMobile()), TempDirectorTrainingCampDetail::getMobile, userDetail.getMobile()).last("LIMIT 1").one();
+        return succeed(one);
+    }
+
+    @ApiOperation(value="训练营报名")
+    @PostMapping(value = "/applyCamp")
+    public HttpResponseResult<Object> applyCamp(@RequestBody TempDirectorTrainingCampDetailWrapper.ApplyCamp applyCamp){
+        tempDirectorTrainingCampDetailService.applyCamp(applyCamp);
+        return succeed();
+    }
+}
+

+ 70 - 0
mec-application/src/main/java/com/ym/mec/web/controller/TempDirectorTrainingCampController.java

@@ -0,0 +1,70 @@
+package com.ym.mec.web.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
+import com.ym.mec.biz.service.TempDirectorTrainingCampService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+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 javax.validation.Valid;
+
+@Api(tags = "乐队指导训练营活动")
+@RestController
+@RequestMapping("${app-config.url.web:}/tempDirectorTrainingCamp")
+public class TempDirectorTrainingCampController extends BaseController {
+
+    @Resource
+    private TempDirectorTrainingCampService tempDirectorTrainingCampService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation("创建训练营")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<Object> add(@Valid @RequestBody TempDirectorTrainingCampWrapper.AddCamp dto) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        dto.setUpdateBy(sysUser.getId());
+        tempDirectorTrainingCampService.add(dto);
+        return succeed();
+    }
+
+    @ApiOperation("修改训练营")
+    @PostMapping(value = "/modify")
+    public HttpResponseResult<Object> modify(@Valid @RequestBody TempDirectorTrainingCampWrapper.AddCamp dto) {
+        if (dto.getId() == null) {
+            return failed("训练营id不能为空");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        tempDirectorTrainingCampService.modify(dto);
+        return succeed();
+    }
+
+
+    @ApiOperation(value = "分页获取")
+    @PostMapping("/queryPage")
+    public HttpResponseResult<PageInfo<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp>> queryPage(@RequestBody TempDirectorTrainingCampWrapper.TempDirectorTrainingCampQueryInfo queryInfo){
+        IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> tempDirectorTrainingCampIPage = tempDirectorTrainingCampService.queryPage(QueryInfo.getPage(queryInfo), queryInfo);
+
+        return succeed(QueryInfo.pageInfo(tempDirectorTrainingCampIPage));
+    }
+}
+

+ 53 - 0
mec-application/src/main/java/com/ym/mec/web/controller/TempDirectorTrainingCampDetailController.java

@@ -0,0 +1,53 @@
+package com.ym.mec.web.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
+import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+@Api(tags = "乐队指导训练营活动")
+@RestController
+@RequestMapping("${app-config.url.web:}/tempDirectorTrainingDetailCamp")
+public class TempDirectorTrainingCampDetailController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private TempDirectorTrainingCampDetailService tempDirectorTrainingCampDetailService;
+
+
+
+
+    @ApiOperation(value = "分页获取")
+    @PostMapping("/queryPage")
+    public HttpResponseResult<PageInfo<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail>> queryPage(@RequestBody TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo){
+        if (queryInfo.getTempDirectorTrainingCampId()==null) {
+            return failed("训练营编号不能为空");
+        }
+        IPage<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> tempDirectorTrainingCampIPage = tempDirectorTrainingCampDetailService.queryPage(QueryInfo.getPage(queryInfo), queryInfo);
+
+        return succeed(QueryInfo.pageInfo(tempDirectorTrainingCampIPage));
+    }
+
+
+    @ApiOperation(value = "统计")
+    @PostMapping("/queryPageStat")
+    public HttpResponseResult<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailStat> queryPageStat(@RequestBody TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo){
+        if (queryInfo.getTempDirectorTrainingCampId()==null) {
+            return failed("训练营编号不能为空");
+        }
+        return succeed(tempDirectorTrainingCampDetailService.queryPageStat(queryInfo));
+    }
+}
+

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempDirectorTrainingCampDao.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
+import org.apache.ibatis.annotations.Param;
+
+public interface TempDirectorTrainingCampDao extends BaseMapper<TempDirectorTrainingCamp> {
+
+    IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> queryPage(@Param("page") IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> page,
+                                                                              @Param("param") TempDirectorTrainingCampWrapper.TempDirectorTrainingCampQueryInfo queryInfo);
+}
+

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempDirectorTrainingCampDetailDao.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCampDetail;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface TempDirectorTrainingCampDetailDao extends BaseMapper<TempDirectorTrainingCampDetail> {
+
+    List<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> getStat(@Param("ids") List<Integer> tempDirectorTrainingCampIds);
+
+    IPage<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> queryPage(@Param("page") IPage<Object> page,
+                                                                                          @Param("param") TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo);
+
+    TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailStat queryPageStat(@Param("param") TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo);
+}
+

+ 67 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempDirectorTrainingCamp.java

@@ -0,0 +1,67 @@
+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 lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "temp_director_training_camp-乐队指导训练营活动")
+@Data
+public class TempDirectorTrainingCamp implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @TableField("name_")
+    @ApiModelProperty(value = "活动名称")
+    private String name;
+
+    @TableField("apply_start_date_")
+    @ApiModelProperty(value = "报名开始日期")
+    private Date applyStartDate;
+
+    @TableField("apply_end_date_")
+    @ApiModelProperty(value = "报名结束日期")
+    private Date applyEndDate;
+
+    @TableField("bird_price_end_date_")
+    @ApiModelProperty(value = "早鸟价截止日期")
+    private Date birdPriceEndDate;
+
+    @TableField("bird_price_")
+    @ApiModelProperty(value = "早鸟价")
+    private BigDecimal birdPrice;
+
+    @TableField("current_price_")
+    @ApiModelProperty(value = "优惠价")
+    private BigDecimal currentPrice;
+
+    @TableField("original_price_")
+    @ApiModelProperty(value = "原价")
+    private BigDecimal originalPrice;
+
+    @TableField("status_")
+    @ApiModelProperty(value = "未开始 NOT_START,报名中 APPLY,已结束 END ,不用,直接使用时间判断")
+    private String status;
+
+    @TableField("update_by_")
+    @ApiModelProperty(value = "修改人")
+    private Integer updateBy;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}
+

+ 106 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempDirectorTrainingCampDetail.java

@@ -0,0 +1,106 @@
+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 lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@ApiModel(value = "temp_director_training_camp_detail-乐队指导训练营活动")
+@Data
+public class TempDirectorTrainingCampDetail implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "训练营编号")
+    @TableField("temp_director_training_camp_id_")
+    private Integer tempDirectorTrainingCampId;
+
+    @TableField("username_")
+    @ApiModelProperty(value = "姓名")
+    private String username;
+
+    @TableField("mobile_")
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    @TableField("card_no_")
+    @ApiModelProperty(value = "身份证号")
+    private String cardNo;
+
+    @ApiModelProperty(value = "省份")
+    @TableField("province_")
+    private String province;
+
+    @ApiModelProperty(value = "省份")
+    @TableField("province_code_")
+    private String provinceCode;
+
+    @ApiModelProperty(value = "城市")
+    @TableField("city_code_")
+    private String cityCode;
+
+    @ApiModelProperty(value = "城市")
+    @TableField("city_")
+    private String city;
+
+    @ApiModelProperty(value = "区县")
+    @TableField("region_code_")
+    private String regionCode;
+
+    @ApiModelProperty(value = "区县")
+    @TableField("region_")
+    private String region;
+
+    @TableField("payment_status_")
+    @ApiModelProperty(value = "已缴费 PAID,未缴费 NO,已退费 REFUND")
+    private String paymentStatus = "NO";
+
+    @TableField("payment_amount_")
+    @ApiModelProperty(value = "缴费金额")
+    private String paymentAmount;
+
+    @TableField("bird_flag_")
+    @ApiModelProperty(value = "是否早鸟报名")
+    private Boolean birdFlag = false;
+
+    @TableField("payment_date_")
+    @ApiModelProperty(value = "缴费时间")
+    private String paymentDate;
+
+    @TableField("job_")
+    @ApiModelProperty(value = "职业")
+    private String job;
+
+    @TableField("subject_name_")
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+
+    @TableField("study_")
+    @ApiModelProperty(value = "之前乐队指导学习基础")
+    private String study;
+
+    @TableField("study_target_")
+    @ApiModelProperty(value = "目标效果")
+    private String studyTarget;
+
+    @TableField("suggestion_")
+    @ApiModelProperty(value = "需求或建议")
+    private String suggestion;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}
+

+ 223 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TempDirectorTrainingCampDetailWrapper.java

@@ -0,0 +1,223 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "TempDirectorTrainingCampDetailWrapper对象")
+public class TempDirectorTrainingCampDetailWrapper {
+
+
+    @Data
+    @ApiModel("UserDetail")
+    public static class UserDetail {
+
+        @ApiModelProperty(value = "身份证号")
+        private String cardNo;
+
+        @ApiModelProperty(value = "手机号")
+        private String mobile;
+
+        @ApiModelProperty(value = "训练营编号")
+        private Integer tempDirectorTrainingCampId;
+    }
+    @Data
+    @ApiModel(" applyCamp-新增/修改")
+    public static class ApplyCamp {
+
+        @ApiModelProperty(value = "训练营编号")
+        @NotNull(message = "训练营编号不能为空")
+        private Integer tempDirectorTrainingCampId;
+
+        @ApiModelProperty(value = "姓名")
+        @NotNull(message = "请输入您的真实姓名")
+        @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,10}$", message = "姓名必须是2到10个中文字符")
+        private String username;
+
+        @ApiModelProperty(value = "手机号")
+        @NotNull(message = "手机号不能为空")
+        @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
+        private String mobile;
+
+        @ApiModelProperty(value = "身份证号")
+        @NotNull(message = "身份证号不能为空")
+        @Pattern(regexp = "^(\\d{15}|\\d{17}[\\dXx])$", message = "身份证号格式不正确")
+        private String cardNo;
+
+        @ApiModelProperty(value = "省份")
+        @NotNull(message = "请选择您所在的城市")
+        @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,20}$", message = "省份名称必须是2到20个中文字符")
+        private String province;
+
+        @ApiModelProperty(value = "省份")
+        private String provinceCode;
+
+        @ApiModelProperty(value = "城市")
+        private String cityCode;
+
+        @ApiModelProperty(value = "城市")
+        private String city;
+
+        @ApiModelProperty(value = "区县")
+        private String regionCode;
+
+        @ApiModelProperty(value = "区县")
+        private String region;
+
+        @ApiModelProperty(value = "职业")
+        @NotNull(message = "请选择目前从事的职业")
+        private String job;
+
+        @ApiModelProperty(value = "声部")
+        @NotNull(message = "请选择您的专业")
+        private String subjectName;
+
+        @ApiModelProperty(value = "之前乐队指导学习基础")
+        @NotNull(message = "请选择学习基础")
+        private String study;
+
+        @ApiModelProperty(value = "目标效果")
+        @NotNull(message = "请填写目标效果")
+        private String studyTarget;
+
+        @ApiModelProperty(value = "需求或建议")
+        @NotNull(message = "请填写需求或建议")
+        private String suggestion;
+
+        @ApiModelProperty(value = "验证码")
+        private String authCode;
+    }
+
+    @Data
+    public static class TempDirectorTrainingCampDetailQuery implements QueryInfo {
+        /**
+         * 默认当前页码
+         */
+        private Integer page = 1;
+        /**
+         * 默认页码大小
+         */
+        private Integer rows = 20;
+
+        @ApiModelProperty(value = "用户姓名/手机号")
+        private String search;
+
+        @ApiModelProperty(value = "训练营编号")
+        private Integer tempDirectorTrainingCampId;
+
+        @ApiModelProperty(value = "省份")
+        private String provinceCode;
+
+        @ApiModelProperty(value = "城市")
+        private String cityCode;
+
+
+        @ApiModelProperty(value = "区县")
+        private String regionCode;
+
+
+        @ApiModelProperty(value = "已缴费 PAID,未缴费 NO,已退费 REFUND")
+        private String paymentStatus;
+    }
+
+    @Data
+    public static class TempDirectorTrainingCampDetail {
+
+
+        @ApiModelProperty(value = "主键")
+        private Integer id;
+
+        @ApiModelProperty(value = "训练营编号")
+        private Integer tempDirectorTrainingCampId;
+
+        @ApiModelProperty(value = "姓名")
+        private String username;
+
+        @ApiModelProperty(value = "手机号")
+        private String mobile;
+
+        @ApiModelProperty(value = "身份证号")
+        private String cardNo;
+
+        @ApiModelProperty(value = "省份")
+        private String province;
+
+        @ApiModelProperty(value = "省份")
+        private String provinceCode;
+
+        @ApiModelProperty(value = "城市")
+        private String cityCode;
+
+        @ApiModelProperty(value = "城市")
+        private String city;
+
+        @ApiModelProperty(value = "区县")
+        private String regionCode;
+
+        @ApiModelProperty(value = "区县")
+        private String region;
+
+        @ApiModelProperty(value = "已缴费 PAID,未缴费 NO,已退费 REFUND")
+        private String paymentStatus = "NO";
+
+        @ApiModelProperty(value = "缴费金额")
+        private String paymentAmount;
+
+        @ApiModelProperty(value = "是否早鸟报名")
+        private Boolean birdFlag = false;
+
+        @ApiModelProperty(value = "缴费时间")
+        private String paymentDate;
+
+        @ApiModelProperty(value = "职业")
+        private String job;
+
+        @ApiModelProperty(value = "声部")
+        private String subjectName;
+
+        @ApiModelProperty(value = "之前乐队指导学习基础")
+        private String study;
+
+        @ApiModelProperty(value = "目标效果")
+        private String studyTarget;
+
+        @ApiModelProperty(value = "需求或建议")
+        private String suggestion;
+
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+
+        @ApiModelProperty(value = "修改时间")
+        private Date updateTime;
+    }
+
+
+    @Data
+    public static class TempDirectorTrainingCampDetailStat {
+
+
+
+        @ApiModelProperty("报名人数")
+        private Integer applyCount;
+
+        @ApiModelProperty("缴费人数")
+        private Integer payCount;
+
+        @ApiModelProperty("早鸟人数")
+        private Integer birdCount;
+
+
+        @ApiModelProperty("收款金额")
+        private BigDecimal payAmount;
+
+    }
+}

+ 136 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TempDirectorTrainingCampWrapper.java

@@ -0,0 +1,136 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "TempDirectorTrainingCampWrapper对象")
+public class TempDirectorTrainingCampWrapper {
+
+
+    @Data
+    @ApiModel(" AddCamp-新增/修改")
+    public static class AddCamp {
+
+        @ApiModelProperty(value = "主键")
+        private Integer id;
+
+        @ApiModelProperty(value = "特训营名称")
+        @NotNull(message = "特训营名称不能为空")
+        private String name;
+
+        @ApiModelProperty(value = "报名开始时间")
+        @NotNull(message = "报名开始时间不能为空")
+        private Date applyStartDate;
+
+        @ApiModelProperty(value = "报名截止时间")
+        @NotNull(message = "报名截止时间不能为空")
+        private Date applyEndDate;
+
+        @ApiModelProperty(value = "是否配置早鸟价")
+        @NotNull(message = "是否配置早鸟价不能为空")
+        private Boolean hasBirdPrice;
+
+        @ApiModelProperty(value = "早鸟价截止日期")
+        private Date birdPriceEndDate;
+
+        @ApiModelProperty(value = "早鸟价")
+        private BigDecimal birdPrice;
+
+        @ApiModelProperty(value = "优惠价")
+        @NotNull(message = "优惠价不能为空")
+        private BigDecimal currentPrice;
+
+        @ApiModelProperty(value = "原价")
+        @NotNull(message = "原价不能为空")
+        private BigDecimal originalPrice;
+
+        @ApiModelProperty(value = "修改人")
+        private Integer updateBy;
+    }
+
+
+    @Data
+    public static class TempDirectorTrainingCampQueryInfo implements QueryInfo {
+
+
+        /**
+         * 默认当前页码
+         */
+        private Integer page = 1;
+        /**
+         * 默认页码大小
+         */
+        private Integer rows = 20;
+
+        @ApiModelProperty(value = "特训营名称")
+        private String search;
+
+
+        @ApiModelProperty(value = "未开始 NOT_START,报名中 APPLY,已结束 END ")
+        private String status;
+
+    }
+
+    @Data
+    public static class TempDirectorTrainingCamp{
+
+        @ApiModelProperty(value = "主键")
+        private Integer id;
+
+        @ApiModelProperty(value = "活动名称")
+        private String name;
+
+        @ApiModelProperty(value = "报名开始日期")
+        private Date applyStartDate;
+
+        @ApiModelProperty(value = "报名结束日期")
+        private Date applyEndDate;
+
+
+        @ApiModelProperty(value = "是否配置早鸟价")
+        private Boolean hasBirdPrice;
+
+        @ApiModelProperty(value = "早鸟价截止日期")
+        private Date birdPriceEndDate;
+
+        @ApiModelProperty(value = "早鸟价")
+        private BigDecimal birdPrice;
+
+        @ApiModelProperty(value = "优惠价")
+        private BigDecimal currentPrice;
+
+        @ApiModelProperty(value = "原价")
+        private BigDecimal originalPrice;
+
+        @ApiModelProperty(value = "未开始 NOT_START,报名中 APPLY,已结束 END ")
+        private String status;
+
+        @ApiModelProperty("报名人数")
+        private Integer applyCount;
+
+        @ApiModelProperty("缴费人数")
+        private Integer payCount;
+
+        @ApiModelProperty("收款金额")
+        private BigDecimal payAmount;
+
+        @ApiModelProperty(value = "修改人")
+        private Integer updateBy;
+
+        @ApiModelProperty(value = "修改人名称")
+        private String updateByName;
+
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+
+        @ApiModelProperty(value = "修改时间")
+        private Date updateTime;
+
+    }
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempDirectorTrainingCampDetailService.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDetailDao;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCampDetail;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
+
+public interface TempDirectorTrainingCampDetailService extends IService<TempDirectorTrainingCampDetail> {
+
+    TempDirectorTrainingCampDetailDao getDao();
+
+    void applyCamp(TempDirectorTrainingCampDetailWrapper.ApplyCamp applyCamp);
+
+    IPage<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> queryPage(IPage<Object> page, TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo);
+
+    TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailStat queryPageStat(TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo);
+}
+
+

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempDirectorTrainingCampService.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDao;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
+
+public interface TempDirectorTrainingCampService extends IService<TempDirectorTrainingCamp> {
+
+    TempDirectorTrainingCampDao getDao();
+
+    void add(TempDirectorTrainingCampWrapper.AddCamp dto);
+
+    void modify(TempDirectorTrainingCampWrapper.AddCamp dto);
+
+    IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> queryPage(IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> page, TempDirectorTrainingCampWrapper.TempDirectorTrainingCampQueryInfo queryInfo);
+}
+
+

+ 27 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java

@@ -11,9 +11,11 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImGroupNoticeDao;
 import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.dal.wrapper.ImGroupNoticeWrapper;
 import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -26,10 +28,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -41,6 +40,8 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 	private ImPluginContext imPluginContext;
 	@Resource
 	private SysUserService sysUserService;
+	@Resource
+	private SysConfigService sysConfigService;
 
 	@Override
 	public BaseDAO<Long, ImGroupNotice> getDAO() {
@@ -59,6 +60,14 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = imGroupNoticeDao.queryForPage(params);
+			// 查询用户默认头象
+			String defaultAvatar = Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR))
+					.map(SysConfig::getParanValue).orElse("");
+			for (ImGroupNoticeDto imGroupNoticeDto : dataList) {
+				if(StringUtils.isEmpty(imGroupNoticeDto.getAvatar())){
+					imGroupNoticeDto.setAvatar(defaultAvatar);
+				}
+			}
 		}
 		if (count == 0) {
 			dataList = new ArrayList<ImGroupNoticeDto>();
@@ -71,8 +80,14 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 	public ImGroupNoticeDto queryLatestNotice(String imGroupId) {
 		ImGroupNoticeDto imGroupNoticeDto = imGroupNoticeDao.queryLatestNotice(imGroupId);
 		SysUser sysUser = sysUserService.queryUserById(imGroupNoticeDto.getOperatorId().intValue());
-		imGroupNoticeDto.setUsername(sysUser.getUsername());
+		imGroupNoticeDto.setUsername(StringUtils.isEmpty(sysUser.getRealName())?sysUser.getUsername():sysUser.getRealName());
 		imGroupNoticeDto.setAvatar(sysUser.getAvatar());
+		if(StringUtils.isEmpty(imGroupNoticeDto.getAvatar())){
+			// 查询用户默认头象
+			String defaultAvatar = Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR))
+					.map(SysConfig::getParanValue).orElse("");
+			imGroupNoticeDto.setAvatar(defaultAvatar);
+		}
 		return imGroupNoticeDto;
 	}
 
@@ -144,8 +159,14 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 		}
 		ImGroupNoticeDto noticeDto = JSON.parseObject(JSON.toJSONString(notice), ImGroupNoticeDto.class);
 		SysUser sysUser = sysUserService.queryUserById(noticeDto.getOperatorId().intValue());
-		noticeDto.setUsername(sysUser.getRealName());
+		noticeDto.setUsername(StringUtils.isEmpty(sysUser.getRealName())?sysUser.getUsername():sysUser.getRealName());
 		noticeDto.setAvatar(sysUser.getAvatar());
+		if(StringUtils.isEmpty(noticeDto.getAvatar())){
+			// 查询用户默认头象
+			String defaultAvatar = Optional.ofNullable(sysConfigService.findByParamName(SysConfigService.USER_DEFAULT_AVATAR))
+					.map(SysConfig::getParanValue).orElse("");
+			noticeDto.setAvatar(defaultAvatar);
+		}
 		return noticeDto;
 	}
 

+ 95 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempDirectorTrainingCampDetailServiceImpl.java

@@ -0,0 +1,95 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDetailDao;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCampDetail;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
+import com.ym.mec.biz.service.SmsCodeService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampService;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Objects;
+
+@Service("tempDirectorTrainingCampDetailService")
+public class TempDirectorTrainingCampDetailServiceImpl extends ServiceImpl<TempDirectorTrainingCampDetailDao, TempDirectorTrainingCampDetail> implements TempDirectorTrainingCampDetailService {
+
+    private final static Logger log = LoggerFactory.getLogger(TempDirectorTrainingCampDetailServiceImpl.class);
+
+    @Resource
+    private SmsCodeService smsCodeService;
+    @Resource
+    private TempDirectorTrainingCampService tempDirectorTrainingCampService;
+
+    @Override
+    public TempDirectorTrainingCampDetailDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void applyCamp(TempDirectorTrainingCampDetailWrapper.ApplyCamp applyCamp) {
+        Date now = new Date();
+        TempDirectorTrainingCamp trainingCamp = tempDirectorTrainingCampService.getById(applyCamp.getTempDirectorTrainingCampId());
+        if(Objects.isNull(trainingCamp)){
+            throw new BizException("训练营信息不存在");
+        }
+        //校验训练营时间
+        if(now.after(trainingCamp.getApplyEndDate())){
+            throw new BizException("报名已截止");
+        }
+        if(now.before(trainingCamp.getApplyStartDate())){
+            String dateToString = DateUtil.dateToString(trainingCamp.getApplyStartDate(), DateUtil.DATE_FORMAT_MIN);
+            throw new BizException(dateToString + "开启报名,感谢您的关注");
+        }
+
+        if(!smsCodeService.verifyValidCode(applyCamp.getMobile(), applyCamp.getAuthCode())){
+            throw new BizException("验证码校验失败");
+        }
+        //根据身份证号获取信息
+        TempDirectorTrainingCampDetail byCardNo = this.lambdaQuery().eq(TempDirectorTrainingCampDetail::getCardNo, applyCamp.getCardNo())
+                .eq(TempDirectorTrainingCampDetail::getTempDirectorTrainingCampId, applyCamp.getTempDirectorTrainingCampId())
+                .last("LIMIT 1").one();
+        if(Objects.nonNull(byCardNo) && !StringUtils.equals(byCardNo.getMobile(),applyCamp.getMobile())){
+            throw new BizException("该身份证已报名");
+        }
+        //根据手机号获取信息
+        TempDirectorTrainingCampDetail byMobile = this.lambdaQuery().eq(TempDirectorTrainingCampDetail::getMobile, applyCamp.getMobile())
+                .eq(TempDirectorTrainingCampDetail::getTempDirectorTrainingCampId, applyCamp.getTempDirectorTrainingCampId())
+                .last("LIMIT 1").one();
+        if(Objects.nonNull(byMobile) && !StringUtils.equals(byMobile.getCardNo(),applyCamp.getCardNo())){
+            throw new BizException("该手机号已报名");
+        }
+        TempDirectorTrainingCampDetail entity = JSONObject.parseObject(JSONObject.toJSONString(applyCamp),TempDirectorTrainingCampDetail.class);
+        if(Objects.nonNull(byCardNo)){
+            entity.setId(byCardNo.getId());
+        }else if (Objects.nonNull(byMobile)){
+            entity.setId(byMobile.getId());
+        }
+        this.saveOrUpdate(entity);
+    }
+
+    @Override
+    public IPage<TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetail> queryPage(IPage<Object> page, TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo) {
+        return baseMapper.queryPage(page,queryInfo);
+    }
+
+    @Override
+    public TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailStat queryPageStat(TempDirectorTrainingCampDetailWrapper.TempDirectorTrainingCampDetailQuery queryInfo) {
+        return baseMapper.queryPageStat(queryInfo);
+    }
+
+
+}
+

+ 127 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempDirectorTrainingCampServiceImpl.java

@@ -0,0 +1,127 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDao;
+import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDetailDao;
+import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
+import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
+import com.ym.mec.biz.service.EmployeeService;
+import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
+import com.ym.mec.biz.service.TempDirectorTrainingCampService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service("tempDirectorTrainingCampService")
+public class TempDirectorTrainingCampServiceImpl extends ServiceImpl<TempDirectorTrainingCampDao, TempDirectorTrainingCamp> implements TempDirectorTrainingCampService {
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private TempDirectorTrainingCampDetailDao tempDirectorTrainingCampDetailDao;
+
+    private final static Logger log = LoggerFactory.getLogger(TempDirectorTrainingCampServiceImpl.class);
+
+    @Override
+    public TempDirectorTrainingCampDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(TempDirectorTrainingCampWrapper.AddCamp dto) {
+        log.info("新增训练营:{}", dto);
+        if (!dto.getHasBirdPrice()) {
+            dto.setBirdPrice(null);
+            dto.setBirdPriceEndDate(null);
+        }
+        TempDirectorTrainingCamp tempDirectorTrainingCamp = JSON.parseObject(JSON.toJSONString(dto), TempDirectorTrainingCamp.class);
+
+        this.save(tempDirectorTrainingCamp);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void modify(TempDirectorTrainingCampWrapper.AddCamp dto) {
+        log.info("修改训练营:{}", dto);
+        TempDirectorTrainingCamp tempDirectorTrainingCamp = JSON.parseObject(JSON.toJSONString(dto), TempDirectorTrainingCamp.class);
+
+        this.updateById(tempDirectorTrainingCamp);
+
+        lambdaUpdate()
+            .set(TempDirectorTrainingCamp::getBirdPrice, dto.getHasBirdPrice()?dto.getBirdPrice():null)
+            .set(TempDirectorTrainingCamp::getBirdPriceEndDate, dto.getHasBirdPrice()?dto.getBirdPriceEndDate():null)
+            .eq(TempDirectorTrainingCamp::getId, dto.getId())
+            .update();
+    }
+
+    @Override
+    public IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> queryPage(IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> page, TempDirectorTrainingCampWrapper.TempDirectorTrainingCampQueryInfo queryInfo) {
+        IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> tempDirectorTrainingCampIPage = baseMapper.queryPage(page, queryInfo);
+        List<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> records = tempDirectorTrainingCampIPage.getRecords();
+        if (CollectionUtils.isEmpty(records) ) {
+            return tempDirectorTrainingCampIPage;
+        }
+
+        // id 集合
+        List<Integer> ids = records.stream().map(o->o.getId()).collect(Collectors.toList());;
+
+        // 是否设置早鸟价
+
+        // 状态
+
+        // 更新人
+        List<Integer> updateIds = records.stream().map(o -> o.getUpdateBy()).filter(o -> o != null).distinct().collect(Collectors.toList());
+        Map<Long, SysUser> userMap = sysUserService.getMapByIds(updateIds);
+        records.forEach(o -> {
+            if (o.getUpdateBy() != null) {
+                SysUser sysUser = userMap.get(o.getUpdateBy().longValue());
+                if (sysUser != null) {
+                    o.setUpdateByName(sysUser.getRealName());
+                }
+            }
+            if (o.getBirdPrice() !=null && o.getBirdPriceEndDate() != null) {
+                o.setHasBirdPrice(true);
+            }
+            Date date = new Date();
+            if (o.getApplyStartDate().after(date)) {
+                o.setStatus("NOT_START");
+            } else if (o.getApplyEndDate().before(date)) {
+                o.setStatus("END");
+            } else {
+                o.setStatus("APPLY");
+            }
+        });
+
+        // 报名人数,缴费人数 搜款金额
+        List<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> stat = tempDirectorTrainingCampDetailDao.getStat(ids);
+        Map<Integer, TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> statMap = stat.stream().collect(Collectors.toMap(TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp::getId, o -> o));
+
+        records.forEach(o -> {
+            TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp tempDirectorTrainingCamp = statMap.get(o.getId());
+            if (tempDirectorTrainingCamp != null) {
+                o.setApplyCount(tempDirectorTrainingCamp.getApplyCount());
+                o.setPayCount(tempDirectorTrainingCamp.getPayCount());
+                o.setPayAmount(tempDirectorTrainingCamp.getPayAmount().setScale(2, RoundingMode.HALF_UP));
+            }
+        });
+        return tempDirectorTrainingCampIPage;
+    }
+
+
+}
+

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1643,7 +1643,7 @@
             </if>
         </if>
         <include refid="teacherClassCourseScheduleQueryCondition"/>
-        ORDER BY cs.start_class_time_
+        ORDER BY cs.class_date_,cs.start_class_time_
         <include refid="global.limit"/>
     </select>
 
@@ -1730,7 +1730,7 @@
             AND cs.class_date_ &lt;= #{endClassDate}
         </if>
         GROUP BY sa.course_schedule_id_
-        ORDER BY cs.id_
+        ORDER BY cs.class_date_,cs.start_class_time_
         <include refid="global.limit"/>
     </select>
 

+ 64 - 0
mec-biz/src/main/resources/config/mybatis/TempDirectorTrainingCampDetailMapper.xml

@@ -0,0 +1,64 @@
+<?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.TempDirectorTrainingCampDetailDao">
+
+    <select id="getStat"
+            resultType="com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper$TempDirectorTrainingCamp">
+
+        select
+        t.temp_director_training_camp_id_ as id,
+        count(t.id_) as applyCount,
+        sum(if(t.payment_status_ = 'PAID',1,0)) as payCount,
+        sum(if(t.payment_status_ = 'PAID',t.payment_amount_,0)) as payCount
+        from temp_director_training_camp_detail t
+        where t.temp_director_training_camp_id_ in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        group by t.temp_director_training_camp_id_
+    </select>
+
+    <sql id="SelectSql">
+        <if test="param.tempDirectorTrainingCampId != null">
+            and t.temp_director_training_camp_id_ = #{param.tempDirectorTrainingCampId}
+        </if>
+        <if test="param.search != null and param.search != ''">
+                and (t.username_ like concat('%', #{param.search}, '%') or t.mobile_ like concat('%', #{param.search}, '%'))
+            </if>
+            <if test="param.provinceCode != null and param.provinceCode != ''">
+                and t.province_code_ = #{param.provinceCode}
+            </if>
+            <if test="param.cityCode != null and param.cityCode != ''">
+                and t.city_code_ = #{param.cityCode}
+            </if>
+            <if test="param.regionCode != null and param.regionCode != ''">
+                and t.region_code_ = #{param.regionCode}
+            </if>
+            <if test="param.paymentStatus != null and param.paymentStatus != ''">
+                and t.payment_status_ = #{param.paymentStatus}
+            </if>
+    </sql>
+    <select id="queryPage"
+            resultType="com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper$TempDirectorTrainingCampDetail">
+
+        select *
+        from temp_director_training_camp_detail t
+        <where>
+            <include refid="SelectSql"/>
+        </where>
+        order by t.id_ desc
+    </select>
+
+    <select id="queryPageStat"
+            resultType="com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper$TempDirectorTrainingCampDetailStat">
+        select
+        count(t.id_) as applyCount,
+        sum(if(t.payment_status_ = 'PAID',1,0)) as payCount,
+        sum(if(t.bird_flag_ =1 and t.payment_status_ = 'PAID',1,0)) as birdCount,
+        sum(if(t.payment_status_ = 'PAID',t.payment_amount_,0)) as payAmount
+        from temp_director_training_camp_detail t
+        <where>
+            <include refid="SelectSql"/>
+        </where>
+    </select>
+</mapper>

+ 39 - 0
mec-biz/src/main/resources/config/mybatis/TempDirectorTrainingCampMapper.xml

@@ -0,0 +1,39 @@
+<?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.TempDirectorTrainingCampDao">
+
+    <select id="queryPage"
+            resultType="com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper$TempDirectorTrainingCamp">
+        select id_,
+               name_,
+               apply_start_date_,
+               apply_end_date_,
+               bird_price_end_date_,
+               bird_price_,
+               current_price_,
+               original_price_,
+               update_by_,
+               create_time_,
+               update_time_
+        from temp_director_training_camp t
+        <where>
+            <if test="param.search != null and param.search != ''">
+                and (t.name_ like concat('%', #{param.search}, '%') )
+            </if>
+            <if test="param.status != null and param.status != ''">
+                <choose>
+                    <when test="param.status == 'NOT_START'">
+                        and now() &lt; t.apply_start_date_
+                    </when>
+                    <when test="param.status == 'APPLY'">
+                        and now() &gt;= t.apply_start_date_ and now() &lt;= t.apply_end_date_
+                    </when>
+                    <when test="param.status == 'END'">
+                        and now() &gt; t.apply_end_date_
+                    </when>
+                </choose>
+            </if>
+        </where>
+        order by t.id_ desc
+    </select>
+</mapper>