浏览代码

会员卡购买

liweifan 3 年之前
父节点
当前提交
24351c4db3

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MemberPriceSettingsDao.java

@@ -34,4 +34,12 @@ public interface MemberPriceSettingsDao extends BaseMapper<MemberPriceSettings>{
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo>
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo>
      */
      */
     List<MemberPriceSettingsVo> selectList(@Param("param") MemberPriceSettingsSearch param);
     List<MemberPriceSettingsVo> selectList(@Param("param") MemberPriceSettingsSearch param);
+
+    /**
+     * 根据订单详情id查询会员卡
+     *
+     * @param orderDetilId
+     * @return
+     */
+    MemberPriceSettings getMemberPriceByOrderDetilId(@Param("orderDetilId") Long orderDetilId);
 }
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardRecordDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
@@ -46,4 +47,5 @@ public interface VipCardRecordDao extends BaseMapper<VipCardRecord> {
      */
      */
     List<VipCardRecordVo> selectExpireRecord();
     List<VipCardRecordVo> selectExpireRecord();
 
 
+
 }
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
@@ -34,6 +35,13 @@ public interface VipCardRecordService extends IService<VipCardRecord> {
     VipCardRecordVo detail(Long orderDetilId, Long userId);
     VipCardRecordVo detail(Long orderDetilId, Long userId);
 
 
     /**
     /**
+     * 构建VipCardRecord对象
+     * @param orderDetailVo
+     * @return
+     */
+    VipCardRecord buildVipCardRecordByOrderDetail(UserOrderDetailVo orderDetailVo);
+
+    /**
      * 分页查询
      * 分页查询
      *
      *
      * @author liweifan
      * @author liweifan

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

@@ -25,6 +25,7 @@ import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
 import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
 import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
 import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.*;
 import java.util.*;
 
 
@@ -75,55 +76,31 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
 
     @Override
     @Override
     public void orderSuccess(UserOrderDetailVo orderDetailVo) {
     public void orderSuccess(UserOrderDetailVo orderDetailVo) {
-        MemberPriceSettingsVo detail = detail(orderDetailVo.getBizId());
-        if (null == detail) {
+        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
+        if (null == studentVo) {
             return;
             return;
         }
         }
-        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
-        //修改用户会员时长
-        Date membershipEndTime = studentVo.getMembershipEndTime();
-        Calendar now = Calendar.getInstance();
-
-        VipCardRecord vipCardRecord = new VipCardRecord();
-        vipCardRecord.setUserId(orderDetailVo.getUserId());
-        vipCardRecord.setOrderNo(orderDetailVo.getOrderNo());
-        vipCardRecord.setSubOrderNo(orderDetailVo.getSubOrderNo());
-        vipCardRecord.setVipCardId(detail.getId());
-        vipCardRecord.setMsgStatus(0);
-
-        if (null == membershipEndTime || membershipEndTime.before(new Date())) {
-            //没有会员、会员已过期
-            studentVo.setMembershipStartTime(now.getTime());
+        VipCardRecord vipCardRecord = vipCardRecordService.buildVipCardRecordByOrderDetail(orderDetailVo);
+
+        if (null == studentVo.getMembershipEndTime() || studentVo.getMembershipEndTime().before(new Date())) {
+            //没有会员、会员已过期 会员卡生效时间为当前时间
+            studentVo.setMembershipStartTime(vipCardRecord.getStartTime());
+            studentVo.setMembershipEndTime(vipCardRecord.getEndTime());
         } else {
         } else {
-            now.setTime(studentVo.getMembershipEndTime());
-        }
-        vipCardRecord.setStartTime(now.getTime());
-
-        if (PeriodEnum.DAY.equals(detail.getPeriod())) {
-            now.add(Calendar.DAY_OF_MONTH, 1);
-        } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
-            now.add(Calendar.MONTH, 1);
-        } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
-            now.add(Calendar.MONTH, 3);
-        } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
-            now.add(Calendar.MONTH, 6);
-        } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
-            now.add(Calendar.YEAR, 1);
+            studentVo.setMembershipEndTime(vipCardRecord.getEndTime());
         }
         }
-
-        vipCardRecord.setEndTime(now.getTime());
-        studentVo.setMembershipEndTime(now.getTime());
         studentVo.setMemberRankSettingId(1l);
         studentVo.setMemberRankSettingId(1l);
         studentVo.setUpdateTime(new Date());
         studentVo.setUpdateTime(new Date());
         studentService.updateById(studentVo);
         studentService.updateById(studentVo);
         //会员购买记录入库
         //会员购买记录入库
         vipCardRecordService.save(vipCardRecord);
         vipCardRecordService.save(vipCardRecord);
-
         //会员购买消息推送
         //会员购买消息推送
         authSend(studentVo.getUserId(), studentVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN));
         authSend(studentVo.getUserId(), studentVo.getPhone(), DateUtil.format(vipCardRecord.getEndTime(), DateUtil.DEFAULT_PATTERN));
     }
     }
 
 
 
 
+
+
     // 发送会员购买消息推送
     // 发送会员购买消息推送
     private void authSend(Long userId, String phone, String param1) {
     private void authSend(Long userId, String phone, String param1) {
         Map<Long, String> receivers = new HashMap<>();
         Map<Long, String> receivers = new HashMap<>();

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

@@ -2,10 +2,15 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.MemberPriceSettingsDao;
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
-import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
-import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo;
+import com.yonge.cooleshow.biz.dal.vo.StudentVo;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -16,12 +21,8 @@ import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
 import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
 import com.yonge.cooleshow.biz.dal.dao.VipCardRecordDao;
-import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 
 
 @Service
 @Service
@@ -30,6 +31,14 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 
 
     @Autowired
     @Autowired
     private SysMessageService sysMessageService;
     private SysMessageService sysMessageService;
+    @Autowired
+    private MemberPriceSettingsDao memberPriceSettingsDao;
+    @Autowired
+    private StudentService studentService;
+    @Autowired
+    private MemberPriceSettingsService memberPriceSettingsService;
+    @Autowired
+    private UserOrderDetailService orderDetailService;
 
 
     @Override
     @Override
     public VipCardRecordVo detail(Long orderDetilId) {
     public VipCardRecordVo detail(Long orderDetilId) {
@@ -39,13 +48,71 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
     @Override
     @Override
     public VipCardRecordVo detail(Long orderDetilId, Long userId) {
     public VipCardRecordVo detail(Long orderDetilId, Long userId) {
         VipCardRecordVo detail = baseMapper.detail(orderDetilId, userId);
         VipCardRecordVo detail = baseMapper.detail(orderDetilId, userId);
-        if(null == detail){
+        if (null == detail && null != userId) {
+            detail = new VipCardRecordVo();
 
 
+            UserOrderDetailVo orderDetailVo = orderDetailService.detail(orderDetilId);
+            VipCardRecord vipCardRecord = buildVipCardRecordByOrderDetail(orderDetailVo);
+            if (null == vipCardRecord) {
+                return detail;
+            }
+            BeanUtils.copyProperties(vipCardRecord, detail);
+            MemberPriceSettings memberPrice = memberPriceSettingsDao.getMemberPriceByOrderDetilId(orderDetilId);
+            detail.setOriginalPrice(memberPrice.getOriginalPrice());
+            detail.setSalePrice(memberPrice.getSalePrice());
+            detail.setPeriod(memberPrice.getPeriod());
         }
         }
         return detail;
         return detail;
     }
     }
 
 
     @Override
     @Override
+    public VipCardRecord buildVipCardRecordByOrderDetail(UserOrderDetailVo orderDetailVo) {
+        if (null == orderDetailVo) {
+            return null;
+        }
+        MemberPriceSettingsVo detail = memberPriceSettingsService.detail(orderDetailVo.getBizId());
+        if (null == detail) {
+            return null;
+        }
+        StudentVo studentVo = studentService.detail(orderDetailVo.getUserId());
+        if (null == studentVo) {
+            return null;
+        }
+        //修改用户会员时长
+        Date membershipEndTime = studentVo.getMembershipEndTime();
+
+        VipCardRecord vipCardRecord = new VipCardRecord();
+        vipCardRecord.setUserId(orderDetailVo.getUserId());
+        vipCardRecord.setOrderNo(orderDetailVo.getOrderNo());
+        vipCardRecord.setSubOrderNo(orderDetailVo.getSubOrderNo());
+        vipCardRecord.setVipCardId(detail.getId());
+        vipCardRecord.setMsgStatus(0);
+
+        if (null == membershipEndTime || membershipEndTime.before(new Date())) {
+            //没有会员、会员已过期 会员卡生效时间为当前时间
+            vipCardRecord.setStartTime(new Date());
+        } else {
+            vipCardRecord.setStartTime(membershipEndTime);
+        }
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(vipCardRecord.getStartTime());
+
+        if (PeriodEnum.DAY.equals(detail.getPeriod())) {
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+        } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
+            cal.add(Calendar.MONTH, 1);
+        } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
+            cal.add(Calendar.MONTH, 3);
+        } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
+            cal.add(Calendar.MONTH, 6);
+        } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
+            cal.add(Calendar.YEAR, 1);
+        }
+        vipCardRecord.setEndTime(cal.getTime());
+        return vipCardRecord;
+    }
+
+    @Override
     public IPage<VipCardRecordVo> selectPage(IPage<VipCardRecordVo> page, VipCardRecordSearch query) {
     public IPage<VipCardRecordVo> selectPage(IPage<VipCardRecordVo> page, VipCardRecordSearch query) {
         return page.setRecords(baseMapper.selectPage(page, query));
         return page.setRecords(baseMapper.selectPage(page, query));
     }
     }
@@ -92,7 +159,6 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
 
 
     }
     }
 
 
-
     // 发送会员到期3天消息推送
     // 发送会员到期3天消息推送
     private void temporary3DaysSend(Long userId, String phone) {
     private void temporary3DaysSend(Long userId, String phone) {
         Map<Long, String> receivers = new HashMap<>();
         Map<Long, String> receivers = new HashMap<>();

+ 9 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MemberPriceSettingsMapper.xml

@@ -48,4 +48,13 @@
 	<select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo">
 	<select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.MemberPriceSettingsVo">
 		<include refid="selectSql"/>
 		<include refid="selectSql"/>
 	</select>
 	</select>
+
+    <select id="getMemberPriceByOrderDetilId"
+            resultType="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings">
+		SELECT
+			<include refid="baseColumns"/>
+		FROM user_order_detail d
+		left join member_price_settings t on d.biz_id_ = t.id_
+		where d.good_type_ = 'VIP' and  d.id_ = #{orderDetilId}
+	</select>
 </mapper>
 </mapper>

+ 6 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderDetailMapper.xml

@@ -48,14 +48,18 @@
 
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo">
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo">
         SELECT
         SELECT
-            <include refid="baseColumns"/>
+            <include refid="baseColumns"/>,
+               o.user_id_ as userId
         FROM user_order_detail t
         FROM user_order_detail t
+        left join user_order o on t.order_no_ = o.order_no_
         where t.id_ = #{id}
         where t.id_ = #{id}
     </select>
     </select>
     <select id="detailByOrderNo" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo">
     <select id="detailByOrderNo" resultType="com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo">
         SELECT
         SELECT
-            <include refid="baseColumns"/>
+            <include refid="baseColumns"/>,
+            o.user_id_ as userId
         FROM user_order_detail t
         FROM user_order_detail t
+        left join user_order o on t.order_no_ = o.order_no_
         where t.order_no_ = #{orderNo}
         where t.order_no_ = #{orderNo}
     </select>
     </select>
 
 

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

@@ -80,4 +80,8 @@
         and msg_status_ in (0,1)
         and msg_status_ in (0,1)
         order by end_time_ desc
         order by end_time_ desc
     </select>
     </select>
+    <select id="getMemberPriceByOrderDetilId"
+            resultType="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings">
+
+    </select>
 </mapper>
 </mapper>