领取一张卡券需要做的判断
大概就是业务 | 作用 |
---|---|
检查用户的登录信息 | 未登录直接返回 |
卡券不是平台卡券且领取卡券需要关注店铺 | 查询卡券用户店铺表用户是否关注店铺 |
卡券剩余的张数要大于0 | get方法得到卡券剩余张数,小于0则直接返回 |
卡券展示的结束的时间要大于领取卡券时的时间 | 这个我没想到,认为的是只要能展示的卡券都是可以领取的;没有考虑到有人打开了页面,然后跑去干别的,再回来领卡券,这个时候,卡券可能已经过了结束时间了。 |
卡券允许领取的次数小于卡券用户表 | 传入userId和cardId,用聚集函数sum计算用户领取的这个卡券的张数,小于卡券允许领的张数 |
可以领取了 | 更新卡券列表,插入卡券用户表,插入卡券操作历史表是一个事务。 |
领取卡券需要做的判断,约束条件,大概就是大佬们说的业务流程吧。
积累敲代码经验
- select查表返回的类对象,要做非空判断;
null
不能调用equal方法,所以用"1"
调用equal方法,防止空指针异常。
if (null == tfFCardcoupons) {
resultMap.put("resultCode", "fail");
resultMap.put("resultMsg", "审核卡券失败,卡券信息不存在!");
return resultMap;
}
if (!"1".equals(tfFCardcoupons.getCardStatus())) {
resultMap.put("resultCode", "fail");
resultMap.put("resultMsg", "审核卡券失败,非审核状态不能审核!");
return resultMap;
}
- 看起来多余又不多余的判断:
我的理解:从页面上看到的卡券就是6状态的卡券,领取的卡券就一定是6状态的卡券
辉哥说:改一改url或者在console里直接发送某个不是6状态的卡券,也可能跳过不需要关注店铺,有剩余,结束时间没过,从来没领过的限制条件直接进入更新领取表的步骤
还有这种操作,见识了。遇到这种情况,表更新的操作(插入,删除,更新)还是多模拟一下场景好了。
<update id="updateBycardId">
UPDATE TF_F_CARDCOUPONS SET RENMAIND_CARD_NUM = RENMAIND_CARD_NUM - 1
WHERE
CARD_ID = #{cardId,jdbcType = DECIMAL}
AND RENMAIND_CARD_NUM > 1
AND CARD_STATUS = '6'
</update>
- 60行的大方法减个肥
变成一个24行一个33行的方法,无奈摊手,代码还是很丑,因为那些不同的返回提示信息。
总结:
- 电信业务就是增删改查的时候的限制和操作的流程,业务对我太广泛,我一直不理解到底什么是业务,我就理解是限制条件和操作流程好了;
- 接下来的任务是:ecop工程里的购机单品页的功能完善和购物车的开发。在分支上开发;
- 用到的需要研究一下的东西:
- template.js
<script>
里面写html模板,再注入数据; - mybatis拦截器来分页
- shiro权限,不同的用户显示不同的按钮,如果gx的项目有shiro,之前的后台开发就可以比较方便了。
- 分页滑动的iScroll5
卡券结束。等待总的测试。
- template.js