Browse Source

Merge branch 'dev_1_3_2_20220815' of http://git.dayaedu.com/yonge/cooleshow into dev_1_3_2_20220815

liujunchi 2 years ago
parent
commit
2ebf6605b2
19 changed files with 452 additions and 33 deletions
  1. 35 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/UserFirstTimeTypeEnum.java
  2. 1 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityPlanController.java
  3. 0 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java
  4. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardChangeStockDao.java
  5. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserFirstTimeDao.java
  6. 67 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityRewardChangeStockSearch.java
  7. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java
  8. 102 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserFirstTime.java
  9. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java
  10. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserFirstTimeService.java
  11. 4 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java
  12. 30 11
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java
  13. 5 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java
  14. 7 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  15. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  16. 44 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserFirstTimeServiceImpl.java
  17. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRewardChangeStockVo.java
  18. 44 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardChangeStockMapper.xml
  19. 22 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserFirstTimeMapper.xml

+ 35 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/UserFirstTimeTypeEnum.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * 首次时间记录类型
+ *
+ * @Author: liweifan
+ * @Data: 2022/4/7 15:48
+ */
+public enum UserFirstTimeTypeEnum implements BaseEnum<String, UserFirstTimeTypeEnum> {
+
+    ENTRY("达人认证"),
+    LIVEING("开通直播"),
+    ;
+
+    @EnumValue
+    private String code;
+    private String msg;
+
+    UserFirstTimeTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 1 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityPlanController.java

@@ -126,6 +126,7 @@ public class ActivityPlanController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+
         if (CollectionUtils.isEmpty(updateRewardDtoList)) {
             return failed("参数异常");
         }
@@ -138,6 +139,4 @@ public class ActivityPlanController extends BaseController {
             return HttpResponseResult.failed("变更失败");
         }
     }
-
-
 }

+ 0 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java

@@ -146,5 +146,4 @@ public class ActivityRewardController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
     }
 
-
 }

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityRewardChangeStockDao.java

@@ -1,8 +1,29 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import java.util.List;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
+import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo;
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch;
 
 
 public interface ActivityRewardChangeStockDao extends BaseMapper<ActivityRewardChangeStock>{
+    /**
+     * 查询详情
+     * @author liweifan
+     * @date 2022-08-18 09:36:05
+     * @return: com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo
+     */
+    ActivityRewardChangeStockVo detail(@Param("id") Long id);
+
+    /**
+     * 分页查询
+     * @author liweifan
+     * @date 2022-08-18 09:36:05
+     * @return: com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo
+     */
+    List<ActivityRewardChangeStockVo> selectPage(@Param("page") IPage page, @Param("param") ActivityRewardChangeStockSearch activityRewardChangeStock);
 }

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserFirstTimeDao.java

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.UserFirstTime;
+
+
+public interface UserFirstTimeDao extends BaseMapper<UserFirstTime>{
+	
+}

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

@@ -1,7 +1,15 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -11,4 +19,63 @@ import io.swagger.annotations.ApiModel;
 public class ActivityRewardChangeStockSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "变更来源:ADMIN 后台调整 ACTIVITY 活动分配 ",hidden = true)
+	private String source;
+
+	@ApiModelProperty("调整类型: IN 增加 OUT 减少 ")
+	private InOrOutEnum changeType;
+
+	@ApiModelProperty(value = "操作人")
+	private String updateByName;
+
+	@ApiModelProperty(value = "活动开始时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date startTime;
+
+	@ApiModelProperty(value = "活动结束时间")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date endTime;
+
+
+	public InOrOutEnum getChangeType() {
+		return changeType;
+	}
+
+	public void setChangeType(InOrOutEnum changeType) {
+		this.changeType = changeType;
+	}
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
+	public String getUpdateByName() {
+		return updateByName;
+	}
+
+	public void setUpdateByName(String updateByName) {
+		this.updateByName = updateByName;
+	}
+
+	public Date getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
 }

+ 0 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java

