From 0f2843a5f33c3319f5d95ca76c458da53728431e Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 06 三月 2024 16:28:42 +0800
Subject: [PATCH] 新增t_member_coupon表分表配置
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceConfiguration.java | 85 ++++++++++++++
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceHealthConfig.java | 65 ++++++++++
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java | 10 +
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 118 +++++++++----------
ruoyi-modules/ruoyi-member/pom.xml | 26 +++-
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java | 2
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java | 2
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java | 2
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java | 2
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java | 2
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java | 2
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java | 2
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java | 4
13 files changed, 246 insertions(+), 76 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java
index dca56f5..272b215 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerVerifyMemberCouponDto.java
@@ -14,7 +14,7 @@
public class MerVerifyMemberCouponDto {
@ApiModelProperty(value = "优惠券id")
- private String couponId;
+ private Long couponId;
@ApiModelProperty(value = "商户id")
private Long shopId;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java
index 3abf2b4..5330316 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberCoupon.java
@@ -29,7 +29,7 @@
private static final long serialVersionUID = 1L;
@TableId(value = "id")
- private String id;
+ private Long id;
/**
* 删除标记
*/
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java
index 5ce967a..6fdca44 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerVerifyCouponGetVo.java
@@ -18,7 +18,7 @@
public class MerVerifyCouponGetVo {
@ApiModelProperty(value = "优惠券id")
- private String memberCouponId;
+ private Long memberCouponId;
@ApiModelProperty(value = "用户id")
private Long userId;
diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml
index 7179cae..57159f0 100644
--- a/ruoyi-modules/ruoyi-member/pom.xml
+++ b/ruoyi-modules/ruoyi-member/pom.xml
@@ -59,13 +59,7 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-datasource</artifactId>
</dependency>
-
- <!-- RuoYi Common DataScope -->
- <dependency>
- <groupId>com.ruoyi</groupId>
- <artifactId>ruoyi-common-datascope</artifactId>
- </dependency>
-
+
<!-- RuoYi Common Log -->
<dependency>
<groupId>com.ruoyi</groupId>
@@ -120,6 +114,24 @@
<artifactId>alibabacloud-dysmsapi20170525</artifactId>
<version>2.0.24</version>
</dependency>
+ <!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/sharding-jdbc-spring-boot-starter -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
+ <version>4.1.1</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>guava</artifactId>
+ <groupId>com.google.guava</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
index 727366a..bf279f3 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
@@ -7,6 +7,7 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
+import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
@@ -19,6 +20,7 @@
@EnableRyFeignClients
@SpringBootApplication
@EnableScheduling
+@EnableAsync
@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
public class RuoYiMemberApplication
{
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceConfiguration.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceConfiguration.java
new file mode 100644
index 0000000..f5fae5f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceConfiguration.java
@@ -0,0 +1,85 @@
+package com.ruoyi.member.config;
+
+import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.provider.AbstractDataSourceProvider;
+import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.util.Map;
+
+/**
+ * @author mitao
+ * @date 2024/3/2
+ */
+@Configuration
+@AutoConfigureBefore({DynamicDataSourceAutoConfiguration.class,
+ SpringBootConfiguration.class})
+public class DataSourceConfiguration {
+ /**
+ * 分表数据源名称
+ */
+ private static final String SHARDING_DATA_SOURCE_NAME = "sharding";
+
+ /**
+ * 动态数据源配置项
+ */
+ @Autowired
+ private DynamicDataSourceProperties properties;
+
+ /**
+ * shardingjdbc有四种数据源,需要根据业务注入不同的数据源
+ *
+ * <p>1. 未使用分片, 脱敏的名称(默认): shardingDataSource;
+ * <p>2. 主从数据源: masterSlaveDataSource;
+ * <p>3. 脱敏数据源:encryptDataSource;
+ * <p>4. 影子数据源:shadowDataSource
+ *
+ */
+ @Resource
+ private DataSource shardingSphereDataSource;
+
+ @Bean
+ public DynamicDataSourceProvider dynamicDataSourceProvider()
+ {
+ Map<String, DataSourceProperty> datasourceMap = properties.getDatasource();
+ return new AbstractDataSourceProvider()
+ {
+ @Override
+ public Map<String, DataSource> loadDataSources()
+ {
+ Map<String, DataSource> dataSourceMap = createDataSourceMap(datasourceMap);
+ // 将 shardingjdbc 管理的数据源也交给动态数据源管理
+ dataSourceMap.put(SHARDING_DATA_SOURCE_NAME, shardingSphereDataSource);
+ return dataSourceMap;
+ }
+ };
+ }
+
+ /**
+ * 将动态数据源设置为首选的
+ * 当spring存在多个数据源时, 自动注入的是首选的对象
+ * 设置为主要的数据源之后,就可以支持shardingjdbc原生的配置方式了
+ */
+ @Primary
+ @Bean
+ public DataSource dataSource()
+ {
+ DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource();
+ dataSource.setPrimary(properties.getPrimary());
+ dataSource.setStrict(properties.getStrict());
+ dataSource.setStrategy(properties.getStrategy());
+ dataSource.setP6spy(properties.getP6spy());
+ dataSource.setSeata(properties.getSeata());
+ return dataSource;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceHealthConfig.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceHealthConfig.java
new file mode 100644
index 0000000..74ada05
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/DataSourceHealthConfig.java
@@ -0,0 +1,65 @@
+package com.ruoyi.member.config;
+
+
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration;
+import org.springframework.boot.actuate.health.AbstractHealthIndicator;
+import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator;
+import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadata;
+import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider;
+import org.springframework.boot.jdbc.metadata.HikariDataSourcePoolMetadata;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.StringUtils;
+
+import javax.sql.DataSource;
+import java.util.Map;
+
+@Configuration
+public class DataSourceHealthConfig {
+ /**
+ * 解决新版Spring中,健康健康检查用到 sharding jdbc 时,该组件没有完全实现MySQL驱动导致的问题.
+ */
+ @Bean
+ DataSourcePoolMetadataProvider dataSourcePoolMetadataProvider() {
+ return dataSource -> new NotAvailableDataSourcePoolMetadata();
+ }
+
+ /**
+ * 不可用的数据源池元数据.
+ */
+ private static class NotAvailableDataSourcePoolMetadata implements DataSourcePoolMetadata {
+ @Override
+ public Float getUsage() {
+ return null;
+ }
+
+ @Override
+ public Integer getActive() {
+ return null;
+ }
+
+ @Override
+ public Integer getMax() {
+ return null;
+ }
+
+ @Override
+ public Integer getMin() {
+ return null;
+ }
+
+ @Override
+ public String getValidationQuery() {
+ // 该字符串是适用于MySQL的简单查询语句,用于检查检查,其他数据库可能需要更换
+ return "select 1";
+ }
+
+ @Override
+ public Boolean getDefaultAutoCommit() {
+ return null;
+ }
+ }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
index 21acbc3..ba53bc4 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java
@@ -86,5 +86,5 @@
* @param shopId
* @return void
*/
- void sureMemberCoupon(@Param("memberCouponId")String memberCouponId,@Param("shopId")Long shopId);
+ void sureMemberCoupon(@Param("memberCouponId")Long memberCouponId,@Param("shopId")Long shopId);
}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
index fee79df..ebc1868 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -31,13 +31,13 @@
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteGoodsService;
import com.ruoyi.system.api.service.RemoteShopService;
-import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -432,7 +432,7 @@
coupon.setRelGoodsIds(relGoodsIds);
}
//判断是否指定用户
- List<Long> relUserIdList = null;
+ List<Long> relUserIdList;
if(coupon.getSendTarget()==5&&coupon.getRelationType()==1&&!mgtCouponEditDto.getRelUserIdList().isEmpty()){
relUserIdList = mgtCouponEditDto.getRelUserIdList();
List<CouponRelUser> couponRelUserList = new ArrayList<>();
@@ -448,10 +448,12 @@
}
couponRelUserService.saveBatch(couponRelUserList);
coupon.setRelUserIds(userIdSj.toString());
+ } else {
+ relUserIdList = null;
}
//处理优惠券发放
if(coupon.getSendFlag() == 0 && coupon.getSendType()==2&&coupon.getSendTimeType()==1){
- sendCoupon(coupon,relUserIdList);
+ CompletableFuture.runAsync(()->sendCoupon(coupon,relUserIdList));
coupon.setSendFlag(1);
this.saveOrUpdate(coupon);
}else{
@@ -467,7 +469,6 @@
* @param relUserIdList
* @return void
*/
- @Async
protected void sendCoupon(Coupon coupon, List<Long> relUserIdList){
//1.手动领取2.全部用户3.会员用户4非会员用户5自定义
Date nowTime = new Date();
@@ -507,14 +508,11 @@
MemberCoupon memberCoupon;
Integer sendTotal = 0;
Integer sendPerson = 0;
- String memberCouponId;
Integer sendUserTotal;
for(Long userId : userIdList){
if(coupon.getCouponFrom()==2){
for(int i=0;i<coupon.getLimitNumber();i++){
- memberCouponId = IdUtils.simpleUUID();
memberCoupon = new MemberCoupon();
- memberCoupon.setId(memberCouponId);
memberCoupon.setDelFlag(0);
memberCoupon.setCouponId(coupon.getCouponId());
memberCoupon.setUserId(userId);
@@ -564,56 +562,56 @@
memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
}
}else{
- memberCouponId = IdUtils.simpleUUID();
- memberCoupon = new MemberCoupon();
- memberCoupon.setId(memberCouponId);
- memberCoupon.setDelFlag(0);
- memberCoupon.setCouponId(coupon.getCouponId());
- memberCoupon.setUserId(userId);
- //memberCoupon.setShopId(coupon.getShopId());
- memberCoupon.setCouponType(coupon.getCouponType());
- if(coupon.getCouponType()==1){
- memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
- memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
- }else if(coupon.getCouponType()==2){
- memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
- }else if(coupon.getCouponType()==3){
- memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
- }else{
- memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
- }
- memberCoupon.setCouponStatus(coupon.getCouponStatus());
- memberCoupon.setCouponName(coupon.getCouponName());
- memberCoupon.setSendType(coupon.getSendType());
- memberCoupon.setSendTarget(coupon.getSendTarget());
- memberCoupon.setSendTimeType(coupon.getSendTimeType());
- memberCoupon.setSendTime(coupon.getSendTime());
- memberCoupon.setUseScope(coupon.getUseScope());
- if(memberCoupon.getUseScope()==2){
- memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
- }
- memberCoupon.setValidTimeType(coupon.getValidTimeType());
- memberCoupon.setValidStartTime(coupon.getValidStartTime());
- memberCoupon.setValidEndTime(coupon.getValidEndTime());
- memberCoupon.setValidDay(coupon.getValidDay());
- memberCoupon.setCouponFrom(coupon.getCouponFrom());
- memberCoupon.setReceiveTime(nowTime);
- //有效期处理1.时间段2.领取之日起
- if(coupon.getValidTimeType()==1){
- memberCoupon.setDeadlineTime(coupon.getValidEndTime());
- }else if(coupon.getValidTimeType()==2){
- memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay()));
- }
- memberCouponList.add(memberCoupon);
- sendTotal = sendTotal + 1;
- if(coupon.getSendType()==1){
- sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
- if(sendUserTotal!=null&&sendUserTotal>0){
+ for (Integer i = 0; i < coupon.getLimitNumber(); i++) {
+ memberCoupon = new MemberCoupon();
+ memberCoupon.setDelFlag(0);
+ memberCoupon.setCouponId(coupon.getCouponId());
+ memberCoupon.setUserId(userId);
+ //memberCoupon.setShopId(coupon.getShopId());
+ memberCoupon.setCouponType(coupon.getCouponType());
+ if(coupon.getCouponType()==1){
+ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+ memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+ }else if(coupon.getCouponType()==2){
+ memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+ }else if(coupon.getCouponType()==3){
+ memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
}else{
- sendPerson = sendPerson + 1;
+ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
}
+ memberCoupon.setCouponStatus(coupon.getCouponStatus());
+ memberCoupon.setCouponName(coupon.getCouponName());
+ memberCoupon.setSendType(coupon.getSendType());
+ memberCoupon.setSendTarget(coupon.getSendTarget());
+ memberCoupon.setSendTimeType(coupon.getSendTimeType());
+ memberCoupon.setSendTime(coupon.getSendTime());
+ memberCoupon.setUseScope(coupon.getUseScope());
+ if(memberCoupon.getUseScope()==2){
+ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+ }
+ memberCoupon.setValidTimeType(coupon.getValidTimeType());
+ memberCoupon.setValidStartTime(coupon.getValidStartTime());
+ memberCoupon.setValidEndTime(coupon.getValidEndTime());
+ memberCoupon.setValidDay(coupon.getValidDay());
+ memberCoupon.setCouponFrom(coupon.getCouponFrom());
+ memberCoupon.setReceiveTime(nowTime);
+ //有效期处理1.时间段2.领取之日起
+ if(coupon.getValidTimeType()==1){
+ memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+ }else if(coupon.getValidTimeType()==2){
+ memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay()));
+ }
+ memberCouponList.add(memberCoupon);
+ sendTotal = sendTotal + 1;
+ if(coupon.getSendType()==1){
+ sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
+ if(sendUserTotal!=null&&sendUserTotal>0){
+ }else{
+ sendPerson = sendPerson + 1;
+ }
+ }
+ memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
}
- memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
}
}
memberCouponService.saveBatch(memberCouponList);
@@ -663,12 +661,9 @@
MemberCoupon memberCoupon;
Integer sendTotal = 0;
Integer sendPerson = 0;
- String memberCouponId;
Integer sendUserTotal;
for(Long userId : userIdList){
- memberCouponId = IdUtils.simpleUUID();
memberCoupon = new MemberCoupon();
- memberCoupon.setId(memberCouponId);
memberCoupon.setDelFlag(0);
memberCoupon.setCouponId(coupon.getCouponId());
memberCoupon.setUserId(userId);
@@ -1253,8 +1248,9 @@
// 根据优惠券数量生成会员优惠券列表
for(int i=0;i<birthdayGiftSendDto.getCouponNumber();i++){
memberCoupon = new MemberCoupon();
+ //TODO
memberCouponId = IdUtils.simpleUUID();
- memberCoupon.setId(memberCouponId);
+ //memberCoupon.setId(memberCouponId);
memberCoupon.setDelFlag(0);
memberCoupon.setCouponId(couponId);
memberCoupon.setUserId(userId);
@@ -1425,8 +1421,8 @@
}
//生成用户优惠券
MemberCoupon memberCoupon = new MemberCoupon();
- String memberCouponId = IdUtils.simpleUUID();
- memberCoupon.setId(memberCouponId);
+ //String memberCouponId = IdUtils.simpleUUID();
+ //memberCoupon.setId(memberCouponId);
memberCoupon.setDelFlag(0);
memberCoupon.setCouponId(couponId);
memberCoupon.setUserId(userId);
@@ -1466,8 +1462,8 @@
}else if(coupon.getValidTimeType()==2){
memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay()));
}
- memberCouponService.save(memberCoupon);
memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
+ memberCouponService.insert(memberCoupon);
}
/**
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
index 5fbb003..c57f027 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.member.service.impl.member;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -42,6 +43,7 @@
* @since 2023-04-25
*/
@Service
+@DS("sharding")
public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
@Resource
@@ -356,7 +358,13 @@
* @return void
*/
@Override
- public void sureMemberCoupon(String memberCouponId,Long shopId){
+ public void sureMemberCoupon(Long memberCouponId, Long shopId){
memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
}
+
+ @Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
+ public void insert(MemberCoupon memberCoupon) {
+ this.baseMapper.insert(memberCoupon);
+ }
}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
index c2b7b28..b403ce4 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -116,5 +116,7 @@
* @param shopId
* @return void
*/
- void sureMemberCoupon(String memberCouponId,Long shopId);
+ void sureMemberCoupon(Long memberCouponId,Long shopId);
+
+ void insert(MemberCoupon memberCoupon);
}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
index 7ef0330..3084569 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
@@ -135,7 +135,7 @@
* 用户优惠券id
*/
@TableField("member_coupon_id")
- private String memberCouponId;
+ private Long memberCouponId;
@TableField("sure_num")
private Integer sureNum;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java
index 03900a8..e1118d5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyCouponVo.java
@@ -28,7 +28,7 @@
private String userMobile;
@ApiModelProperty(value = "优惠券id")
- private String memberCouponId;
+ private Long memberCouponId;
@ApiModelProperty(value = "优惠券名称")
private String couponName;
--
Gitblit v1.7.1