Browse Source

畅学卡

刘俊驰 3 months ago
parent
commit
f3e98c0ccb
14 changed files with 396 additions and 2 deletions
  1. 1 1
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/UserOrderController.java
  2. 114 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/DiscountCardRecord.java
  3. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java
  4. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/DiscountCardRecordMapper.java
  5. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/DiscountCardRecordService.java
  6. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java
  7. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PaymentDivMemberRecordService.java
  8. 113 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/DiscountCardRecordServiceImpl.java
  9. 49 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MemberPriceSettingsServiceImpl.java
  10. 28 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java
  11. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  12. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java
  13. 33 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/DiscountCardRecordMapper.xml
  14. 4 0
      toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

+ 1 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/UserOrderController.java

@@ -389,7 +389,7 @@ public class UserOrderController extends BaseController {
         UserPaymentOrderWrapper.OrderPayTypeResp orderPayTypeResp = userPaymentCoreService.orderPayType(payTypeReq);
 
         // todo 测试固定v2
-//        orderPayTypeResp.setPaymentVersion(EPaymentVersion.V2);
+        orderPayTypeResp.setPaymentVersion(EPaymentVersion.V2);
         return HttpResponseResult.succeed(orderPayTypeResp);
     }
 

+ 114 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/DiscountCardRecord.java

@@ -0,0 +1,114 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.yonge.cooleshow.biz.dal.enums.*;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 购买会员卡记录表
+ * 2024-11-15 10:57:20
+ */
+@Data
+@ApiModel(" DiscountCardRecord-购买会员卡记录表")
+@TableName("discount_card_record")
+public class DiscountCardRecord implements Serializable {
+
+    @ApiModelProperty("会员记录id") 
+	    @TableId(value = "id_")
+	    private Long id;
+
+    @ApiModelProperty("用户id") 
+	@TableField(value = "user_id_")
+    private Long userId;
+
+    @ApiModelProperty("会员卡id") 
+	@TableField(value = "vip_card_id_")
+    private Long vipCardId;
+
+    @ApiModelProperty("订单号 ,活动id") 
+	@TableField(value = "order_no_")
+    private String orderNo;
+
+    @ApiModelProperty("来源类型 : ACTIVITY :活动 ,ORDER:订单") 
+	@TableField(value = "source_type_")
+    private SourceTypeEnum sourceType;
+
+    @ApiModelProperty("购买人员类型 TEACHRE :老师端 STUDNET : 学生端") 
+	@TableField(value = "client_type_")
+    private ClientEnum clientType;
+
+    @ApiModelProperty("订单详情号") 
+	@TableField(value = "sub_order_no_")
+    private String subOrderNo;
+
+    @ApiModelProperty("会员卡开始时间") 
+	@TableField(value = "start_time_")
+    private Date startTime;
+
+    @ApiModelProperty("会员卡结束时间") 
+	@TableField(value = "end_time_")
+    private Date endTime;
+
+    @ApiModelProperty("创建时间") 
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+    @ApiModelProperty("创建人") 
+	@TableField(value = "create_by_")
+    private Long createBy;
+
+    @ApiModelProperty("更新时间") 
+	@TableField(value = "update_time_")
+    private Date updateTime;
+
+    @ApiModelProperty("时间类型 DAY:天 MONTH:月,YEAR:年") 
+	@TableField(value = "type_")
+    private PeriodEnum type;
+
+    @ApiModelProperty("添加时间数量") 
+	@TableField(value = "times_")
+    private Integer times;
+
+    @ApiModelProperty("消息发送 0、未发送 1、已发送提前3天消息 2、已发送会员过期消息") 
+	@TableField(value = "msg_status_")
+    private Integer msgStatus;
+
+    @ApiModelProperty("备注") 
+	@TableField(value = "reason_")
+    private String reason;
+
+    @ApiModelProperty("会员类型 DISCOUNT") 
+	@TableField(value = "vip_type_")
+    private EVipType vipType;
+
+    @ApiModelProperty("状态 ADD:新增,DEDUCTION:扣减,UPDATE:变更") 
+	@TableField(value = "status_")
+    private EVipRecordStatus status;
+
+    @ApiModelProperty("是否展示1:展示,0:隐藏") 
+	@TableField(value = "display_flag_")
+    private Boolean displayFlag;
+
+    @ApiModelProperty("关联ID") 
+	@TableField(value = "ref_id_")
+    private Long refId;
+
+    @ApiModelProperty("是否有效 1:有效,0:失效") 
+	@TableField(value = "efficient_flag_")
+    private Boolean efficientFlag;
+
+    @ApiModelProperty("是否发送推送,1:是,0:否") 
+	@TableField(value = "send_msg_")
+    private Boolean sendMsg;
+
+}

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java

