PHP多商城系统开发制作——登录下单

huang -
PHP多商城系统开发制作——登录下单

整站伪静态:增强搜索引擎的友好度,对于后期网络营销有比较明显作用

通用帐户登陆:让您的可以使用微信号、QQ号码、支付宝、淘宝等社会化网络账号登录您的网站

<template>
    <div >
     <div >
         <!-- 头像区域 -->
         <div >
             <img src="../assets/logo.png" alt="">
         </div>
         <!-- 登录表单区 -->
         <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" >
              <!-- 用户名 -->
            <el-form-item prop="username" >
                <el-input  v-model="loginForm.username" prefix-icon="el-icon-user"></el-input>
            </el-form-item>
 
             <!-- 密码 -->
             <el-form-item prop="password">
                <el-input v-model="loginForm.password" prefix-icon="el-icon-lock" type="password"></el-input>
            </el-form-item>
 
            <!-- 按钮 -->
            <el-form-item >
               <el-button type="primary" @click="login">登录</el-button>
               <el-button type="info" @click="resetloginForm">重置</el-button>
            </el-form-item>
         </el-form>
     </div>
    </div>
</template>
<script>
export default {
    data(){
        return {
            // 登录表单的数据绑定对象
            loginForm:{
                username:'',
                password:''
            },
            //表单的验证规则
            loginFormRules:{
                //验证用户名是否合法
                username:[
                    {required: true, message: '请输入登录名称', trigger: 'blur'},
                    { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
                ],
                //验证密码是否合法
                password:[
                    {required: true, message: '请输入登录密码', trigger: 'blur'},
                    { min: 6, max: 15, message: '长度在 6 到 15 个字符', trigger: 'blur'}
                ]
            }
        }
    },
    methods: {
        //点击重置按钮
        resetloginForm(){
            this.$refs.loginFormRef.resetFields()
        },
        login(){
           this.$refs.loginFormRef.validate(async valid => {
               if(!valid) return;
            //    const result = await this.$http.post('login',this.loginForm);
            //    console.log(result);
            //     结构赋值data属性
               const {data:res} = await this.$http.post('login',this.loginForm);
               if(res.meta.status !== 200)return console.log('登录失败')
               console.log('登录成功');
           }); 
        }
    }
}
</script>

抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:

1 高并发对数据库产生的压力

2 竞争状态下如何解决库存的正确减少("超卖"问题)

下单系统:

/**
* Class redisConcurrent
*/
class RedisConcurrent
{
/** lock key
* @var string
*/
public $_lockKey = 'redis_lock';
/** Redis Class
* @var Redis
*/
private $_redis ;
/** ip
* @var mixed|string
*/
private $ip ='127.0.0.1' ;
/** port
* @var string
*/
private $port = '6379' ;
/** init redis connect
* redisConcurrent constructor.
* @param array $config
*/
public function __construct( $config = [] )
{
if(!empty($config)) {
if(isset($config['ip'])) {
$this->ip = $config['ip'];
}
if(isset($config['port'])){
$this->ip = $config['port'];
}
}
/**
* Redis连接信息可以用原生,也可以用其它的框架集成
*/
$this->_redis = new Redis();
$this->_redis->connect($this->ip,$this->port);
}
/** 锁定
* @param int $intTimeout 默认过期时间(避免死锁)
* @return bool
*/
private function lock($intTimeout = 8) {
#新版set,已经集成了大多数集成操作
$strRet = $this->_redis->set($this->_lockKey, time().rand(10000,99999).rand(1000,9999).rand(100,999), 'ex', $intTimeout, 'nx');
if($strRet) {
return true;
}else{
return false;
}
}
/** 解锁
* @throws \Exception
*/
private function unlock()
{
$strRet = $this->_redis->del($this->_lockKey);
if($strRet) {
return true;
}else{
if($this->_redis->get($this->_lockKey)) {
return false ;
}else{
return false ;
}
}
}
/**
* 业务相关的key,可以是库存,物品数等
*/
const ORDER_KEY = 'order_num';
/**
* 用户相关的key
*/
const USER_KEY = 'user_num';
/** Redis下单
* @param int $num 下单个数
* @param string $userId 用户ID
*
* 场次是为了方便异常处理,方便数据查找
* @param string $bout 商品场次 => order_num:1 , order_num:2
* @return bool
* @throws Exception
*/
public function order( string $userId ,string $bout = '1' ,int $num = 1)
{
$orderKey = self::ORDER_KEY.':'.$bout ;
$userKey = self::USER_KEY.':'.$bout ;
//此方法不具备原子性 并发处理是不能做条件判断
//$len = $this->_redis->llen();
#实际为n+1次触发完结,这里只做Redis自减
$check = $this->_redis->lpop($orderKey);
if(!$check){
#当前order_num已经为0!
//自动补货为 100 ,$bout有一定的处理规则,不能乱传
self::autoBuild(100,$bout);
return false ;
}
//特殊处理,避免n+1次的情况
$len = $this->_redis->llen($orderKey) ;
if($len == 0) {
//自动补货为 100 ,$bout有一定的处理规则,不能乱传
self::autoBuild(100,$bout);
return false ;
}
//添加用户数据
$result = $this->_redis->lpush($u

竞拍系统:在现在产品管理系统上选择相关的产品,设置拍卖开始到结束时间,设置起拍价格、一口价、加价幅度、保证金等参数,前台会员就可以进行商品的竞价了,价高者得。

团购系统:在现有的产品管理系统上选择需要团购的商品,设置开始到结束时间、保证金、限购数量、赠送积分、价格阶梯以及整个活动的说明,完成后所有的会员即可进行团购活动。

希望这编文章可以帮助到真正有需要的朋友,如果各位对于互联网开发这块还有什么问题或者有这方面的疑惑,都可以随时私信或微信kjwenlc我一起交流,一起进步哈~
同时,感谢大家的支持与阅读,如果觉得不错欢迎点赞和分享,谢谢!

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

php

扩展阅读

加个好友,技术交流

1628738909466805.jpg