回退用户余额|学习笔记

简介: 快速学习回退用户余额

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

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


回退用户余额


1、将优惠卷进行回退操作代码有一处需要进行修改在进行优惠卷回退中可能消息中没有优惠卷的id在直接回退时就会出现问题

@Autowired

private TradeCouponMapper couponMapper;

@Override

public void onMessage(MessageExt message) {

try {

//1.解析消息内容

String body = new String(message. getBody(),

charsetName: "UTF-8");

MQEntity mqEntity = JSON. parse0bject(body,

MQEntity.class);

Log. info("接收到消息");

if(mqEntity . getCouponId()! =nu11){

//2.查询优惠券信息

TradeCoupon coupon=couponMapper.

selectByPrimaryKey(mqEntity . getCouponId());

//3.更改优惠券状态

coupon. setUsedTime( null);

coupon. setIsUsed(ShopCode.SHOP_COUPON_UNUSED. getCode());

coupon. setorderId(null);

couponMapper . updateByPrimaryKey( coupon);

}

Log. info("回退优惠券成功");

} catch (UnsupportedEncodingException e) {

e. printStackTrace();

Log . error("回退优惠券失败");

}

2、用户余额的回退相对简单因为业务层已经提供 updateMoneyPaid 的方法方法中已经有扣减余额和回退余额所以只需要封装 userMoneyLog 对象提交过来让 updateMoneyPaid 进行处理

@slf4j

@Autowired

private IUserService userService;

@Override

public void onMessage (MessageExt messageExt) {

try {

//1.解析消息,进行异常的处理

String body = new String(messageExt . getBody(),

charsetName: "UTF-8");

MQEntity mqEntity = JSON. parseObject( body, MQEntity. class);

Log. Info(“接收到消息”);

//2.调用业务层进行余额修改设置当前余额的类型进行余额的回退调用业务层进行余额的回退打印日志余额回退成功如果出现异常余额回退失败

TradeUserMoneyLog userMoneyLog = new

TradeUserMoneyLog();

userMoneyLog . setUseMoney (mqEntity.

getUserMoney());

userMoneyLog . setMoneyLogType ( ShopCode . SHOP_ USER_ MONEY_ REFUND. getCode());

userMoneyLog. setUserId(mqEntity . getUserId());

userMoneyLog, setOrderId(mqEntity . getorderId());

userService .pdateMoneyPaid(userMoneyLog) ;

Log . info("余额回退成功");

}catch (UnsupportedEncodingException e){

e. printStackTrace();

Log.error("余额回退失败");

}

}

}

3、为了代码的健壮性如果当前用户的余额是空的就不需要进行回退所以进行判断

@slf4j

@Autowired

private IUserService userService;

@Override

public void onMessage (MessageExt messageExt) {

try {

//1.解析消息

String body = new String(messageExt . getBody(),

charsetName: "UTF-8");

MQEntity mqEntity = JSON. parseObject( body, MQEntity. class);

Log. Info(“接收到消息”);

if(mqEntity. getUserMoney()!=null && mqEntity .

getUserMoney(). compareTo(BigDecimal .ZERO)>0){

//2.调用业务层进行余额修改

TradeUserMoneyLog userMoneyLog = new

TradeUserMoneyLog();

userMoneyLog . setUseMoney (mqEntity.

getUserMoney());

userMoneyLog . setMoneyLogType ( ShopCode . SHOP_ USER_ MONEY_ REFUND. getCode());

userMoneyLog. setUserId(mqEntity . getUserId());

userMoneyLog, setOrderId(mqEntity . getorderId());

userService .pdateMoneyPaid(userMoneyLog) ;

Log . info("余额回退成功");

}catch (UnsupportedEncodingException e){

e. printStackTrace();

Log.error("余额回退失败");

}

}

}