@@ -19,7 +19,8 @@ public enum GoodTypeEnum implements BaseEnum<String, GoodTypeEnum> {
     ALBUM("专辑购买"),
     TENANT_ALBUM("机构专辑"),
     PIANO_ROOM("琴房时长"),
-    ACTI_REGIST("活动报名")
+    ACTI_REGIST("活动报名"),
+    DISCOUNT("畅学卡")
     ;
 
     @EnumValue

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mapper/DiscountCardRecordMapper.java

@@ -0,0 +1,18 @@
+package com.yonge.cooleshow.biz.dal.mapper;
+
+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 org.springframework.stereotype.Repository;
+import com.yonge.cooleshow.biz.dal.entity.DiscountCardRecord;
+
+/**
+ * 购买会员卡记录表
+ * 2024-11-15 10:57:20
+ */
+@Repository
+public interface DiscountCardRecordMapper extends BaseMapper<DiscountCardRecord> {
+
+}

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/DiscountCardRecordService.java

@@ -0,0 +1,15 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.DiscountCardRecord;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+
+/**
+ * 购买会员卡记录表
+ * 2024-11-15 10:57:20
+ */
+public interface DiscountCardRecordService extends IService<DiscountCardRecord>  {
+
+
+    void orderSuccess(UserOrderDetailVo userPaymentOrder);
+}

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

@@ -104,4 +104,10 @@ public interface MemberPriceSettingsService extends IService<MemberPriceSettings
     void orderCreate(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
 
     void orderSuccess(UserOrderDetailVo userPaymentOrder, boolean messageFlag);
+
+    /**
+     * 优惠卡创建检查
+     *
+     */
+    void discountCreate(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
 }

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

@@ -97,10 +97,16 @@ public interface PaymentDivMemberRecordService extends IService<PaymentDivMember
     void activity(UserOrderDetailVo userOrderDetailVo);
 
     /**
+     * 畅学卡
+     *
+     */
+    void discount(UserOrderDetailVo userOrderDetailVo);
+    /**
      * 根据订单查询分账记录
      *
      * @param orderNo 订单编号
      * @return
      */
     List<PaymentDivMemberRecord> getByOrderNo(String orderNo);
+
 }

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

@@ -0,0 +1,113 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.yonge.cooleshow.biz.dal.entity.DiscountCardRecord;
+import com.yonge.cooleshow.biz.dal.entity.Student;
+import com.yonge.cooleshow.biz.dal.enums.EVipRecordStatus;
+import com.yonge.cooleshow.biz.dal.enums.EVipType;
+import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
+import com.yonge.cooleshow.biz.dal.mapper.DiscountCardRecordMapper;
+import com.yonge.cooleshow.biz.dal.service.DiscountCardRecordService;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
+import com.yonge.cooleshow.biz.dal.wrapper.VipCardRecordWrapper;
+import com.yonge.toolset.utils.date.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.util.Date;
+
+/**
+ * 购买会员卡记录表
+ * 2024-11-15 10:57:20
+ */
+@Slf4j
+@Service
+public class DiscountCardRecordServiceImpl extends ServiceImpl<DiscountCardRecordMapper, DiscountCardRecord> implements DiscountCardRecordService {
+
+    @Autowired
+    private MemberPriceSettingsService memberPriceSettingsService;
+
+    @Autowired
+    private StudentService studentService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void orderSuccess(UserOrderDetailVo orderDetailVo) {
+
+        if (null == orderDetailVo) {
+            return;
+        }
+        MemberPriceSettingsVo detail = memberPriceSettingsService.detail(orderDetailVo.getBizId());
+        if (!detail.getVipType().equals(EVipType.DISCOUNT)) {
+            return;
+        }
+
+
+        DiscountCardRecord discountCardRecord = new DiscountCardRecord();
+        discountCardRecord.setUserId(orderDetailVo.getUserId());
+        discountCardRecord.setVipCardId(orderDetailVo.getBizId());
+        discountCardRecord.setOrderNo(orderDetailVo.getOrderNo());
+        discountCardRecord.setSourceType(SourceTypeEnum.ORDER);
+        discountCardRecord.setClientType(orderDetailVo.getOrderClient());
+        discountCardRecord.setSubOrderNo(orderDetailVo.getSubOrderNo());
+        discountCardRecord.setCreateBy(orderDetailVo.getUserId());
+        discountCardRecord.setType(detail.getPeriod());
+        discountCardRecord.setTimes(orderDetailVo.getGoodNum());
+        discountCardRecord.setVipType(detail.getVipType());
+        discountCardRecord.setStatus(EVipRecordStatus.ADD);
+        discountCardRecord.setDisplayFlag(true);
+        discountCardRecord.setEfficientFlag(true);
+        discountCardRecord.setSendMsg(false);
+
+        // 设置时间
+        Student student = studentService.getById(orderDetailVo.getUserId());
+        LocalDate startTime = LocalDate.now();
+        if (student.getDiscountEndTime() != null && student.getDiscountEndTime().after(new Date())) {
+            startTime = student.getDiscountEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        }
+        LocalDate endTime = LocalDate.now();
+
+        switch (discountCardRecord.getType()) {
+            case DAY:
+                endTime = startTime.plusDays(discountCardRecord.getTimes());
+                break;
+            case MONTH:
+                endTime = startTime.plusMonths(discountCardRecord.getTimes());
+                break;
+            case QUARTERLY:
+                endTime = startTime.plusMonths(discountCardRecord.getTimes() * 3L);
+                break;
+            case YEAR_HALF:
+                endTime = startTime.plusMonths(discountCardRecord.getTimes() * 6L);
+                break;
+            case YEAR:
+                endTime = startTime.plusYears(discountCardRecord.getTimes());
+                break;
+            default:
+                log.error("时间类型错误{}", discountCardRecord.getType());
+        }
+        discountCardRecord.setStartTime(DateUtil.localDateTimeToDate(startTime.atTime(LocalTime.MIN)));
+        discountCardRecord.setEndTime(DateUtil.localDateTimeToDate(endTime.atTime(LocalTime.MAX)));
+
+        this.save(discountCardRecord);
+
+        // 更新学生时长
+        studentService.lambdaUpdate()
+                .set(Student::getDiscountEndTime, discountCardRecord.getEndTime())
+                .set(student.getDiscountStartTime() == null,Student::getDiscountStartTime, discountCardRecord.getEndTime())
+                .eq(Student::getUserId, orderDetailVo.getUserId())
+                .update();
+
+    }
+}

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

@@ -275,6 +275,55 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
     }
 
 
