|
@@ -1,11 +1,20 @@
|
|
|
package com.qmrb.system.service.impl;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import com.qmrb.system.common.util.AesUtils;
|
|
|
+import com.qmrb.system.framework.security.CaConstants;
|
|
|
+import com.qmrb.system.framework.security.util.SecurityUtils;
|
|
|
+import com.qmrb.system.pojo.entity.Contract;
|
|
|
+import com.qmrb.system.pojo.entity.SysUser;
|
|
|
+import com.qmrb.system.service.IContractService;
|
|
|
+import com.qmrb.system.service.SysUserService;
|
|
|
+import com.qmrb.system.service.UserService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -19,6 +28,7 @@ import com.qmrb.system.pojo.query.CouponQuery;
|
|
|
import com.qmrb.system.mapper.CouponMapper;
|
|
|
import com.qmrb.system.service.ICouponService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
@@ -26,6 +36,8 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import jakarta.validation.Valid;
|
|
|
|
|
|
+import javax.swing.*;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 优惠券表 服务实现类
|
|
@@ -39,6 +51,15 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
|
|
|
|
|
@Autowired
|
|
|
private CouponConverter converter;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IContractService contractService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserService userService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RedisTemplate redisTemplate;
|
|
|
|
|
|
/**分页查询
|
|
|
* */
|
|
@@ -68,6 +89,38 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
|
|
|
* */
|
|
|
@Override
|
|
|
public CouponForm saveForm(@Valid CouponForm form) {
|
|
|
+
|
|
|
+ // 校验是否已领取过优惠券
|
|
|
+ List<Coupon> list = this.list(new LambdaQueryWrapper<Coupon>().eq(Coupon::getToUserId, SecurityUtils.getUserId()).eq(Coupon::getGoodsId, form.getGoodsId()));
|
|
|
+ Assert.isTrue(CollectionUtil.isEmpty(list), "已存在领取的优惠券");
|
|
|
+
|
|
|
+
|
|
|
+ String contractIdEnc = (String) redisTemplate.opsForValue().get(form.getContractIdEnc());
|
|
|
+ Assert.isTrue(StrUtil.isNotBlank(contractIdEnc), "二维码已过期");
|
|
|
+ Long contractId = Long.parseLong(contractIdEnc);
|
|
|
+ form.setContractId(contractId);
|
|
|
+ // 根据协议id生成优惠券
|
|
|
+ if(form.getContractId() != null){
|
|
|
+ Contract contract = contractService.getById(form.getContractId());
|
|
|
+ Assert.isTrue(contract != null, "关联协议数据不存在");
|
|
|
+ SysUser user = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getContractId, form.getContractId()));
|
|
|
+ Assert.isTrue(user != null, "关联协议用户数据不存在");
|
|
|
+ form.setFromUserId(user.getId());
|
|
|
+ form.setToUserId(SecurityUtils.getUserId());
|
|
|
+ form.setScenes(1);//使用场景(1-停车场, 2-其他场景
|
|
|
+ // 1 扫码抵用金额 2扫码抵用时长
|
|
|
+ if(contract.getScanType().equals("1")){
|
|
|
+ form.setDenomination(contract.getDiscountAmount());
|
|
|
+ form.setCouponType(1);//优惠券类型(1-金额券, 2-时长券)
|
|
|
+ }else if(contract.getScanType().equals("2")){
|
|
|
+ form.setDenomination(contract.getDiscountMinute() != null ? new BigDecimal(contract.getDiscountMinute()) : BigDecimal.ZERO);
|
|
|
+ form.setCouponType(2);//优惠券类型(1-金额券, 2-时长券)
|
|
|
+ }
|
|
|
+ form.setEffectiveTime(System.currentTimeMillis());
|
|
|
+ form.setExpireTime(contract.getEndDate().getTime());
|
|
|
+ form.setStatus(0);//状态(0-已使用, 1-未使用, 2-锁定)
|
|
|
+
|
|
|
+ }
|
|
|
// 实体对象转换 form->entity
|
|
|
Coupon entity = converter.form2Entity(form);
|
|
|
// 持久化
|