소스 검색

老师入驻审核
老师修改昵称

liweifan 2 년 전
부모
커밋
358a01c467
13개의 변경된 파일138개의 추가작업 그리고 17개의 파일을 삭제
  1. 6 10
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java
  2. 1 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  3. 4 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherStyleVideoController.java
  4. 15 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java
  5. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherStyleVideoSearch.java
  6. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherAuthEntryRecord.java
  7. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java
  8. 41 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  9. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  10. 2 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  11. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml
  12. 11 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java
  13. 14 0
      toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

+ 6 - 10
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -16,6 +16,7 @@ import java.util.List;
 import javax.validation.Valid;
 
 import org.apache.commons.lang3.StringUtils;
+import org.joda.time.LocalDate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
@@ -585,20 +586,15 @@ public class UserController extends BaseController {
 
     private void checkLastUsernameTime(SysUser user, String username) {
         if (StringUtils.isNotEmpty(username)) {
-            String configValue = sysConfigService.findConfigValue(SysConfigConstant.LAST_USERNAME_DAYS);
+            String configValue = sysConfigService.findConfigValue(SysConfigConstant.LAST_USERNAME_MONTH);
 
             if (null != user.getLastUsernameTime()
                     && StringUtils.isNotEmpty(configValue)) {
-                Long lastUsernameDays = Long.parseLong(configValue);
+                Long lastUsernameMonth = Long.parseLong(configValue);
+                Long monthDiff = DateUtil.getMonthDiff(new Date(), user.getLastUsernameTime());
 
-                Long diff = Duration.between(
-                        user.getLastUsernameTime().toInstant()
-                                .atZone(ZoneId.systemDefault())
-                                .toLocalDateTime()
-                        , LocalDateTime.now()).toDays();
-
-                if (diff <= lastUsernameDays && lastUsernameDays > 0) {
-                    throw new BizException("每" + lastUsernameDays + "天才能修改一次昵称,上次修改昵称为" + diff + "天前");
+                if (monthDiff < lastUsernameMonth && lastUsernameMonth > 0) {
+                    throw new BizException("每隔" + lastUsernameMonth + "个月可修改一次");
                 }
             }
         }

+ 1 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -244,7 +244,7 @@ public interface SysConfigConstant {
     /**
      * 修改用户名间隔天数
      */
-    String LAST_USERNAME_DAYS = "last_username_days";
+    String LAST_USERNAME_MONTH = "last_username_month";
 
     /** 老师分享曲目二维码跳转链接 */
     String TEACHER_MUSIC_SHEET_SHARE_PROFIT_URL = "teacher_music_sheet_share_profit_url";

+ 4 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherStyleVideoController.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.mybatis.support.PageUtil;
 
 import com.yonge.toolset.base.page.PageInfo;
@@ -45,6 +46,9 @@ public class TeacherStyleVideoController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacherStyleVideoSearch")
     public HttpResponseResult<PageInfo<TeacherStyleVideoVo>> page(@RequestBody TeacherStyleVideoSearch query) {
+        //后端审核只查询非入驻审核视频
+        query.setEntryFlag(YesOrNoEnum.NO);
+
         IPage<TeacherStyleVideoVo> pages = teacherStyleVideoService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }

+ 15 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherApplyDetailReq.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.req;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.GenderEnum;
 import io.swagger.annotations.ApiModel;
@@ -56,6 +57,10 @@ public class TeacherApplyDetailReq implements Serializable {
     @ApiModelProperty("教师资格证 ")
     private String teacherCertificate;
 
+    @ApiModelProperty("老师风采视频json 格式:[{'videoUrl':'视频地址','cover':'视频地址'},{'videoUrl':'视频地址','cover':'视频地址'}] ,将单引号替换为双引号")
+    @NotBlank(message = "至少要有一个老师风采视频")
+    private String styleVideoJson;
+
     public Long getUserId() {
         return userId;
     }
@@ -73,7 +78,8 @@ public class TeacherApplyDetailReq implements Serializable {
             this.gender = GenderEnum.valueOf(Integer.parseInt(gender.toString()));
         }
     }
-/*
+
+    /*
     public void setGender(Object gender) {
         if(gender instanceof GenderEnum ){
             this.gender = (GenderEnum) gender;
@@ -82,7 +88,6 @@ public class TeacherApplyDetailReq implements Serializable {
         }
     }*/
 
-
     public Date getBirthdate() {
         return birthdate;
     }
@@ -162,4 +167,12 @@ public class TeacherApplyDetailReq implements Serializable {
     public void setIdCardNo(String idCardNo) {
         this.idCardNo = idCardNo;
     }
+
+    public String getStyleVideoJson() {
+        return styleVideoJson;
+    }
+
+    public void setStyleVideoJson(String styleVideoJson) {
+        this.styleVideoJson = styleVideoJson;
+    }
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherStyleVideoSearch.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -31,6 +32,8 @@ public class TeacherStyleVideoSearch extends QueryInfo{
     private Date endTime;
     @ApiModelProperty(value = "审核状态  UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
     private AuthStatusEnum authStatus;
+    @ApiModelProperty(value = "入驻视频 0 否 1是 ",hidden = true)
+    private YesOrNoEnum entryFlag;
 
     public String getSearch() {
         return search;
@@ -71,4 +74,12 @@ public class TeacherStyleVideoSearch extends QueryInfo{
     public void setAuthStatus(AuthStatusEnum authStatus) {
         this.authStatus = authStatus;
     }
+
+    public YesOrNoEnum getEntryFlag() {
+        return entryFlag;
+    }
+
+    public void setEntryFlag(YesOrNoEnum entryFlag) {
+        this.entryFlag = entryFlag;
+    }
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherAuthEntryRecord.java

@@ -78,6 +78,12 @@ public class TeacherAuthEntryRecord implements Serializable {
 	@TableField(value = "teacher_certificate_")
     private String teacherCertificate;
 
+    @ApiModelProperty("老师风采视频json 格式:[{'videoUrl':'视频地址','cover':'视频地址'},{'videoUrl':'视频地址','cover':'视频地址'}] ,将单引号替换为双引号")
+    @TableField(value = "style_video_json_")
+    private String styleVideoJson;
+    /**
+     * 达人认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过
+     */
     @ApiModelProperty("达人认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
 	@TableField(value = "teacher_auth_status_")
     private AuthStatusEnum teacherAuthStatus;
@@ -176,6 +182,14 @@ public class TeacherAuthEntryRecord implements Serializable {
         this.teacherCertificate = teacherCertificate;
     }
 
+    public String getStyleVideoJson() {
+        return styleVideoJson;
+    }
+
+    public void setStyleVideoJson(String styleVideoJson) {
+        this.styleVideoJson = styleVideoJson;
+    }
+
     public AuthStatusEnum getTeacherAuthStatus() {
         return teacherAuthStatus;
     }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherStyleVideo.java

@@ -50,6 +50,9 @@ public class TeacherStyleVideo implements Serializable {
     @ApiModelProperty("审核理由 ")
     @TableField(value = "reason_")
     private String reason;
+    @ApiModelProperty("入驻审核视频 0 否 1 是 ")
+    @TableField(value = "entry_flag_")
+    private YesOrNoEnum entryFlag;
     @TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
@@ -142,6 +145,14 @@ public class TeacherStyleVideo implements Serializable {
         this.reason = reason;
     }
 
+    public YesOrNoEnum getEntryFlag() {
+        return entryFlag;
+    }
+
+    public void setEntryFlag(YesOrNoEnum entryFlag) {
+        this.entryFlag = entryFlag;
+    }
+
     public Date getCreateTime() {
         return createTime;
     }

+ 41 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -9,10 +11,13 @@ import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
 import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
+import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -31,9 +36,8 @@ import com.yonge.cooleshow.biz.dal.dao.TeacherAuthEntryRecordDao;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import javax.annotation.Resource;
+import java.util.*;
 
 @Service
 public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEntryRecordDao, TeacherAuthEntryRecord> implements TeacherAuthEntryRecordService {
@@ -44,6 +48,9 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
     private SysMessageService sysMessageService;
 
     @Autowired
+    private TeacherStyleVideoService teacherStyleVideoService;
+
+    @Resource
     private TeacherDao teacherDao;
 
     @Override
@@ -87,6 +94,10 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
                 teacher.setGradCertificate(StringUtil.isEmpty(teacher.getGradCertificate()) ? build.getGradCertificate() : teacher.getGradCertificate());
                 teacher.setDegreeCertificate(StringUtil.isEmpty(teacher.getDegreeCertificate()) ? build.getDegreeCertificate() : teacher.getDegreeCertificate());
                 teacher.setTeacherCertificate(StringUtil.isEmpty(teacher.getTeacherCertificate()) ? build.getTeacherCertificate() : teacher.getTeacherCertificate());
+
+                //老师风采视频
+                String styleVideoJson = build.getStyleVideoJson();
+                saveStyleVideo(styleVideoJson, build.getUserId(), sysUser.getId());
             }
             teacher.setEntryFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
             teacher.setEntryAuthDate(new Date());
@@ -103,6 +114,33 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         return HttpResponseResult.succeed(true);
     }
 
+    /**
+     * 保存老师风采视频
+     *
+     * @param styleVideoJson
+     * @param userId
+     * @param verifyUserId
+     */
+    private void saveStyleVideo(String styleVideoJson, Long userId, Long verifyUserId) {
+        if (!StringUtil.isEmpty(styleVideoJson)) {
+            JSONArray jsonArray = JSONObject.parseArray(styleVideoJson);
+            List<TeacherStyleVideo> batchVideoList = new ArrayList<>();
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                TeacherStyleVideo video = new TeacherStyleVideo();
+                video.setUserId(userId);
+                video.setCover(jsonObject.getString("cover"));
+                video.setVideoUrl(jsonObject.getString("videoUrl"));
+                video.setAuthStatus(AuthStatusEnum.PASS);
+                video.setVerifyUserId(verifyUserId);
+                video.setEntryFlag(YesOrNoEnum.YES);
+                batchVideoList.add(video);
+            }
+            teacherStyleVideoService.batchAddStyleVideo(batchVideoList);
+        }
+    }
+
     // 发送审核通知
     private void authSend(Long userId, String phone, Boolean isPass, String reason) {
         Map<Long, String> receivers = new HashMap<>();

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -417,6 +417,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         return HttpResponseResult.succeed(detail(teacherDto.getUserId()));
     }
 
+
+
+
     @Override
     public HttpResponseResult<Boolean> addHomeBrowse(Long userId) {
         Integer num = baseMapper.addHomeBrowse(userId);

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml

@@ -11,6 +11,7 @@
         <result column="grad_certificate_" property="gradCertificate"/>
         <result column="degree_certificate_" property="degreeCertificate"/>
         <result column="teacher_certificate_" property="teacherCertificate"/>
+        <result column="style_video_json_" property="styleVideoJson"/>
         <result column="teacher_auth_status_" property="teacherAuthStatus"/>
         <result column="verify_user_id_" property="verifyUserId"/>
         <result column="reason_" property="reason"/>
@@ -29,6 +30,7 @@
         , t.grad_certificate_ as "gradCertificate"
         , t.degree_certificate_ as "degreeCertificate"
         , t.teacher_certificate_ as "teacherCertificate"
+        , t.style_video_json_ as "styleVideoJson"
         , t.teacher_auth_status_ as "teacherAuthStatus"
         , t.verify_user_id_ as "verifyUserId"
         , t.reason_ as "reason"

+ 5 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml

@@ -12,6 +12,7 @@
 		<result column="auth_status_" property="authStatus" />
 		<result column="verify_user_id_" property="verifyUserId" />
 		<result column="reason_" property="reason" />
+		<result column="entry_flag_" property="entryFlag" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="del_flag_" property="delFlag" />
@@ -29,6 +30,7 @@
         , t.auth_status_ as authStatus
         , t.verify_user_id_ as verifyUserId
         , t.reason_ as reason
+		, t.entry_flag_ as entryFlag
         , t.create_time_ as createTime
         , t.update_time_ as updateTime
         , t.del_flag_ as delFlag
@@ -75,6 +77,9 @@
 		<if test="param.authStatus !=null">
 			AND t.auth_status_ = #{param.authStatus}
 		</if>
+		<if test="param.entryFlag !=null">
+			AND t.entry_flag_ = #{param.entryFlag}
+		</if>
 		order by field(t.auth_status_,'DOING') desc, t.create_time_ desc
 	</select>
 

+ 11 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherAuthEntryRecordController.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.teacher.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
@@ -13,11 +15,14 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
 
 @RestController
 @RequestMapping("/teacherAuthEntryRecord")
@@ -25,7 +30,7 @@ import javax.validation.Valid;
 public class TeacherAuthEntryRecordController extends BaseController {
     @Autowired
     private TeacherAuthEntryRecordService teacherAuthEntryRecordService;
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @GetMapping("/getLastRecordByUserId")
@@ -46,6 +51,11 @@ public class TeacherAuthEntryRecordController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        String styleVideoJson = teacherApplyDetailDto.getStyleVideoJson();
+        JSONArray jsonArray = JSONObject.parseArray(styleVideoJson);
+        if(CollectionUtils.isEmpty(jsonArray)){
+            return failed("至少要有一个老师风采视频");
+        }
         //处理老师申请逻辑
         return teacherAuthEntryRecordService.doApply(teacherApplyDetailDto, user);
     }

+ 14 - 0
toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

@@ -6,8 +6,11 @@ import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.Temporal;
 import java.time.temporal.WeekFields;
 import java.util.*;
 
@@ -573,6 +576,13 @@ public class DateUtil {
 		return ((c2.get(Calendar.YEAR) * 12) + c2.get(Calendar.MONTH)) - ((c1.get(Calendar.YEAR) * 12) + c1.get(Calendar.MONTH));
 	}
 
+	public static Long getMonthDiff(Date d1, Date d2) {
+		Temporal start = LocalDate.parse(format(d1, DEFAULT_PATTERN));
+		Temporal end = LocalDate.parse(format(d2, DEFAULT_PATTERN));
+
+		return ChronoUnit.MONTHS.between(start, end);
+	}
+
 	/**
 	 * 计算两个日期之间相差的年数。如果第一个日期在第二个日期之前,则返回正,反之返回负。
 	 *
@@ -1468,5 +1478,9 @@ public class DateUtil {
 		System.out.println(format(getLastDayOfMonth(new Date()),CHINESE_DATA_FORMAT));
 		System.out.println(monthsBetween(df1.parse("2020-01-18 12:00:00"),df1.parse("2020-04-19 12:00:00")));
 		System.out.println(getNextWeekMonday(new Date()));
+
+		System.out.println(getMonthDiff(
+				DateUtil.parse("2022-01-05",DEFAULT_PATTERN),
+				DateUtil.parse("2022-02-04",DEFAULT_PATTERN)));
 	}
 }