+    /**
+     * 优惠卡创建检查
+     *
+     */
+    @Override
+    public void discountCreate(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo) {
+        MemberPriceSettingsVo detail = detail(Long.parseLong(orderGoodsInfo.getBizContent().toString()));
+        if (null == detail) {
+            throw new BizException(999,"产品信息已更新,请重新选择");
+        }
+
+        if (!orderGoodsInfo.getGoodType().name().equals(detail.getVipType().name())) {
+            throw new BizException(999,"产品信息已更新,请重新选择");
+        }
+        if (Boolean.FALSE.equals(detail.getStatus())) {
+            throw new BizException(999,"产品信息已更新,请重新选择");
+        }
+
+        BigDecimal couponAmount = BigDecimal.ZERO;
+        ActivityPlanVo activityPlanVo = activityPlanService.detail(orderGoodsInfo.getActivityId());
+
+        if (activityPlanVo != null && activityPlanVo.getActivityState() == 1) {
+            for (ActivityPlanRewardDto activityPlanRewardDto : activityPlanVo.getActivityRewardList()) {
+                if (activityPlanRewardDto.getActivityReward().getRewardType().getCode().equals(detail.getVipType().getCode())
+                        && activityPlanRewardDto.getActivityReward().getUnit().getCode().equals(detail.getPeriod().getCode())) {
+                    couponAmount = activityPlanRewardDto.getActivityReward().getDiscountPrice();
+                    break;
+                }
+            }
+        }
+
+        UserOrderDetail userOrderDetail = JSON.parseObject(JSON.toJSONString(orderGoodsInfo), UserOrderDetail.class);
+
+        userOrderDetail.setGoodUrl(userOrderService.getGoodUrlByType(orderGoodsInfo.getGoodType()));
+        userOrderDetail.setMerchId(0l);
+        userOrderDetail.setBizId(detail.getId());
+        userOrderDetail.setBizContent("畅学卡购买-" + detail.getPeriod().getMsg());
+        userOrderDetail.setGoodNum(orderGoodsInfo.getGoodNum());
+        userOrderDetail.setOriginalPrice(detail.getOriginalPrice().multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
+        userOrderDetail.setCouponAmount(couponAmount.multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
+        userOrderDetail.setExpectPrice(detail.getSalePrice().multiply(new BigDecimal(orderGoodsInfo.getGoodNum())));
+        userOrderDetail.setActualPrice(userOrderDetail.getExpectPrice().subtract(couponAmount));
+        orderGoodsInfo.setUserOrderDetail(userOrderDetail);
+
+        // 设置金额入账去向
+        userOrderDetail.setAccountConfig( teacherService.teacherSettlementFrom(null,orderGoodsInfo.getRecomUserId()).jsonString());
+    }
+
+
     @Override
     @Transactional
     public void activityReward(Long userId, ClientEnum client, ActivityReward activityReward, Long activityId,String activityName) {

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

@@ -147,6 +147,8 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     @Autowired
     private TenantTeacherAccountRecordService tenantTeacherAccountRecordService;
 
+    @Autowired
+    private DiscountCardRecordService discountCardRecordService;
 
     /**
      * 查询详情
@@ -781,6 +783,32 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
     }
 
+    /**
+     * 畅学卡
+     *
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void discount(UserOrderDetailVo userPaymentOrder) {
+
+        // 先计算分账金额,写入流水,最后执行分账,在写入分账数据
+
+        // 分账
+        Map<Long, BigDecimal> tenantdivMap = new HashMap<>();
+        tenantdivMap.merge(-1L, userPaymentOrder.getActualPrice(), BigDecimal::add);
+        // 分润
+        Map<Long, BigDecimal> teacherMap = new HashMap<>();
+        // 老师收入
+        Map<Long, BigDecimal> bizMap = new HashMap<>();
+
+        //服务费  原价的平台服务费 ,减去优惠券金额
+        BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice();
+
+        discountCardRecordService.orderSuccess(userPaymentOrder);
+
+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
+    }
+
     @Override
     public List<PaymentDivMemberRecord> getByOrderNo(String orderNo) {
         return this.lambdaQuery()

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

@@ -1125,6 +1125,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_ALBUM);
         } else if (GoodTypeEnum.SVIP.equals(goodTypeEnum)) {
             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_SVIP);
+        } else if (GoodTypeEnum.DISCOUNT.equals(goodTypeEnum)) {
+            configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_SVIP);
+
         }
         return configValue;
     }

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

@@ -163,6 +163,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         //vip开通缴费
         orderGoodsCreate.put(GoodTypeEnum.VIP, memberPriceSettingsService::orderCreate);
         orderGoodsCreate.put(GoodTypeEnum.SVIP, memberPriceSettingsService::orderCreate);
+        orderGoodsCreate.put(GoodTypeEnum.DISCOUNT, memberPriceSettingsService::discountCreate);
         //直播课程购买
         orderGoodsCreate.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourse);
         //陪练课购买
@@ -201,6 +202,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         paymentSuccess.put(GoodTypeEnum.ALBUM, paymentDivMemberRecordService::musicSheet);
         paymentSuccess.put(GoodTypeEnum.VIP, paymentDivMemberRecordService::vip);
         paymentSuccess.put(GoodTypeEnum.SVIP, paymentDivMemberRecordService::vip);
+        paymentSuccess.put(GoodTypeEnum.DISCOUNT, paymentDivMemberRecordService::discount);
         paymentSuccess.put(GoodTypeEnum.ACTI_REGIST, paymentDivMemberRecordService::activity);
 
         /**********订单取消后******************/
@@ -1119,6 +1121,8 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
                 resp.setPaymentChannels(Arrays.asList(merchantConfig.getPayChannel().split(",")));
             }
         }
+
+        resp.setPaymentVersion(EPaymentVersion.V2);
         return resp;
     }
 

