更新优惠卷|学习笔记

简介: 快速学习更新优惠卷

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)更新优惠卷】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12419


更新优惠卷

内容介绍:

一、方法介绍

二、接口实现


一、方法介绍

确认订单的第四步:扣减优惠券。

扣减优惠券,就是当用户的订单使用了优惠券的话,将这个优惠券查询出来,并把它的状态设置为使用,然后将时间以及当前的订单id进行添加,所以扣减优惠卷本质上是一个保存操作。

下面是扣减优惠卷的一个方法:

输入:

updateCouponStatus(order),其中 order 是订单对象

下面封装使用优惠券的方法:

TradeCouponcoupon=

couponService.findOne(order.getCoupon在这里,若用户没有优惠卷,那该用户就无法使用,所以要事先判断用户是否有优惠卷,

输入代码:

if(order.getCouponId ( ) !=null);//判断{

TradeCoupon coupon =

couponService.findOne(order.getCouponId());   //对象查询

coupon.setOrderId( order.getOrderId());  //设置当前订单 id

coupon.setIsUsed(Shopcode.SHOP_COUPON_ISUSED.getCode()); //设置优惠卷使用状态

coupon.setUsedTime(new Date());  //设置使用时间

}

image.png

只有 coupounId 不等于空,才有必要继续下面的操作。封装优惠券的对象,并将信息设置好,然后提交到 coupoun-service 这个微服务当中去做更新操作。

首先将 coupon 对象查询出来,查询出来之后,设置当前的订单的 ID,然后设置我们的优惠券的一个使用状态,然后设置当前的使用时间。

这些信息设置完成后,就可以调用 coupon-service 的微服务去更新优惠卷状态。

在这个地方我们去添加一个更新优惠券状态的注释。

然后,输入代码:

Resultresult=

couponService.updateCouponstatus(coupon);//传递对象if(result.getSuccess().equals(ShopCode.SHOP_FAIL.getSuccess()))//  判断状态    {

castException.cast(shopcode.SHoP_COUPON_USE_FAIL );    //抛出异常

}

log.info("订单: "+order.getorderId()+",使用优惠券");   //输出信息

用代码:

couponService.updateCouponstatus(coupon)把 coupon 的对象传递过去。

然后在前面添加 Result result =  来接收返回值。然后判断,如果优惠卷状态等于异常或者错误了。就抛出一个异常,代表当前更新状态失败。如果没有问题,输出一个信息,就是使用优惠券。


二、接口实现

下面创建接口方法,

image.png

点击 Create method’updateCouponstatus 后显示以下页面

image.png

上图就是我们的方法, changeCouponstatus 这个方法是没有用的,需要删除。

updateCouponstatus 就是更新优惠券状态的方法。

TradeCoupon findOne 是根据Id查询优惠券对象的方法。

下面我们来实现接口,根据下图操作:

image.png

点击  Java Class,把这个类放在  impl.CouponServicelmpl 中,然后会显示:

image.png

点击确认,显示以下页面:

image.png

在这里去实现 ICouponService 的接口,先写上注解啊,在注解里接口的 class 也就是我们的服务的名字。

输入代码:

package com. itheima. shop.service.impl;

Import com.alibaba.dubbo.config.annotation.Service;

import com. itheima. api.ICouponService;

import org.springframework.stereotype.Component;

@component

@service(interfaceclass = Icouponservice.class)//注解

publis.siass.op9nsecviseImpl..implements. .Icouponsecvice{}

完整代码如下:

image.png

然后点击 Implement methods:

image.png

然后会显示:

image.png

所以实现了这个接口之后,它让我们把这两个方法进行一个重写。

查询优惠卷 id 方法重写:

输入代码:

@Autowired

private TradecouponMapper couponMapper;

@override

public Tradecoupon findone(Long coupouId) i

if(coupouId==null)   //判断ID是否为空{

castException.cast(Shopcode.SHOP_REQUEST_PARAMETER_VALID); //抛出异常

}

return couponMapper.selectByPrimaryKey(coupourd);

}

首先要做一个判断,如果当前优惠卷的 couponId 为空。那么当前参数非法,如果没有问题,我们在这里注入的 couponMapper。注入进来之后,将这个逐件传递回去。查询出来当前优惠券的对象。

更新优惠券状态重写:

依然要做判断,首先对象跟 ID 不能为空,如果都为空,就告诉他当前参数非法,如果没有问题,要去通过 updateByPrimarykey 的方法去做一个更新。然后返回result。

代码如下:

public Result updateCouponStatus(TradeCoupon coupon) {

if(coupon==null||coupon.getCouponId()==null)//判断

{

castException.cast(Shopcode.SHOP_REQUEST_PARAMETER_VALID);//通知参数非法

couponMapper.updateByPrimaryKey(coupon);//更新

return new Result(ShopCode.SHOP__uccEss.getSuccess(),

shopCode .SHOP_SUCCESS.getMessage());//返回

这是更新优惠卷的服务端,服务端写完之后返回到订单。

相关文章
|
6月前
|
NoSQL Redis
淘东电商项目(75) -秒杀系统(用户操作频率限制)
淘东电商项目(75) -秒杀系统(用户操作频率限制)
31 0
|
8月前
|
Android开发 Python
简单步骤比别人抢红包quickly一步
简单步骤比别人抢红包quickly一步
|
11月前
|
算法 Python
算法创作|模拟商品加入购物车并结算价钱问题解决方法
算法创作|模拟商品加入购物车并结算价钱问题解决方法
74 0
算法创作|模拟商品加入购物车并结算价钱问题解决方法
|
消息中间件 RocketMQ 开发者
更新余额1|学习笔记
快速学习更新余额1
61 0
更新余额1|学习笔记
|
消息中间件 RocketMQ 开发者
回退优惠券|学习笔记
快速学习回退优惠券
47 0
回退优惠券|学习笔记
|
消息中间件 Java 数据库
更新余额2 |学习笔记
快速学习更新余额2
81 0
更新余额2 |学习笔记
|
消息中间件 缓存 NoSQL
失效问题处理:模拟获取优惠券| 学习笔记
快速学习失效问题处理:模拟获取优惠券。
138 0
失效问题处理:模拟获取优惠券| 学习笔记
|
消息中间件 RocketMQ 开发者
下单问题分析及解决方式|学习笔记
快速学习下单问题分析及解决方式
115 0
下单问题分析及解决方式|学习笔记
|
消息中间件 RocketMQ 开发者
下单基本流程小结|学习笔记
快速学习下单基本流程小结
94 0
|
消息中间件 RocketMQ 开发者
下单异常问题演示|学习笔记
快速学习下单异常问题演示
77 0
下单异常问题演示|学习笔记