@@ -49,19 +49,15 @@ public class ActivityPlan implements Serializable {
     private String describe;
     @ApiModelProperty("规则描述 ")
     @TableField(value = "rule_describe_")
-    @NotBlank(message = "活动规则不能为空")
     private String ruleDescribe;
     @ApiModelProperty("主题图片 ")
     @TableField(value = "subject_url_")
-    @NotBlank(message = "主题图片不能为空")
     private String subjectUrl;
     @ApiModelProperty("平铺背景 ")
     @TableField(value = "background_url_")
-    @NotBlank(message = "平铺背景不能为空")
     private String backgroundUrl;
     @ApiModelProperty("分享图片 ")
     @TableField(value = "share_url_")
-    @NotBlank(message = "分享图片不能为空")
     private String shareUrl;
     @ApiModelProperty("活动链接 ")
     @TableField(value = "activity_url_")
@@ -80,7 +76,6 @@ public class ActivityPlan implements Serializable {
     private Date activityEnd;
     @ApiModelProperty("报名方式 FREE 免费 CHARGE 收费 ")
     @TableField(value = "registration_method_")
-    @NotNull(message = "报名缴费方式不能为空")
     private RegistrationMethodEnum registrationMethod;
     @ApiModelProperty("报名价格 ")
     @TableField(value = "registration_price_")

+ 102 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserFirstTime.java

@@ -0,0 +1,102 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 时间记录表
+ */
+@TableName("user_first_time")
+@ApiModel(value = "UserFirstTime对象", description = "时间记录表")
+public class UserFirstTime implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("时间类型  ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("用户id ")
+	@TableField(value = "user_id_")
+    private Long userId;
+    @ApiModelProperty("用户类型:STUDENT 学生 TEACHER 老师 ")
+	@TableField(value = "user_type_")
+    private ClientEnum userType;
+    @ApiModelProperty("时间类型:ENTRY 达人认证 LIVEING 开通直播 ")
+	@TableField(value = "time_type_")
+    private UserFirstTimeTypeEnum timeType;
+    @ApiModelProperty("时间点 ")
+	@TableField(value = "time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date time;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+
+    public UserFirstTime(Long userId, ClientEnum userType, UserFirstTimeTypeEnum timeType, Date time) {
+        this.userId = userId;
+        this.userType = userType;
+        this.timeType = timeType;
+        this.time = time;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public ClientEnum getUserType() {
+        return userType;
+    }
+
+    public void setUserType(ClientEnum userType) {
+        this.userType = userType;
+    }
+
+    public UserFirstTimeTypeEnum getTimeType() {
+        return timeType;
+    }
+
+    public void setTimeType(UserFirstTimeTypeEnum timeType) {
+        this.timeType = timeType;
+    }
+    
+	public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+}

+ 9 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java

@@ -73,5 +73,13 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
 	 */
 	Boolean updateStock(ActivityRewardChangeStock activityRewardChangeStock);
 
-	IPage<ActivityRewardChangeStockVo> selectChangeStockPage(IPage<ActivityRewardChangeStockSearch> page, ActivityRewardChangeStockSearch query);
+	/**
+	 * 库存变更记录查询分页
+	 * @param page
+	 * @param query
+	 * @return
+	 */
+	IPage<ActivityRewardChangeStockVo> selectChangeStockPage(IPage<ActivityRewardChangeStockVo> page, ActivityRewardChangeStockSearch query);
+
+	void sendReward(Long userId, Long activityId);
 }

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserFirstTimeService.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.UserFirstTime;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
+
+import java.util.Date;
+
+/**
+ * 时间记录表 服务类
+ * @author liweifan
+ * @date 2022-08-18
+ */
+public interface UserFirstTimeService extends IService<UserFirstTime>  {
+    /**
+     * 记录时间
+     * @param userId(用户id)
+     * @param userType (用户类型)
+     * @param firstTimeTypeEnum (时间类型)
+     * @return
+     */
+    Boolean recordTime(Long userId, ClientEnum userType, UserFirstTimeTypeEnum firstTimeTypeEnum);
+    /**
+     * 记录时间
+     * @param userId(用户id)
+     * @param userType (用户类型)
+     * @param firstTimeTypeEnum (时间类型)
+     * @param time  (记录时间)
+     * @return
+     */
+    Boolean recordTime(Long userId, ClientEnum userType, UserFirstTimeTypeEnum firstTimeTypeEnum, Date time);
+
+}

+ 4 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 import com.yonge.cooleshow.biz.dal.service.ActivityUserRewardService;
 import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
@@ -30,6 +31,8 @@ public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanE
     @Autowired
     private UserOrderService userOrderService;
     @Autowired
+    private ActivityRewardService activityRewardService;
+    @Autowired
     private ActivityUserRewardService activityUserRewardService;
 
     @Override
@@ -72,7 +75,7 @@ public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanE
         //调用奖品发奖逻辑
         for (ActivityUserReward reward : activityUserRewardList) {
             //传入用户id和活动id
-
+            activityRewardService.sendReward(reward.getUserId(),reward.getActivityId());
         }
     }
 }

+ 30 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java

@@ -224,16 +224,37 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
         if (null == activityPlan) {
             return false;
         }
-        if (RegistrationMethodEnum.CHARGE.equals(activityPlan.getRegistrationMethod())
-                && (null == activityPlan.getRegistrationPrice() || BigDecimal.ZERO.compareTo(activityPlan.getRegistrationPrice()) > 0)) {
-            throw new BizException("活动收费时,报名金额不能为空");
-        }
-        if (RegistrationMethodEnum.CHARGE.equals(activityPlan.getRegistrationMethod())
-                && (null == activityPlan.getShareRate())) {
-            throw new BizException("活动收费时,分润比例不能为空");
+
+        if(!ActivityTypeEnum.STANDARD_GIFT.equals(activityPlan.getActivityType())){
+            if(null == activityPlan.getRegistrationMethod()){
+                throw new BizException("报名缴费方式不能为空");
+            }
+            if (RegistrationMethodEnum.CHARGE.equals(activityPlan.getRegistrationMethod())
+                    && (null == activityPlan.getRegistrationPrice() || BigDecimal.ZERO.compareTo(activityPlan.getRegistrationPrice()) > 0)) {
+                throw new BizException("活动收费时,报名金额不能为空");
+            }
+            if (RegistrationMethodEnum.CHARGE.equals(activityPlan.getRegistrationMethod())
+                    && (null == activityPlan.getShareRate())) {
+                throw new BizException("活动收费时,分润比例不能为空");
+            }
+            if(StringUtil.isEmpty(activityPlan.getSubjectUrl())){
+                throw new BizException("主题图片不能为空");
+            }
+            if(StringUtil.isEmpty(activityPlan.getBackgroundUrl())){
+                throw new BizException("平铺背景不能为空");
+            }
+            if(StringUtil.isEmpty(activityPlan.getShareUrl())){
+                throw new BizException("分享图片不能为空");
+            }
+            if(StringUtil.isEmpty(activityPlan.getRuleDescribe())){
+                throw new BizException("活动规则不能为空");
+            }
         }
-        if (ActivityTypeEnum.EVALUATION.equals(activityPlan.getActivityType()) && (null == activityPlan.getPlanEvaluation() || null == activityPlan.getPlanEvaluation().getEvaluationDifficulty())) {
-            throw new BizException("活动类型为评测活动时,评测难度不能为空");
+
+        if (ActivityTypeEnum.EVALUATION.equals(activityPlan.getActivityType())) {
+            if(null == activityPlan.getPlanEvaluation() || null == activityPlan.getPlanEvaluation().getEvaluationDifficulty()){
+                throw new BizException("活动类型为评测活动时,评测难度不能为空");
+            }
         }
         return true;
     }
@@ -453,8 +474,6 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
         } catch (Exception e) {
             log.error("活动参与发送消息失败--> {}", e.fillInStackTrace());
         }
-
-
     }
 
     private void checkActivityPay(Long planId) {

+ 5 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dao.ActivityPlanDao;
 import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
 import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
-import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
@@ -18,7 +16,6 @@ import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.common.enums.RewardTypeEnum;
 import com.yonge.cooleshow.common.enums.UnitEnum;
@@ -40,8 +37,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
-import java.util.concurrent.locks.Lock;
-import java.util.stream.Collectors;
 
 
 @Service
@@ -151,12 +146,13 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
     }
 
     @Override