+ 33 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/DiscountCardRecordMapper.xml

@@ -0,0 +1,33 @@
+<?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.mapper.DiscountCardRecordMapper">
+
+	 
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ AS id
+        , t.user_id_ AS userId
+        , t.vip_card_id_ AS vipCardId
+        , t.order_no_ AS orderNo
+        , t.source_type_ AS sourceType
+        , t.client_type_ AS clientType
+        , t.sub_order_no_ AS subOrderNo
+        , t.start_time_ AS startTime
+        , t.end_time_ AS endTime
+        , t.create_time_ AS createTime
+        , t.create_by_ AS createBy
+        , t.update_time_ AS updateTime
+        , t.type_ AS type
+        , t.times_ AS times
+        , t.msg_status_ AS msgStatus
+        , t.reason_ AS reason
+        , t.vip_type_ AS vipType
+        , t.status_ AS status
+        , t.display_flag_ AS displayFlag
+        , t.ref_id_ AS refId
+        , t.efficient_flag_ AS efficientFlag
+        , t.send_msg_ AS sendMsg
+        </sql> 
+
+</mapper>

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

@@ -1269,6 +1269,10 @@ public class DateUtil {
 		return dates;
 	}
 
+	public static Date localDateTimeToDate(LocalDateTime localDateTime) {
+		return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+	}
+
 	/**
 	 * @describe 时间区段辅助类
 	 * @author Joburgess