目录
1.积分
1.关于积分的表结构
1.在user表中添加credit字段 + 设计一个积分的表结构
user/models.py
class User(AbstractUser): phone = models.CharField(max_length=16,null=True,blank=True) wechat = models.CharField(max_length=16,1)">True) # 为用户表添加积分字段 每个用户都有自己积分 credit = models.IntegerField(default=0,blank=True,verbose_name="贝里") Credit(BaseModel): """积分流水""" OPERA_OPION = ( (1,赚取),(2,1)">消费User",related_name=user_credit用户) opera = models.SmallIntegerField(choices=OPERA_OPION,1)">操作类型) number = models.SmallIntegerField(default=0,1)">积分数值) Meta: db_table = 'ly_credit' verbose_name = verbose_name_plural = verbose_name def __str__(self): return %s %s %s 贝壳" % ( self.user.username,self.OPERA_OPION[self.opera][1],self.number )
2.设置积分和现金的兑换比例
constant.py
CREDIT_MONEY = 10 10积分顶一块钱
1.登录成功 给前端回复除了[用户名 id token],也要把[积分和计算公式]回复给前端
user/utils.py
def jwt_response_payload_handler(token,user=None,request=None): return { token: token,username: user.username,1)">id:user.id, 登录成功将积分和兑换比例也要返回给前端 credit:user.credit,1)">credit_to_money:contains.CREDIT_MONEY,}
2.前端将积分存起来
login.vue
if (this.remember){ localStorage.token = res.data.token; localStorage.username = res.data.username; localStorage.id = res.data.id; // 前端将积分存起来 localStorage.credit = res.data.credit; localStorage.credit_to_money = res.data.credit_to_money; sessionStorage.removeItem('token'); sessionStorage.removeItem('username'); sessionStorage.removeItem('id'); sessionStorage.removeItem('credit'); sessionStorage.removeItem('credit_to_money'); }else { sessionStorage.token = res.data.token; sessionStorage.username = res.data.username; sessionStorage.id = res.data.id; 前端将积分存起来 sessionStorage.credit = res.data.credit; sessionStorage.credit_to_money = res.data.credit_to_money; localStorage.removeItem('token'); localStorage.removeItem('username'); localStorage.removeItem('id'); localStorage.removeItem('credit'); localStorage.removeItem('credit_to_money'); }
order.vue
<!-- html --> <p ="discount-num2" v-else><span>总积分:xxxx, el-input-number v-model="num" @change="handleChange" :min="0" :max="10000" label="描述文字"></el-input-number>,已抵扣xxx元,本次花费xxx积分</p>
js handleChange(value){ 如果用户在积分输入框中没有输入值,那么默认使用了0个积分 if (!value){ this.num = 0 } console.log(value); },
get_credit(){ 从前端拿取积分和兑换比例 this.credit = localStorage.getItem('credit') || sessionStorage.getItem('credit') this.credit_to_money = localStorage.getItem('credit_to_money') || sessionStorage.getItem('credit_to_money') },