Ejemplo n.º 1
0
 /**
  * Bonus 是否可用
  * 
  * @return string 枚举类型 BONUS_XXXX,见常量定义
  * 
  * @param string $sn  SN号码
  */
 public function isBonusAvailable($sn)
 {
     // 参数验证
     $validator = new Validator(array('sn' => $sn));
     $sn = $validator->required()->digits()->validate('sn');
     $this->validate($validator);
     // 需要联表查询
     $dataMapper = new DataMapper(null);
     $result = $dataMapper->selectComplex(array('user_bonus' => 'ub', 'bonus_type' => 'bt'), '*', array('ub.bonus_type_id = bt.type_id and ub.bonus_sn= ?', $sn), array('order' => 'bonus_id', 'offset' => 0, 'limit' => 1));
     if (empty($result) || empty($result[0])) {
         return Bonus::BONUS_NOT_EXIST;
     }
     $result = $result[0];
     if (!empty($result['user_id'])) {
         return Bonus::BONUS_OCCUPIED;
     }
     if ($result['use_end_date'] <= Time::gmTime()) {
         return Bonus::BONUS_EXPIRED;
     }
     return Bonus::BONUS_AVAILABLE;
 }
Ejemplo n.º 2
0
 /**
  * 取得一组结果的列表
  *
  * @return array 结果列表
  *
  * @param mixed  $table        需要查询的数据表,可以是单个表,例如:'user',
  *                      也可以是多个表的数组,例如:array('user' ,'order_info' => 'oi')
  * @param string $fields       需要 select 的字段
  * @param array  $condArray    查询条件数组,例如:
  *                             array(
  *                             array('supplier_id = ?', $supplier_id)
  *                             array('is_on_sale = ?', 1)
  *                             array('supplier_price > ? or supplier_price < ?', $priceMin, $priceMax)
  * )
  *
  * @param array  $optionArray  目前不支持 Having 查询,留待以后扩展
  *
  * @param int    $offset       用于分页的开始 >= 0
  * @param int    $limit        每页多少条
  * @param int    $ttl          缓存多少时间
  *
  */
 public function _fetchArray($table, $fields = '*', array $condArray = null, array $optionArray = null, $offset = 0, $limit = 10, $ttl = 0)
 {
     // 构造参数验证数组
     $validatorArray = array();
     $validatorArray['table'] = $table;
     $validatorArray['fields'] = $fields;
     $validatorArray['offset'] = $offset;
     $validatorArray['limit'] = $limit;
     $validatorArray['ttl'] = $ttl;
     if (null != $condArray) {
         $validatorArray['condArray'] = $condArray;
     }
     if (null != $optionArray) {
         $validatorArray['optionArray'] = $optionArray;
     }
     // 参数验证
     $validator = new Validator($validatorArray, '');
     $table = $validator->required()->validate('table');
     $fields = $validator->required()->validate('fields');
     $offset = $validator->digits()->min(0)->validate('offset');
     $limit = $validator->digits()->min(0)->validate('limit');
     $ttl = $validator->digits()->min(0)->validate('ttl');
     if (null != $condArray) {
         $condArray = $validator->requireArray(false)->validate('condArray');
     }
     if (null != $optionArray) {
         $optionArray = $validator->requireArray(false)->validate('optionArray');
     }
     $this->validate($validator);
     // 构造查询条件
     $filter = null;
     if (!empty($condArray)) {
         $filter = QueryBuilder::buildAndFilter($condArray);
     }
     if (null == $optionArray) {
         $optionArray = array();
     }
     $optionArray['offset'] = $offset;
     if ($limit > 0) {
         $optionArray['limit'] = $limit;
     }
     // 创建 DataMapper
     $dataMapper = new DataMapper($table);
     if (is_string($table)) {
         //简单的单表查询
         $table = array($table);
     }
     if (is_array($table)) {
         // 复杂的多表查询
         return $dataMapper->selectComplex($table, $fields, $filter, $optionArray, $ttl);
     }
     throw new \InvalidArgumentException('table should be string or array');
 }