public function add() { $this->startTrans(); //>>1.检查用户提交过来的数据如果为默认值, 将其他的默认去掉 if (isset($this->data['is_default'])) { $result = $this->where(array('member_id' => UID))->setField('is_default', 0); if ($result === false) { $this->rollback(); return false; } } if (!empty($this->data['id'])) { $id = $this->data['id']; //>>1.更新 $result = parent::save(); //使用this->data中的数据进行更新 if ($result === false) { $this->rollback(); return false; } } else { //>>2.保存 $id = parent::add(); // if ($id === false) { $this->rollback(); return false; } } $this->commit(); //>>3.根据id再从数据库中获取一行数据 $row = $this->find($id); //>>4.返回这一行数据 return $row; }
public function login() { $username = $this->data['username']; $password = $this->data['password']; //>>1.判断用户名是否存在 $row = $this->field('id,username,password,salt,status')->where(array('status' => array('gt', -1)))->getByUsername($username); if (empty($row)) { $this->error = '该用户不存在!'; return false; } if ($row['status'] === '0') { $this->error = '该用户未激活或者被锁定'; return false; } //>>2.判断密码是否和数据库中的密码一致 if ($row['password'] == md5(md5($password) . $row['salt'])) { //密码对比上之后才登陆成功 //将登陆成功后的IP和时间更新到数据库表中 parent::save(array('last_login_time' => NOW_TIME, 'last_login_ip' => ip2long(get_client_ip()), 'id' => $row['id'])); return $row; } else { $this->error = '密码不正确!'; return false; } }
/** * 修改数据 */ public function save() { if (isset($this->data['is_default'])) { $this->where(array('member_id' => UID)); parent::save(array('is_default' => 0)); } return parent::save(); }
public function changeStatus($id, $status) { $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { $data['name'] = array('exp', 'concat(name,"_del")'); } return parent::save($data); }
/** * 改变id修改其状态为status * @param $id * @param $status 默认值为-1表示删除 */ public function changeStatus($id, $status = -1) { $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); //update supplier set name = concat(name,'_del'),status = -1 where id in (1,2,3); } return parent::save($data); }
public function changeStatus($id, $status = -1) { $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { //status值为-1时 表示删除 给名字加上删除标识 $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
public function changeStatus($id, $status = -1) { $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { //如果传入的status值为-1 那么就将status的值改为-1 并且将id对应的name的值后面加一个_del $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
/** * 根据id更改供货商状态 * @param $id 数据ID * @param int $status 数据状态,默认值为-1(移除) * @return bool */ public function changeStatus($id, $status = -1) { $data = array('id' => array('in', $id), 'status' => $status); //如果状态改为-1(移除),就将供货商的名称后面加一个'_del'的后缀 if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
public function changeStatus($id, $status) { $data = ['status' => $status, 'id' => array('in', $id)]; //根据status的值判断是删除还是修改 if ($status == -1) { $data['name'] = array('exp', 'concat(name,"_del")'); } return parent::save($data); }
public function statusChange($id, $status = -1) { //准备要修改的数据 $data = array('id' => array('in', $id), 'status' => $status); //状态值为-1时,为名字加上后缀,防止添加时名字重复验证不同过 if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); } parent::save($data); }
/** * @param $id * @param int $status * @return bool * 商品移除 和 显示状态更改 */ public function changeStatus($id, $status = -1) { //获取id和status的值 $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { //当status等于-1表示移除商品并且修改name的值 $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
public function changestatus($id, $status) { $data = array('status' => $status); $data['id'] = array('in', $id); if ($status == -1) { //表示的是此时是放入回收站,给供货商的名字加一个后缀 $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
public function changeStatus($id, $status = -1) { $data = array('status' => $status, 'id' => array("in", $id)); //如果状态值为-1 则是删除状态,由于验证字段名是从数据库中查询所以添加一个删除标示, if ($status == -1) { $data["name"] = array("exp", "concat(name,'_del')"); //exp 表示指定后面的参数是一个表达式, } return parent::save($data); }
/** * 修改状态 * @param $id * @param $status * @return bool */ public function changeStatus($id, $status) { $data = array('id' => array('in', $id), 'status' => $status); //用in可以处理多项修改 //status为-1为删除,同时改变name的值 if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
/** * 通过id修改修改status的值 * 是伪删除 * @param $id * @param $status * @return bool */ public function changeStatus($id, $status) { $data = array('status' => $status); if ($status == -1) { //表示删除,将原来的name原始数据修改成,xxx_del $data['name'] = array('exp', "concat(name,'_del')"); } $this->where(array('id' => array('in', $id))); return parent::save($data); //UPDATE supplier SET STATUS = -1 , NAME = CONCAT(NAME,'_del' ) WHERE id = 6; }
/** * 根据id将status修改为传递过来的status的值 * @param $id * @param $status * @return bool */ public function changeStatus($id, $status) { $data = array('status' => $status); if ($status == -1) { //表示删除, 将name原始值修改为 xxxx_del $data['name'] = array('exp', "concat(name,'_del' )"); //>>SQL:name = concat(name,'_del' ) } //>>设置更新条件 $this->where(array('id' => array('in', $id))); return parent::save($data); //update supplier set status = -1 , name = concat(name,'_del' ) where id = 6; }
public function changeStatus($id, $status = -1) { $data = array('status' => $status); if (is_array($id)) { $data['id'] = array('in', $id); } else { $data['id'] = $id; } if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
/** * 改变status的状态 */ public function changeStatus($id, $status) { //构建需要修改的数组 $arr = array('status' => $status); //如果状态为-1(及移除操作的时候)同时要修改name字段,为name字段加上_del if ($status == -1) { $arr['name'] = array('exp', "CONCAT(name,'_del')"); //exp这个地方只支持小写,大写没有效果 } //返回结果 $this->where(array('id' => array('in', $id))); return parent::save($arr); }
public function changStatus($id, $status) { //>通过点击来来变换status的值1或者0 就要等到他当前的status $data['status'] = $status; //删除用户是在用户名后面加上"_del" if ($status == -1) { //.....exp 支持sql的表达式.... $data['name'] = array('exp', "concat(name,'_del')"); } //使用id删除数据 $this->where(array('id' => array('in', $id), 'status<>-1')); //因为子类中覆盖了save方法,所以要调用父类中的; $result = parent::save($data); return $result; }
/** *根据id修改其状态stautus,默认值-1表示删除 */ public function changeStatus($id, $status = -1) { /** * if($id是数组){ *'id'=>array('in',array(1,2,3)) * }else{ *'id'=>array('in',"1") * } */ $data = array('id' => array('in', $id), 'status' => $status); if ($status == -1) { //update supplier set name = concat(name,'_del') where id = in(1,2); $data['name'] = array('exp', "concat(name,'_del')"); } return parent::save($data); }
/** * 验证验证码 * @param string $mobile 手机号 * @param string $code 验证码 * @return boolean 验证 */ public function verify($mobile, $code) { $this->where(array('mobile' => $mobile))->order('id desc'); if (!($data = parent::find())) { $this->error = '验证码错误'; return false; } if ($data['code'] != $code) { $this->error = '验证码错误'; return false; } if ($data['status'] != '0') { $this->error = '验证码已过期'; return false; } return parent::save($this->create($data)); }
/** * 将收货地址数据添加到数据库中 或者修改数据 * @return mixed */ public function add() { $this->data['member_id'] = UID; //判断是添加还是修改 if ($id = $this->data['id']) { //修改返回id $rst = parent::save(); if ($rst !== false) { return $id; } else { return false; } } //如果添加的为默认地址,将数据库中修改为0 if ($this->data['is_default']) { $this->where('is_default=1'); parent::save(array('is_default' => 0)); } return parent::add(); }
/** * 激活用户 * @param $id * @param $key * @return bool */ public function fire($id, $key) { $email = $this->getFieldById($id, 'email'); if ($key === md5($email)) { $rst = parent::save(array('id' => $id, 'status' => 1)); if ($rst !== false) { return $rst; } } return false; }
/** * 添加订单 * @param mixed|string $requestData * @return bool|mixed */ public function add($requestData) { $this->startTrans(); //为order_info表准备数据 $orderInfo = array(); $orderInfo['member_id'] = UID; //>>收货人信息 $address_id = $requestData['address_id']; $addressModel = D('Address'); $address = $addressModel->field('id,member_id,is_default,status', true)->find($address_id); $orderInfo = array_merge($orderInfo, $address); //>>送货方式 $delivery_id = $requestData['delivery']; $deliveryModel = D('Delivery'); $delivery = $deliveryModel->field('id as delivery_id,name as delivery_name,price as delivery_price')->find($delivery_id); $orderInfo = array_merge($orderInfo, $delivery); $orderInfo['delivery_time'] = $requestData['delivery_time']; //>>支付方式 $pay_type_id = $requestData['pay']; $payTypeModel = D('PayType'); $pay_type = $payTypeModel->field('id as pay_type_id,name as pay_type_name')->find($pay_type_id); $orderInfo = array_merge($orderInfo, $pay_type); //>>下单时间 $orderInfo['inputtime'] = NOW_TIME; //购物车中信息 $shoppingCarModel = D('ShoppingCar'); $shopping_car = $shoppingCarModel->getList(); //>>计算购物明细金额及订单总金额 $goods_total_price = 0; //购物明细金额 foreach ($shopping_car as $item) { $goods_total_price += $item['num'] * $item['price']; } $orderInfo['total_price'] = $goods_total_price + $delivery['delivery_price']; //保存订单信息到数据库中 $id = parent::add($orderInfo); if ($id === false) { $this->rollback(); return false; } //将购物车中的信息保存到购物明细表中 foreach ($shopping_car as &$item) { unset($item['id']); unset($item['member_id']); $item['order_info_id'] = $id; } unset($item); $orderInfoItemModel = M('OrderInfoItem'); $rst = $orderInfoItemModel->addAll($shopping_car); if ($rst === false) { $this->rollback(); $this->error = '保存订单明细失败'; return false; } //发票信息 $invoiceModel = M('Invoice'); $invoice = array(); //发票数据 //>>发票名字 if ($requestData['type'] == 1) { $userinfo = login(); $invoice_name = $userinfo['username']; } else { $invoice_name = $requestData['invoice_name']; } //>>发票相关信息 $invoice_content = ''; if ($requestData['content'] == '明细') { foreach ($shopping_car as $item) { $invoice_content .= $item['name'] . ' ' . $item['num'] . ' ' . $item['price'] . ' ' . $item['num'] * $item['price'] . "\r\n"; } } else { $invoice_content = $requestData['content']; } $invoice['name'] = $invoice_name; $invoice['content'] = $invoice_content; $invoice['order_info_id'] = $id; $invoice['total_price'] = $goods_total_price; $invoice_id = $invoiceModel->add($invoice); if ($invoice_id === false) { $this->rollback(); $this->error = '保存发票失败'; return false; } //将订单号和发票id更新到订单表中 $sn = date('Ymd') . str_pad($id, 11, '0', STR_PAD_LEFT); $rst = parent::save(array('sn' => $sn, 'invoice_id' => $invoice_id, 'id' => $id)); if ($rst === false) { $this->rollback(); $this->error = '更新订单号和发票ID失败'; return false; } $this->commit(); return $id; }
/** * 改变数据的status状态字段的方法(伪删除功能也是修改status字段,所以也调用此方法) * @param $id 传入的数据的id字段 * @param int $status 传入的数据的status字段 * @return bool */ public function changeStatus($id, $status = -1) { //>>将接收到数据保存到数组中($id可能是数组或单独数字,所以作为where条件时使用in而不是=,如where id in (1,2,3)或where id in (1) $data = array('id' => array('in', $id), 'status' => $status); //>>status字段值为-1表示数据用户希望删除该数据(伪删除功能),为了防止与用户新添加数据重名,修改要被"删除"数据的name值,在其原来name后面添加_del if ($status == -1) { $data['name'] = array('exp', "concat(name,'_del')"); } //>>调用父类修改数据方法对数据进行修改,并返回结果 return parent::save($data); }
/** * 修改文章 * @param $article */ public function modifyArticle($article) { $Article = new Model('article'); return $Article->save($article); }
/** * 逻辑删除分类 * 在name后面拼接_del并且将状态改为-1 * 由于前面重写了save方法,所以保存的时候应当调用父类的save方法 * @param int $id * @return int|false */ public function delete2($id) { //1.获取原始数据 $this->field('lft,rght')->where(array('id' => $id))->find(); //准备修改的数据 $data = array('status' => -1, 'name' => array('exp', 'concat(name,"_del")')); //update goods_category set status=-1,name=concat(name,'_del') where lft>=2 and rght<=9 //准备用于修改的条件 $cond = array('lft' => array('egt', $this->data['lft']), 'rght' => array('elt', $this->data['rght'])); $this->where($cond); return parent::save($data); }
/** * 验证登录 * @return bool | array */ public function checkLogin() { $username = $this->data['username']; $password = $this->data['password']; if (empty($username)) { $this->error = '请输入用户名!'; return false; } if (empty($password)) { $this->error = '请输入密码!'; return false; } //更具当前输入的用户名,查询数据库中对应的数据 $user_info = $this->field('id,username,password,salt,status')->where(array('status' => array('gt', -1)))->getByUsername($username); if (empty($user_info)) { $this->error = '用户名不存在!'; return false; } if ($user_info['status'] == 0) { $this->error = '您的账号还未激活,或被锁定.请注意查收激活邮件!'; return false; } //对比密码.如果对比成功,将当前用户对应数据的最后登录时间和最后登录IP字段的值修改 if (md5(md5($password) . $user_info['salt']) == $user_info['password']) { $result = parent::save(array('last_login_time' => NOW_TIME, 'last_login_ip' => ip2long(get_client_ip()), 'id' => $user_info['id'])); if ($result === false) { $this->error = '系统繁忙,请稍后再试!'; return false; } return $user_info; } else { $this->error = '密码不正确!'; return false; } }
/** * 保存数据 * @access public * @param mixed $data 数据 * @param array $options 表达式 * @return boolean */ public function save($data = '', $options = array()) { if (!empty($this->options['link'])) { echo 'rl save</br>'; //1、对Data进行过滤,找到属于原始数据项中的data //1.1、获取当前对象自己的字段名 $currentDBFields = $this->getDbFields(); //1.2、检查当前有没有设置映射,有的话先还原 //todo 验证还原的可靠性。。 if (!empty($this->_map)) { foreach ($this->_map as $key => $val) { if (in_array($key, $currentDBFields)) { $data[$key] = $data[$val]; unset($data[$val]); } } } //1.3 定义原始数据orgData,从Data中筛出符合orgData的数据 $orgData; foreach ($data as $key => $value) { if (in_array($key, $currentDBFields)) { $orgData[$key] = $data[$key]; } } //1.3 保存orgData parent::save($orgData, $options); return $this->opRelation('SAVE', $data, $options['link']); } else { echo 'normal save</br>'; return parent::save($data, $options); } }
public function changeStatus($id, $status = -1) { if ($status == -1) { // $id可能是具体的值 也可能是数组(批量删除) return parent::save(array('status' => $status, 'id' => array('in', $id), 'name' => array('exp', "concat(`name`,'_del')"))); } return parent::save(array('status' => $status, 'id' => array('in', $id))); }