ProductConfigModel.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace app\common\model;
  3. use app\admin\controller\Order;
  4. use app\common\service\helperService;
  5. /**
  6. * 商品限购配置表
  7. * Class courseModel
  8. * @package app\common\model
  9. */
  10. class ProductConfigModel extends BaseModel
  11. {
  12. protected $table = 'product_config';
  13. /**
  14. * 检查商品限购
  15. * @param $product_arr
  16. * @param $user_id
  17. * @return array|bool
  18. */
  19. public function checkRestrict($product_arr,$user_id)
  20. {
  21. $OrderListModel = new OrderListModel();
  22. //获取限购配置
  23. $config_list = $this->field('product_id,type,number,day')->where(['status'=>1])->column('type,number,day','product_id');
  24. if(empty($config_list)){
  25. return false;
  26. }
  27. $error='';
  28. $product_info = $product_arr['product_info'];
  29. foreach ($config_list as $item){
  30. if(isset($product_info[$item['product_id']])){
  31. $info = $product_info[$item['product_id']];
  32. if($item['type']==1){//单次限购
  33. if($item['number']<$info['number']){
  34. $error.=$info['product_name'].'限购'.$item['number'].'次;';
  35. }
  36. }else{//多日限购
  37. $start_time = strtotime(date('Y-m-d'))-(86400*$item['day']);
  38. $end_time = time();
  39. $number = $OrderListModel->alias('a')->where([
  40. 'product_id'=>$item['product_id'],
  41. 'user_id'=>$user_id,
  42. 'o.order_status'=>['in',[20,30,31]]
  43. ])->whereTime('add_time',[$start_time,$end_time])->join('order o','o.order_id=a.order_id')->count();
  44. if($item['number']<$number){
  45. $error.=$info['product_name'].'限购'.$item['number'].'次;';
  46. }
  47. }
  48. }
  49. }
  50. if(!empty($error)){
  51. return [
  52. 'title'=>'商品限购',
  53. 'msg'=>$error
  54. ];
  55. }
  56. return false;
  57. }
  58. /**
  59. * @param array $condition
  60. * @return mixed
  61. * @throws \think\db\exception\DataNotFoundException
  62. * @throws \think\db\exception\ModelNotFoundException
  63. * @throws \think\exception\DbException
  64. */
  65. public function getProductConfigOne($condition=[]){
  66. $join=[
  67. ['product product','product.product_no=product_config.product_no','LEFT'],
  68. ['admin admin','admin.admin_id=product_config.admin_id','LEFT'],
  69. ];
  70. $this->alias('product_config')
  71. ->field('product_config.*,product.product_no,product.product_name,product.member_price,admin.admin_name')
  72. ->join($join);
  73. if($condition){
  74. $this->where($condition);
  75. }
  76. return $this->BaseModel($this->find());
  77. }
  78. }