|
@@ -1,25 +1,27 @@
|
|
|
package com.kym.service.admin.impl;
|
|
package com.kym.service.admin.impl;
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
+import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
|
+import com.kym.common.exception.BusinessException;
|
|
|
import com.kym.common.utils.CommUtil;
|
|
import com.kym.common.utils.CommUtil;
|
|
|
-import com.kym.common.utils.IDGenerator;
|
|
|
|
|
|
|
+import com.kym.entity.admin.ActivityStation;
|
|
|
import com.kym.entity.admin.Coupon;
|
|
import com.kym.entity.admin.Coupon;
|
|
|
import com.kym.entity.admin.queryParams.CouponQueryParam;
|
|
import com.kym.entity.admin.queryParams.CouponQueryParam;
|
|
|
-import com.kym.entity.admin.vo.CouponVo;
|
|
|
|
|
import com.kym.entity.admin.vo.UserCouponsIssueVo;
|
|
import com.kym.entity.admin.vo.UserCouponsIssueVo;
|
|
|
import com.kym.entity.common.PageBean;
|
|
import com.kym.entity.common.PageBean;
|
|
|
import com.kym.entity.miniapp.User;
|
|
import com.kym.entity.miniapp.User;
|
|
|
import com.kym.entity.miniapp.UserCoupon;
|
|
import com.kym.entity.miniapp.UserCoupon;
|
|
|
import com.kym.mapper.admin.CouponMapper;
|
|
import com.kym.mapper.admin.CouponMapper;
|
|
|
import com.kym.service.admin.ActivityService;
|
|
import com.kym.service.admin.ActivityService;
|
|
|
|
|
+import com.kym.service.admin.ActivityStationService;
|
|
|
import com.kym.service.admin.CouponService;
|
|
import com.kym.service.admin.CouponService;
|
|
|
import com.kym.service.miniapp.UserService;
|
|
import com.kym.service.miniapp.UserService;
|
|
|
import com.kym.service.mq.producer.UserCouponSender;
|
|
import com.kym.service.mq.producer.UserCouponSender;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
import java.time.LocalTime;
|
|
@@ -42,12 +44,15 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
|
|
private final UserService userService;
|
|
private final UserService userService;
|
|
|
|
|
|
|
|
private final ActivityService activityService;
|
|
private final ActivityService activityService;
|
|
|
|
|
+ private final ActivityStationService activityStationService;
|
|
|
|
|
|
|
|
private final UserCouponSender userCouponSender;
|
|
private final UserCouponSender userCouponSender;
|
|
|
|
|
|
|
|
- public CouponServiceImpl(UserService userService, @Lazy ActivityService activityService, UserCouponSender userCouponSender) {
|
|
|
|
|
|
|
+ public CouponServiceImpl(UserService userService, @Lazy ActivityService activityService,
|
|
|
|
|
+ ActivityStationService activityStationService, UserCouponSender userCouponSender) {
|
|
|
this.userService = userService;
|
|
this.userService = userService;
|
|
|
this.activityService = activityService;
|
|
this.activityService = activityService;
|
|
|
|
|
+ this.activityStationService = activityStationService;
|
|
|
this.userCouponSender = userCouponSender;
|
|
this.userCouponSender = userCouponSender;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -65,13 +70,20 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void issueCoupons(UserCouponsIssueVo userCouponsIssue) {
|
|
public void issueCoupons(UserCouponsIssueVo userCouponsIssue) {
|
|
|
|
|
+ var coupons = lambdaQuery().in(Coupon::getId, userCouponsIssue.getCouponIds()).list();
|
|
|
|
|
+
|
|
|
|
|
+ // 校验优惠券领取方式
|
|
|
|
|
+ if (coupons.stream().anyMatch(coupon -> coupon.getReceiveType().equals(Coupon.RECEIVE_TYPE_主动领取))) {
|
|
|
|
|
+ throw new BusinessException("包含限主动领取的优惠券");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
List<User> users = new ArrayList<>();
|
|
List<User> users = new ArrayList<>();
|
|
|
if (CommUtil.isNotEmptyAndNull(userCouponsIssue.getUserIds())) {
|
|
if (CommUtil.isNotEmptyAndNull(userCouponsIssue.getUserIds())) {
|
|
|
users = userService.lambdaQuery().in(User::getId, userCouponsIssue.getUserIds()).list();
|
|
users = userService.lambdaQuery().in(User::getId, userCouponsIssue.getUserIds()).list();
|
|
|
} else if (CommUtil.isNotEmptyAndNull(userCouponsIssue.getPhones())) {
|
|
} else if (CommUtil.isNotEmptyAndNull(userCouponsIssue.getPhones())) {
|
|
|
users = userService.lambdaQuery().in(User::getMobilePhone, userCouponsIssue.getPhones()).list();
|
|
users = userService.lambdaQuery().in(User::getMobilePhone, userCouponsIssue.getPhones()).list();
|
|
|
}
|
|
}
|
|
|
- var coupons = lambdaQuery().in(Coupon::getId, userCouponsIssue.getCouponIds()).list();
|
|
|
|
|
|
|
+
|
|
|
var activityList = activityService.listByIds(coupons.stream().map(Coupon::getActivityId).toList());
|
|
var activityList = activityService.listByIds(coupons.stream().map(Coupon::getActivityId).toList());
|
|
|
users.forEach(user -> {
|
|
users.forEach(user -> {
|
|
|
for (Coupon coupon : coupons) {
|
|
for (Coupon coupon : coupons) {
|
|
@@ -94,4 +106,21 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @DS("db-admin")
|
|
|
|
|
+ public PageBean<Coupon> listRightsAndCoupons(CouponQueryParam params) {
|
|
|
|
|
+ if (CommUtil.isEmptyOrNull(params.getStationId())) {
|
|
|
|
|
+ throw new BusinessException("请选择充电站点");
|
|
|
|
|
+ }
|
|
|
|
|
+ PageHelper.startPage(params.getPageNum(), params.getPageSize());
|
|
|
|
|
+ MPJLambdaWrapper<Coupon> wrapper = JoinWrappers.lambda(Coupon.class)
|
|
|
|
|
+ .selectAll(Coupon.class)
|
|
|
|
|
+ .leftJoin(ActivityStation.class, ActivityStation::getActivityId, Coupon::getActivityId)
|
|
|
|
|
+ .eq(Coupon::getReceiveType, Coupon.RECEIVE_TYPE_主动领取)
|
|
|
|
|
+ .eq(Coupon::getStatus, Coupon.STATUS_有效)
|
|
|
|
|
+ .eq(ActivityStation::getStationId, params.getStationId());
|
|
|
|
|
+ var res = this.selectJoinList(Coupon.class, wrapper);
|
|
|
|
|
+ return new PageBean<>(res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|