瀏覽代碼

运营活动开发

liweifan 2 年之前
父節點
當前提交
a5c205f743
共有 14 個文件被更改,包括 298 次插入24 次删除
  1. 35 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/UserFirstTimeTypeEnum.java
  2. 0 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityPlanController.java
  3. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserFirstTimeDao.java
  4. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java
  5. 102 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserFirstTime.java
  6. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java
  7. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserFirstTimeService.java
  8. 4 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java
  9. 30 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java
  10. 3 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java
  11. 7 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  12. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  13. 44 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserFirstTimeServiceImpl.java
  14. 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;
+    }
+}

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

@@ -139,6 +139,4 @@ public class ActivityPlanController extends BaseController {
             return HttpResponseResult.failed("变更失败");
         }
     }
-
-
 }

+ 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>{
+	
+}

+ 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;
+    }
+    
+}

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java

@@ -80,4 +80,6 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
 	 * @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 - 9
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;
     }

+ 3 - 5
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;
@@ -153,8 +150,9 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
         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;
+    }
+}

+ 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>