Ver código fonte

活动加类型

刘俊驰 7 meses atrás
pai
commit
708744c152

+ 14 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/MemberPriceSettingsController.java

@@ -111,4 +111,18 @@ public class MemberPriceSettingsController extends BaseController {
 		}
 		return succeed(memberPriceSettingsService.getDiscount(userId));
 	}
+
+
+	@ApiOperation(value = "获取畅学卡")
+	@GetMapping("/getDiscount/detail/{orderDetilId}")
+	public HttpResponseResult<MemberPriceSettingsWrapper.UserDiscount> getDiscountByOrder(@PathVariable("orderDetilId") Long orderDetilId) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		Long userId = null;
+		if (user != null ){
+			userId = user.getId();
+		}
+		return succeed(memberPriceSettingsService.getDiscountByOrder(userId,orderDetilId));
+	}
+
+
 }

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

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import com.yonge.cooleshow.biz.dal.entity.DiscountCardRecord;
@@ -15,4 +16,5 @@ import com.yonge.cooleshow.biz.dal.entity.DiscountCardRecord;
 @Repository
 public interface DiscountCardRecordMapper extends BaseMapper<DiscountCardRecord> {
 
+    MemberPriceSettings detail(@Param("userId") Long userId, @Param("orderDetilId") Long orderDetilId);
 }

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MemberPriceSettingsService.java

@@ -3,7 +3,6 @@ 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.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
@@ -115,7 +114,9 @@ public interface MemberPriceSettingsService extends IService<MemberPriceSettings
     /**
      * 获取畅学卡信息
      *
-     * @param userId 用户id
+     * @param userId       用户id
      */
     MemberPriceSettingsWrapper.UserDiscount getDiscount(Long userId);
+
+    MemberPriceSettingsWrapper.UserDiscount getDiscountByOrder(Long userId, Long orderDetilId);
 }

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

@@ -14,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MemberPriceSettingsSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.*;
+import com.yonge.cooleshow.biz.dal.mapper.DiscountCardRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
@@ -28,7 +29,6 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
-import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,7 +38,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -69,6 +68,15 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
     @Autowired
     private UserOrderDao userOrderDao;
 
+    @Autowired
+    private DiscountCardRecordMapper discountCardRecordMapper;
+
+    @Autowired
+    private UserOrderDetailService orderDetailService;
+
+    @Autowired
+    private MemberPriceSettingsService memberPriceSettingsService;
+
     @Override
     public MemberPriceSettingsVo detail(Long id) {
         return baseMapper.detail(id);
@@ -346,6 +354,83 @@ public class MemberPriceSettingsServiceImpl extends ServiceImpl<MemberPriceSetti
 
     }
 
+    @Override
+    public MemberPriceSettingsWrapper.UserDiscount getDiscountByOrder(Long userId, Long orderDetilId) {
+        MemberPriceSettingsWrapper.UserDiscount result = null;
+        MemberPriceSettings detail = discountCardRecordMapper.detail(userId,orderDetilId);
+        if (detail == null && null != userId) {
+            detail = new MemberPriceSettings();
+            UserOrderDetailVo orderDetailVo = orderDetailService.detail(orderDetilId);
+
+            if (null == orderDetailVo) {
+                return null;
+            }
+            detail = memberPriceSettingsService.detail(orderDetailVo.getBizId());
+            if (null == detail) {
+                return null;
+            }
+            result = JSON.parseObject(JSON.toJSONString(detail), MemberPriceSettingsWrapper.UserDiscount.class);
+            // 按时间区分 个数
+            Integer timeNum = orderDetailVo.getGoodNum();
+            String periodType = null;
+
+            if (PeriodEnum.DAY.equals(detail.getPeriod())) {
+                periodType = PeriodEnum.DAY.getCode();
+            } else if (PeriodEnum.MONTH.equals(detail.getPeriod())) {
+                periodType = PeriodEnum.MONTH.getCode();
+            } else if (PeriodEnum.QUARTERLY.equals(detail.getPeriod())) {
+                timeNum = timeNum * 3;
+                periodType = PeriodEnum.MONTH.getCode();
+            } else if (PeriodEnum.YEAR_HALF.equals(detail.getPeriod())) {
+                timeNum = timeNum * 6;
+                periodType = PeriodEnum.MONTH.getCode();
+            } else if (PeriodEnum.YEAR.equals(detail.getPeriod())) {
+                periodType = PeriodEnum.YEAR.getCode();
+            } else {
+                periodType = PeriodEnum.PERPETUAL.getCode();
+            }
+
+
+            Student student = studentService.getById(userId);
+
+            Date startTime = student.getDiscountStartTime();
+
+
+            boolean flag = false;
+            if (startTime == null) {
+                startTime = new Date();
+                flag = true;
+            }
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(startTime);
+
+            if (PeriodEnum.DAY.getCode().equals(periodType)) {
+                cal.add(Calendar.DAY_OF_MONTH, timeNum);
+            } else if (PeriodEnum.MONTH.getCode().equals(periodType)) {
+                cal.add(Calendar.MONTH, timeNum);
+            } else if (PeriodEnum.YEAR.getCode().equals(periodType)) {
+                cal.add(Calendar.YEAR, timeNum);
+            }
+            Date endTime = cal.getTime();
+            if (flag) {
+                DateTime dateTime = DateTime.parse(DateUtil.format(startTime, "yyyy-MM-dd"))
+                        .plusDays(1)
+                        .withHourOfDay(0)
+                        .withMinuteOfHour(0)
+                        .withSecondOfMinute(0)
+                        .withMillisOfSecond(0);
+                startTime = dateTime.toDate();
+            }
+            result.setDiscountStartTime(startTime);
+            result.setDiscountEndTime(endTime);
+
+        } else {
+            result = JSON.parseObject(JSON.toJSONString(detail), MemberPriceSettingsWrapper.UserDiscount.class);
+        }
+
+        return result;
+    }
+
 
     @Override
     @Transactional

+ 12 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/DiscountCardRecordMapper.xml

@@ -28,6 +28,17 @@
         , t.ref_id_ AS refId
         , t.efficient_flag_ AS efficientFlag
         , t.send_msg_ AS sendMsg
-        </sql> 
+        </sql>
 
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.entity.MemberPriceSettings">
+        SELECT
+            s.*
+        FROM user_order_detail a
+        LEFT JOIN discount_card_record t ON a.order_no_ = t.order_no_ AND a.sub_order_no_ = t.sub_order_no_ AND t.display_flag_ = 1
+        LEFT JOIN member_price_settings s ON t.vip_card_id_ = s.id_
+        where a.id_ = #{orderDetilId}
+        <if test="userId != null">
+            and t.user_id_ = #{userId}
+        </if>
+    </select>
 </mapper>