* 订单管理 */ namespace app\allwin\model; use think\Model; use app\allwin\model\CouponUser; //用户优惠券 use think\helper\Time; class Order extends Model{ protected $pk = 'id'; protected $table = 'ai_allwin_order'; public function store(){ return $this->hasOne('AllwinStore','id','store_id'); } /** * 创建订单 * @param array $param * @return void */ public static function addOrder(array $param){ $data = []; $data['member_miniapp_id'] = $param['member_miniapp_id']; $data['store_id'] = $param['store_id']; $data['uid'] = $param['uid']; $data['coupon_user_id'] = $param['user_couponr_id']; $data['coupon_ids'] = json_encode($param['coupon_ids']); $data['platform_amount'] = $param['platform_amount']; $data['user_amount'] = $param['user_amount']; $data['coupon_price'] = $param['coupon_price']; $data['store_amount'] = $param['store_amount']; $data['order_amount'] = $param['order_amount']; $data['order_no'] = $param['order_no']; $data['state'] = 0; $data['update_time'] = time(); return model('order')->insertGetId($data); } /** * 计算器付款价格 * @param array $param [计算参数] * @return type */ public static function countPrice(array $param){ $user_couponr_id = intval($param['user_couponr_id']); $user_id = intval($param['uid']); $money = floatval($param['money']); //用户默认付款价 $amount = floatval($param['amount']); //前端计算付款价 //我的优惠券 $coupon_user = []; $coupon_user['member_miniapp_id'] = intval($param['member_miniapp_id']); $coupon_user['store_id'] = intval($param['store_id']); $coupon_user['id'] = $user_couponr_id; $coupon_user['uid'] = $user_id; $coupon_user['is_end'] = 0; $coupon_user_rel = CouponUser::field('longtime,user_size,price,types,weekday,howmuch,discount,starttime,endtime')->where($coupon_user)->find(); //需要优惠的价格(分) $coupon_user_price = 0; if(!empty($coupon_user_rel)){ if(time() < $coupon_user_rel->starttime || time() > $coupon_user_rel->endtime){ return ['code'=>403,'msg'=>'优惠券未在有效期']; } list($start,$end) = Time::today(); $count = model('CouponLog')->where(['coupon_id' => $user_couponr_id,'uid' => $user_id])->where('times','>=',$start)->count(); if($count >= $coupon_user_rel->longtime){ return ['code'=>403,'msg'=>'每天仅允许使用'.$count.'次']; } if($coupon_user_rel->types){//折扣 $coupon_user_price = $money - $money * ($coupon_user_rel->discount/10); if ($coupon_user_price >= $coupon_user_rel->user_size) { $coupon_user_price = $coupon_user_rel->user_size; } }else{//抵扣 if($money >= $coupon_user_rel->howmuch){ if($coupon_user_rel->user_size >= $coupon_user_rel->price){ $coupon_user_price = $coupon_user_rel->price; }else{ $coupon_user_price = $coupon_user_rel->user_size; } } } } //领取的优惠券价格 $coupon_price = 0; if(!empty($param['coupon_ids'])){ $coupon['id'] = ids($param['coupon_ids'],true); $coupon_price = model('Coupon')->where($coupon)->where('num','>','0')->sum('pay_price'); $coupon_price = $coupon_price; } $amount = $money - $coupon_user_price; $store_amount = $amount < 0 ? 0 : $amount; $order_amount = abs($store_amount + $coupon_price); $data = [ 'coupon_user_price' => abs($coupon_user_price), 'store_amount' => abs($store_amount), 'platform_amount' => abs($coupon_price), 'user_amount' => abs($money), 'order_amount' => $order_amount <= 0 ? 0.01: $order_amount, ]; return ['code'=>200,'msg'=>'成功','data' => $data]; } }