Browse Source

乐队指导训练营

zouxuan 6 months ago
parent
commit
7571db5bd4

+ 15 - 12
mec-application/src/main/java/com/ym/mec/student/controller/TempDirectorTrainingCampController.java

@@ -2,7 +2,7 @@ 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.entity.TempLittleArtistTrainingCamp;
+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;
@@ -12,9 +12,7 @@ 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.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
@@ -37,18 +35,23 @@ public class TempDirectorTrainingCampController extends BaseController {
     }
 
     @ApiOperation(value="根据身份证号、手机号获取用户基本信息")
-    @GetMapping(value = "/getUserDetail")
-    public HttpResponseResult<TempDirectorTrainingCampDetail> addCamp(String cardNo,String mobile){
-        if(StringUtils.isEmpty(cardNo) || StringUtils.isEmpty(mobile)){
+    @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(StringUtils.isNotEmpty(cardNo), TempDirectorTrainingCampDetail::getCardNo, cardNo)
-                .eq(StringUtils.isNotEmpty(mobile), TempDirectorTrainingCampDetail::getMobile, mobile).last("LIMIT 1").one();
-
-        return succeed(tempDirectorTrainingCampService.getById(campId));
+                .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();
+    }
 }
 

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

@@ -21,7 +21,7 @@ public class TempDirectorTrainingCampDetail implements Serializable {
 
     @ApiModelProperty(value = "训练营编号")
     @TableField("temp_director_training_camp_id_")
-    private Integer tempDirectorTrainingCampDetailId;
+    private Integer tempDirectorTrainingCampId;
 
     @TableField("username_")
     @ApiModelProperty(value = "姓名")
@@ -61,12 +61,16 @@ public class TempDirectorTrainingCampDetail implements Serializable {
 
     @TableField("payment_status_")
     @ApiModelProperty(value = "已缴费 PAID,未缴费 NO,已退费 REFUND")
-    private String paymentStatus;
+    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;
@@ -91,10 +95,6 @@ public class TempDirectorTrainingCampDetail implements Serializable {
     @ApiModelProperty(value = "需求或建议")
     private String suggestion;
 
-    @TableField("update_by_")
-    @ApiModelProperty(value = "修改人")
-    private Integer updateBy;
-
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
     private Date createTime;

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

@@ -1,9 +1,94 @@
 package com.ym.mec.biz.dal.wrapper;
 
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
 
 @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;
+    }
+
 }

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

@@ -3,11 +3,13 @@ package com.ym.mec.biz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 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);
 }
 
 

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

@@ -1,23 +1,83 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 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);
+    }
 
 
 }