-    public IPage<ActivityRewardChangeStockVo> selectChangeStockPage(IPage<ActivityRewardChangeStockSearch> page, ActivityRewardChangeStockSearch query) {
-        return null;
+    public IPage<ActivityRewardChangeStockVo> selectChangeStockPage(IPage<ActivityRewardChangeStockVo> page, ActivityRewardChangeStockSearch query) {
+        return page.setRecords(changeStockDao.selectPage(page, query));
     }
 
-
-    private void sendReward(Long userId,Long activityId) {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void sendReward(Long userId, Long activityId) {
         ActivityPlan activityPlan = activityPlanService.getById(activityId);
         if (activityPlan == null) {
             log.warn("活动不存在");

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

@@ -17,10 +17,12 @@ 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.service.UserFirstTimeService;
 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;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.string.StringPool;
 import com.yonge.toolset.base.util.StringUtil;
@@ -46,10 +48,10 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
 
     @Autowired
     private SysMessageService sysMessageService;
-
     @Autowired
     private TeacherStyleVideoService teacherStyleVideoService;
-
+    @Autowired
+    private UserFirstTimeService userFirstTimeService;
     @Resource
     private TeacherDao teacherDao;
 
@@ -98,6 +100,9 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
                 //老师风采视频
                 String styleVideoJson = build.getStyleVideoJson();
                 saveStyleVideo(styleVideoJson, build.getUserId(), sysUser.getId());
+
+                //记录达人认证时间
+                userFirstTimeService.recordTime(build.getUserId(),ClientEnum.TEACHER, UserFirstTimeTypeEnum.ENTRY);
             }
             teacher.setEntryFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
             teacher.setEntryAuthDate(new Date());

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

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
@@ -67,6 +68,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private UserAccountService userAccountService;
     @Autowired
+    private UserFirstTimeService userFirstTimeService;
+    @Autowired
     private TeacherTotalService totalService;
 
     @Override
@@ -190,6 +193,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
             // 添加标签
             this.setTeacherTag(id, TeacherTagEnum.LIVE);
+
+            //记录首次开通直播时间
+            userFirstTimeService.recordTime(id,ClientEnum.TEACHER, UserFirstTimeTypeEnum.LIVEING);
             return HttpResponseResult.status(true);
         } else {
             return HttpResponseResult.failed("不满足开通条件");

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

@@ -0,0 +1,44 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.entity.UserFirstTime;
+import com.yonge.cooleshow.biz.dal.dao.UserFirstTimeDao;
+import com.yonge.cooleshow.biz.dal.service.UserFirstTimeService;
+
+import java.util.Date;
+
+
+@Service
+public class UserFirstTimeServiceImpl extends ServiceImpl<UserFirstTimeDao, UserFirstTime> implements UserFirstTimeService {
+    private final static Logger log = LoggerFactory.getLogger(UserFirstTimeServiceImpl.class);
+
+    @Override
+    public Boolean recordTime(Long userId, ClientEnum userType, UserFirstTimeTypeEnum firstTimeTypeEnum) {
+        return recordTime(userId, userType, firstTimeTypeEnum, new Date());
+    }
+
+    @Override
+    public Boolean recordTime(Long userId, ClientEnum userType, UserFirstTimeTypeEnum firstTimeTypeEnum, Date time) {
+        if (null == userId || null == userType || null == firstTimeTypeEnum) {
+            return false;
+        }
+
+        UserFirstTime old = getOne(Wrappers.<UserFirstTime>lambdaQuery()
+                .eq(UserFirstTime::getId, userId)
+                .eq(UserFirstTime::getUserType, userType)
+                .eq(UserFirstTime::getTimeType, firstTimeTypeEnum)
+        );
+        if (old != null) {
+            return true;
+        }
+        UserFirstTime userFirstTime = new UserFirstTime(userId, userType, firstTimeTypeEnum, time);
+        save(userFirstTime);
+        return true;
+    }
+}

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRewardChangeStockVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -10,4 +11,15 @@ import io.swagger.annotations.ApiModel;
 @ApiModel(value = "ActivityRewardChangeStockVo对象", description = "活动奖品库存调整记录表查询视图对象")
 public class ActivityRewardChangeStockVo extends ActivityRewardChangeStock{
 	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "操作人")
+	private String updateByName;
+
+	public String getUpdateByName() {
+		return updateByName;
+	}
+
+	public void setUpdateByName(String updateByName) {
+		this.updateByName = updateByName;
+	}
 }

+ 44 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardChangeStockMapper.xml

@@ -18,5 +18,48 @@
         , t.change_type_ as changeType
         , t.create_time_ as createTime
         , t.create_by_ as createBy
-        </sql> 
+        </sql>
+
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+        t.id_ as id
+        , t.reward_id_ as rewardId
+        , t.stock_ as stock
+        , t.change_type_ as changeType
+        , t.source_ as source
+        , t.create_time_ as createTime
+        , t.create_by_ as createBy
+    </sql>
+
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo">
+        SELECT
+        <include refid="baseColumns"/>
+        FROM activity_reward_change_stock t
+        where t.id_ = #{id}
+    </select>
+
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo">
+        SELECT
+            <include refid="baseColumns" />,
+            u.username_ as updateByName
+        FROM activity_reward_change_stock t
+        left join sys_user u on t.create_by_ = u.id_
+        <where>
+            <if test="param.source != null and param.source != ''">
+                and t.source_ = #{param.source}
+            </if>
+            <if test="param.changeType != null">
+                and t.change_type_ = #{param.changeType}
+            </if>
+            <if test="param.updateByName != null and param.updateByName != ''">
+                and u.username_ like CONCAT('%',#{param.updateByName},'%')
+            </if>
+            <if test="param.startTime !=null">
+                and t.create_time_ &gt;= #{param.startTime}
+            </if>
+            <if test="param.endTime !=null">
+                and t.create_time_ &lt;= #{param.endTime}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 22 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserFirstTimeMapper.xml

@@ -0,0 +1,22 @@
+<?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.yonge.cooleshow.biz.dal.dao.UserFirstTimeDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.UserFirstTime">
+            <result column="id_" property="id" />
+	        <result column="user_id_" property="userId" />
+	        <result column="user_type_" property="userType" />
+	        <result column="time_type_" property="timeType" />
+	        <result column="time_" property="time" />
+	        <result column="create_time_" property="createTime" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.user_id_ as userId
+        , t.user_type_ as userType
+        , t.time_type_ as timeType
+        , t.time_ as time
+        , t.create_time_ as createTime
+        </sql>
+</mapper>