Browse Source

Merge remote-tracking branch 'origin/cloud_teacher_active_2021_09' into cloud_teacher_active_2021_09

zouxuan 3 years ago
parent
commit
132309ee31

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysCouponCodeDao.java

@@ -10,6 +10,8 @@ import java.util.Map;
 
 public interface SysCouponCodeDao extends BaseDAO<Long, SysCouponCode> {
 
+    int batchInsert(@Param("couponCodes") List<SysCouponCode> couponCodes);
+
     /**
      * @describe 统计指定用户指定优惠券的数量
      * @author Joburgess

+ 16 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
@@ -47,13 +48,17 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 	@Override
 	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public boolean exchangeCoupon(Integer userId, Integer couponId, Long paymentOrderId, Integer exchangeNum) {
-		if(Objects.isNull(userId)||Objects.isNull(couponId)||Objects.isNull(paymentOrderId)){
+		if(Objects.isNull(userId)||Objects.isNull(couponId)||Objects.isNull(paymentOrderId)||Objects.isNull(exchangeNum)){
 			throw new BizException("领取失败");
 		}
+		if(exchangeNum<=0){
+			return true;
+		}
 		SysCoupon sysCoupon = sysCouponDao.lockCoupon(couponId);
 		Date now = new Date();
 		//如果优惠券不存在,或者已停用,或者不在领取有效期内,或者已消耗完,则此优惠券无效
-		boolean invalid = Objects.isNull(sysCoupon)||0==sysCoupon.getStatus()||now.compareTo(sysCoupon.getStartDate())<0||now.compareTo(sysCoupon.getEndDate())>0||(sysCoupon.getStockCount()!=-1&&sysCoupon.getConsumeNum()>=sysCoupon.getStockCount());
+		boolean invalid = Objects.isNull(sysCoupon)||0==sysCoupon.getStatus()||now.compareTo(sysCoupon.getStartDate())<0||now.compareTo(sysCoupon.getEndDate())>0;
+		invalid = invalid || sysCoupon.getStockCount()!=-1&&sysCoupon.getConsumeNum()>=sysCoupon.getStockCount()&&(sysCoupon.getStockCount()-sysCoupon.getConsumeNum()<exchangeNum);
 		if(invalid){
 			throw new BizException("无效优惠券");
 		}
@@ -63,7 +68,7 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 		}
 		if(sysCoupon.getLimitExchangeNum()!=-1){
 			int userUserNum = sysCouponCodeDao.countWithUserAndCoupon(userId, couponId);
-			invalid = userUserNum>=sysCoupon.getLimitExchangeNum();
+			invalid = (userUserNum + exchangeNum)>sysCoupon.getLimitExchangeNum();
 		}
 		//如果用户使用数量超过优惠券限制则领取无效
 		if(invalid){
@@ -73,7 +78,6 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 		sysCouponCode.setUserId(userId);
 		sysCouponCode.setCouponId(couponId);
 		sysCouponCode.setPaymentOrderId(paymentOrderId);
-		sysCouponCode.setCode(String.valueOf(idGeneratorService.generatorId("coupon")));
 		sysCouponCode.setUsageStatus(0);
 		switch (sysCoupon.getEffectiveType()){
 			case DAYS:
@@ -87,7 +91,14 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 			default:
 				throw new BizException("无效优惠券", sysCoupon.getLimitExchangeNum());
 		}
-		sysCouponCodeDao.insert(sysCouponCode);
+		List<SysCouponCode> couponCodes = new ArrayList<>();
+		for (int i = 0; i < exchangeNum; i++) {
+			SysCouponCode couponCode = new SysCouponCode();
+			BeanUtils.copyProperties(sysCouponCode, couponCode);
+			couponCode.setCode(String.valueOf(idGeneratorService.generatorId("coupon")));
+			couponCodes.add(couponCode);
+		}
+		sysCouponCodeDao.batchInsert(couponCodes);
 		sysCoupon.setConsumeNum(new AtomicInteger(sysCoupon.getConsumeNum()).incrementAndGet());
 		if(sysCoupon.getWarningStatus()==0&&sysCoupon.getStockCount()!=-1&&sysCoupon.getStockCount()-sysCoupon.getConsumeNum()<sysCoupon.getWarningStockNum()){
 			sysCouponService.stockWarning(sysCoupon.getId(), sysCoupon.getName());

+ 12 - 2
mec-biz/src/main/resources/config/mybatis/SysCouponCodeMapper.xml

@@ -55,12 +55,22 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO sys_coupon_code (id_,coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
+		INSERT INTO sys_coupon_code (coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
 		                             payment_order_id_,create_time_,update_time_)
-							 VALUES(#{id},#{couponId},#{code},#{usageStatus},#{userId},#{usedTime},#{useStartDate},#{useDeadlineDate},
+							 VALUES(#{couponId},#{code},#{usageStatus},#{userId},#{usedTime},#{useStartDate},#{useDeadlineDate},
 									#{paymentOrderId},NOW(),NOW())
 	</insert>
 
+	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.SysCouponCode" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO sys_coupon_code (coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
+		payment_order_id_,create_time_,update_time_)
+		VALUE
+		<foreach collection="couponCodes" item="couponCode" separator=",">
+			(#{couponCode.couponId},#{couponCode.code},#{couponCode.usageStatus},#{couponCode.userId},#{couponCode.usedTime},#{couponCode.useStartDate},#{couponCode.useDeadlineDate},
+			#{couponCode.paymentOrderId},NOW(),NOW())
+		</foreach>
+	</insert>
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysCouponCode">
 		UPDATE sys_coupon_code

+ 1 - 2
mec-student/src/main/java/com/ym/mec/student/controller/SysCouponCodeController.java

@@ -25,8 +25,7 @@ public class SysCouponCodeController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
-	@PreAuthorize("@pcs.hasPermissions('sysCouponCode/queryPage')")
+	@RequestMapping(value = "queryPage")
 	public HttpResponseResult queryPage(SysCouponCodeQueryInfo queryInfo) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysCouponCodeController.java

@@ -25,7 +25,7 @@ public class SysCouponCodeController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
+	@RequestMapping(value = "queryPage")
 	@PreAuthorize("@pcs.hasPermissions('sysCouponCode/queryPage')")
 	public HttpResponseResult queryPage(SysCouponCodeQueryInfo queryInfo) {
 		return succeed(sysCouponCodeService.querySysCouponUseList(queryInfo));

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysCouponController.java

@@ -97,7 +97,7 @@ public class SysCouponController extends BaseController {
 	}
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
+	@RequestMapping(value = "queryPage")
 	@PreAuthorize("@pcs.hasPermissions('sysCoupon/queryPage')")
 	public HttpResponseResult queryPage(SysCouponQueryInfo queryInfo) {
 		return succeed(sysCouponService.queryPage(queryInfo));