相关文章
|
监控 数据可视化 定位技术
2024年最强看板工具大对比:哪款最适合公司团建旅游活动策划?
本文介绍了5款看板工具(板栗看板、Trello、Asana、Monday.com、ClickUp)及其在公司团建旅游策划中的应用,通过具体案例展示了如何利用这些工具高效管理活动的各个环节,包括目的地规划、任务分配、预算管理、日程安排、团队沟通与反馈等,旨在提升团队协作效率和活动策划质量。
2024年最强看板工具大对比:哪款最适合公司团建旅游活动策划?
|
机器学习/深度学习 人工智能 自然语言处理
AICG:认识你,真好
在这个科技飞速发展的时代,AIGC(人工智能生成内容)正以惊人的速度改变我们的生活和工作方式。AIGC通过学习大量数据,能够自动生成文本、图像、音频、视频等内容,提高内容生产的效率和质量,为文学创作、新闻媒体、广告营销、艺术设计、教育培训等领域带来巨大变革。它不仅降低了成本,还提供了更多创意和个性化服务,展现了科技的无限潜力。
|
机器学习/深度学习 自然语言处理 算法
机器学习核心:监督学习与无监督学习
本文深入解析了机器学习中的监督学习与无监督学习,涵盖理论基础、应用场景及典型算法实现,如线性回归、决策树、K均值聚类和主成分分析,并通过代码示例加深理解。适合初学者和进阶者阅读。
774 5
|
机器学习/深度学习 安全 物联网
智能时代下的数据安全:挑战与对策
本文深入探讨了在快速发展的信息技术背景下,数据安全面临的新挑战及应对策略。文章首先分析了当前数据泄露和滥用的风险,随后提出了一系列针对性的技术和管理措施,旨在增强个人和企业的数据防护能力。通过案例分析,本文揭示了数据保护的最佳实践,并对未来数据安全技术的发展方向进行了展望。
|
人工智能 搜索推荐 数据安全/隐私保护
别错过!2024年苹果iPhone AI革命:揭秘技术突破与未来蓝图
本文首发于公众号“AntDream”。2024年,苹果iPhone在技术创新方面展现了一系列亮点,包括Apple Intelligence集成、Siri的进化、系统范围的写作工具、图像生成能力、跨应用任务处理、隐私保护加强等。iOS 18带来了多项改进,如屏幕图标重新设计、新增卫星短信等功能。后续规划包括Apple Intelligence的推广、与其他AI模型合作、硬件发展、软件生态扩展、全球多语言支持等。苹果将继续优化用户体验和强化隐私保护,探索AI技术在健康监测、增强现实等领域的应用,持续引领智能手机领域的创新潮流。
859 1
|
人工智能 云栖大会 开发工具
2023云栖大会 | 阿里云推出智能编码助手通义灵码
10月31日,杭州云栖大会上,阿里云对外展示了一款可自动编写代码的 AI 助手,在编码软件的对话窗口输入“帮我用 python 写一个飞机游戏”,短短几秒,这款名为“通义灵码”的 AI 助手就自动生成了100多行代码,点击运行后一个充满儿时回忆的“飞机大战”游戏就成功跑起来了。
1823 19
|
Serverless 调度 Python
TemporalKit是一个用于Python的异步任务调度库
TemporalKit是一个用于Python的异步任务调度库
461 2
|
关系型数据库 MySQL 数据安全/隐私保护
mysql8.0版本skip-grant-tables出现的新问题
mysql8.0版本skip-grant-tables出现的新问题MySQL 初始化 mysqld --initialize 的时候会有密码,就这个样子, 可是毕竟总有人跟我一样,不熟悉安装过程,没有注意这一密码这一项,导致你现在不知道密码的尴尬处境,或者说你是正常用了某一天脑子短路忘了密码, 那...
2942 0
|
存储 SQL NoSQL
轨迹数据处理“小钢炮”,Lindorm时空引擎Ganos实测
本文在Lindorm Ganos中对常用的时空场景进行测试,用过程和实际数据展示Lindorm Ganos具备的能力和特性
轨迹数据处理“小钢炮”,Lindorm时空引擎Ganos实测
|
Java 应用服务中间件 Docker
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
618 0