liujunchi 2 лет назад
Родитель
Сommit
ec07edc5a9

+ 17 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/StudentTime.java

@@ -52,11 +52,27 @@ public class StudentTime implements Serializable {
     private Date firstMallTime;
 
     @ApiModelProperty("第一次购买时间 ")
-    @TableField(value = "first_activity_time_")
+    @TableField(value = "first_pay_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date firstPayTime;
 
+
+
+    @ApiModelProperty("第一次活动购买时间 ")
+    @TableField(value = "first_activity_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date firstActivityTime;
+
+    public Date getFirstActivityTime() {
+        return firstActivityTime;
+    }
+
+    public void setFirstActivityTime(Date firstActivityTime) {
+        this.firstActivityTime = firstActivityTime;
+    }
+
     public Date getFirstPayTime() {
         return firstPayTime;
     }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PianoRoomChangeRecordService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.vo.PianoRoomChangeRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.PianoRoomChangeRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PianoRoomChangeRecord;
@@ -28,4 +29,13 @@ public interface PianoRoomChangeRecordService extends IService<PianoRoomChangeRe
     IPage<PianoRoomChangeRecordVo> selectPage(IPage<PianoRoomChangeRecordVo> page, PianoRoomChangeRecordSearch query);
 
 	boolean add(PianoRoomChangeRecord pianoRoomChangeRecord);
+
+	/**
+	 * 增/减老师琴房课时长
+	 *
+	 * @param userId 老师id
+	 * @param times 时长
+	 * @param inOrOut 增/减
+	 */
+	void setPianoRoomTime(Long userId, Integer times, InOrOutEnum inOrOut);
 }

+ 38 - 28
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PianoRoomChangeRecordServiceImpl.java

@@ -11,8 +11,6 @@ import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.PianoRoomTimeService;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonShelvesVo;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.payment.util.DistributedLock;
@@ -63,36 +61,48 @@ public class PianoRoomChangeRecordServiceImpl extends ServiceImpl<PianoRoomChang
         //保存记录
         save(pianoRoomChangeRecord);
         //入琴房账户
+        setPianoRoomTime(pianoRoomChangeRecord.getUserId(), pianoRoomChangeRecord.getTimes(), pianoRoomChangeRecord.getInOrOut());
+        //琴房推送
+        sendMessage(pianoRoomChangeRecord);
+        return true;
+    }
+
+    /**
+     * 增/减老师琴房课时长
+     *
+     * @param userId 老师id
+     * @param times 时长
+     * @param inOrOut 增/减
+     */
+    @Override
+    public void setPianoRoomTime(Long userId, Integer times, InOrOutEnum inOrOut) {
         DistributedLock.of(redissonClient)
-                .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_PIANO_ROOM_ACCOUNT.getRedisKey(pianoRoomChangeRecord.getUserId())
-                        , (o) -> {
-                            PianoRoomTime pianoRoomTime = pianoRoomTimeService.getOne(Wrappers.<PianoRoomTime>lambdaQuery()
-                                    .eq(PianoRoomTime::getTeacherId, pianoRoomChangeRecord.getUserId()));
+                       .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_PIANO_ROOM_ACCOUNT.getRedisKey(userId)
+                               , (o) -> {
+                                        PianoRoomTime pianoRoomTime = pianoRoomTimeService.getOne(Wrappers.<PianoRoomTime>lambdaQuery()
+                                                .eq(PianoRoomTime::getTeacherId, userId));
 
-                            if (null == pianoRoomTime) {
-                                pianoRoomTime = new PianoRoomTime();
-                                pianoRoomTime.setRemainTime(0);
-                                pianoRoomTime.setFrozenTime(0);
-                                pianoRoomTime.setTeacherId(pianoRoomChangeRecord.getUserId());
-                                pianoRoomTimeService.save(pianoRoomTime);
-                            }
+                                        if (null == pianoRoomTime) {
+                                            pianoRoomTime = new PianoRoomTime();
+                                            pianoRoomTime.setRemainTime(0);
+                                            pianoRoomTime.setFrozenTime(0);
+                                            pianoRoomTime.setTeacherId(userId);
+                                            pianoRoomTimeService.save(pianoRoomTime);
+                                        }
 
-                            if (InOrOutEnum.IN.equals(pianoRoomChangeRecord.getInOrOut())) {
-                                pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() + pianoRoomChangeRecord.getTimes());
-                            } else {
-                                pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() - pianoRoomChangeRecord.getTimes());
-                            }
+                                        if (InOrOutEnum.IN.equals(inOrOut)) {
+                                            pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() + times);
+                                        } else {
+                                            pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() - times);
+                                        }
 
-                            if (pianoRoomTime.getRemainTime() < 0) {
-                                throw new BizException("扣除时长超过老师可用时长");
-                            }
-                            pianoRoomTime.setUpdateTime(new Date());
-                            pianoRoomTimeService.updateById(pianoRoomTime);
-                            return null;
-                        }, null, 10l);
-        //琴房推送
-        sendMessage(pianoRoomChangeRecord);
-        return true;
+                                        if (pianoRoomTime.getRemainTime() < 0) {
+                                            throw new BizException("扣除时长超过老师可用时长");
+                                        }
+                                        pianoRoomTime.setUpdateTime(new Date());
+                                        pianoRoomTimeService.updateById(pianoRoomTime);
+                                        return null;
+                               }, null, 10l);
     }
 
 

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

@@ -89,8 +89,8 @@ public class StudentTimeServiceImpl extends ServiceImpl<StudentTimeDao, StudentT
                 if (null == studentTime.getFirstMusicTime() && GoodTypeEnum.MUSIC.equals(detailVo.getGoodType())) {
                     studentTime.setFirstMusicTime(now);
                 }
-                if (null == studentTime.getFirstPayTime() && GoodTypeEnum.ACTI_REGIST.equals(detailVo.getGoodType())) {
-                    studentTime.setFirstPayTime(now);
+                if (null == studentTime.getFirstActivityTime() && GoodTypeEnum.ACTI_REGIST.equals(detailVo.getGoodType())) {
+                    studentTime.setFirstActivityTime(now);
                 }
             }
 

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentTimeMapper.xml

@@ -9,6 +9,8 @@
         <result column="first_live_time_" property="firstLiveTime" />
         <result column="first_music_time_" property="firstMusicTime" />
         <result column="first_mall_time_" property="firstMallTime" />
+        <result column="first_activity_time_" property="firstActivityTime" />
+        <result column="first_pay_time_" property="firstPayTime" />
     </resultMap>
 
     <!-- 表字段 -->
@@ -20,5 +22,7 @@
         , t.first_live_time_ as firstLiveTime
         , t.first_music_time_ as firstMusicTime
         , t.first_mall_time_ as firstMallTime
+        , t.first_activity_time_ as firstActivityTime
+        , t.first_pay_time_ as firstPayTime
         </sql>
 </mapper>

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml

@@ -236,6 +236,7 @@
                 (st.first_practice_time_ is null and od.good_type_ = 'PRACTICE') or
                 (st.first_video_time_ is null and od.good_type_ = 'VIDEO') or
                 (st.first_live_time_ is null and od.good_type_ = 'LIVE') or
+                (st.first_activity_time_ is null and od.good_type_ = 'ACTI_REGIST') or
                 (st.first_music_time_ is null and od.good_type_ = 'MUSIC')
             )
         )