123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
- * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
- * @author pillar<ltmn@qq.com>
- * 订单管理
- */
- 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];
- }
- }
|