123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- namespace app\common\model;
- use app\admin\controller\Order;
- use app\common\service\helperService;
- /**
- * 商品限购配置表
- * Class courseModel
- * @package app\common\model
- */
- class ProductConfigModel extends BaseModel
- {
- protected $table = 'product_config';
- /**
- * 检查商品限购
- * @param $product_arr
- * @param $user_id
- * @return array|bool
- */
- public function checkRestrict($product_arr,$user_id)
- {
- $OrderListModel = new OrderListModel();
- //获取限购配置
- $config_list = $this->field('product_id,type,number,day')->where(['status'=>1])->column('type,number,day','product_id');
- if(empty($config_list)){
- return false;
- }
- $error='';
- $product_info = $product_arr['product_info'];
- foreach ($config_list as $item){
- if(isset($product_info[$item['product_id']])){
- $info = $product_info[$item['product_id']];
- if($item['type']==1){//单次限购
- if($item['number']<$info['number']){
- $error.=$info['product_name'].'限购'.$item['number'].'次;';
- }
- }else{//多日限购
- $start_time = strtotime(date('Y-m-d'))-(86400*$item['day']);
- $end_time = time();
- $number = $OrderListModel->alias('a')->where([
- 'product_id'=>$item['product_id'],
- 'user_id'=>$user_id,
- 'o.order_status'=>['in',[20,30,31]]
- ])->whereTime('add_time',[$start_time,$end_time])->join('order o','o.order_id=a.order_id')->count();
- if($item['number']<$number){
- $error.=$info['product_name'].'限购'.$item['number'].'次;';
- }
- }
- }
- }
- if(!empty($error)){
- return [
- 'title'=>'商品限购',
- 'msg'=>$error
- ];
- }
- return false;
- }
- /**
- * @param array $condition
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getProductConfigOne($condition=[]){
- $join=[
- ['product product','product.product_no=product_config.product_no','LEFT'],
- ['admin admin','admin.admin_id=product_config.admin_id','LEFT'],
- ];
- $this->alias('product_config')
- ->field('product_config.*,product.product_no,product.product_name,product.member_price,admin.admin_name')
- ->join($join);
- if($condition){
- $this->where($condition);
- }
- return $this->BaseModel($this->find());
- }
- }
|