From 686e876d2fdecd9ca5f9fa9f35426c4e5f0eaf85 Mon Sep 17 00:00:00 2001 From: sugar1569 Date: Tue, 2 Apr 2019 17:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AE=A2=E5=8D=95=E7=BB=93=E7=AE=97=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E5=90=88=E8=AE=A1=E9=87=91=E9=A2=9D=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E5=8A=A0=E8=BF=90=E8=B4=B9=E5=95=8A=EF=BC=8C=E7=A7=AF?= =?UTF-8?q?=E5=88=86=EF=BC=8C=E4=BC=98=E6=83=A0=E5=88=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/routine/model/store/StoreCart.php | 26 +++++- .../routine/model/store/StoreCouponIssue.php | 2 +- .../routine/model/store/StoreCouponUser.php | 12 +++ .../routine/model/store/StoreOrder.php | 93 +++++++++++++------ application/wap/model/store/StoreOrder.php | 8 +- extend/behavior/wechat/PaymentBehavior.php | 16 +++- view/crmebN/pages/coupon/coupon.json | 20 +--- view/crmebN/pages/coupon/coupon.wxml | 11 ++- view/crmebN/pages/coupon/coupon.wxss | 7 +- .../pages/order-confirm/order-confirm.js | 73 +++++++++++++-- .../pages/order-confirm/order-confirm.wxml | 12 ++- .../pages/order-confirm/order-confirm.wxss | 2 +- view/crmebN/pages/orders-con/orders-con.js | 36 ++++++- view/crmebN/pages/orders-con/orders-con.wxml | 9 +- 14 files changed, 243 insertions(+), 84 deletions(-) diff --git a/application/routine/model/store/StoreCart.php b/application/routine/model/store/StoreCart.php index 14977227..e6713fd7 100644 --- a/application/routine/model/store/StoreCart.php +++ b/application/routine/model/store/StoreCart.php @@ -32,7 +32,7 @@ class StoreCart extends ModelBasic return self::setErrorInfo('该产品已下架或删除'); $userbuycount = StoreOrder::where(['uid'=>$uid,'paid'=>1,'seckill_id'=>$seckill_id])->count(); if($StoreSeckillinfo['num'] <= $userbuycount) - return self::setErrorInfo('每人限购'.$StoreSeckillinfo['num'].'一件'); + return self::setErrorInfo('每人限购'.$StoreSeckillinfo['num'].'件'); if(StoreSeckill::getProductStock($seckill_id) < $cart_num) return self::setErrorInfo('该产品库存不足'.$cart_num); $where = ['type'=>$type,'uid'=>$uid,'product_id'=>$product_id,'product_attr_unique'=>$product_attr_unique,'is_new'=>$is_new,'is_pay'=>0,'is_del'=>0,'seckill_id'=>$seckill_id]; @@ -134,7 +134,7 @@ class StoreCart extends ModelBasic }else if(!$product['is_show'] || $product['is_del'] || !$product['stock']){ $invalid[] = $cart; //商品属性不对应 - }else if(!StoreProductAttr::issetProductUnique($cart['product_id'],$cart['product_attr_unique']) && !$cart['combination_id'] && !$cart['seckill_id']){ + }else if(!StoreProductAttr::issetProductUnique($cart['product_id'],$cart['product_attr_unique']) && !$cart['combination_id'] && !$cart['seckill_id']&& !$cart['bargain_id']){ $invalid[] = $cart; //正常商品 }else{ @@ -220,5 +220,27 @@ class StoreCart extends ModelBasic return compact('valid','invalid'); } + /** + * TODO 判断购物车产品是否可以继续下单 + * @param int $id + * @return bool|int|string + * @throws \think\Exception + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function decideCartProductOverdue($id = 0){ + if(!$id) return self::setErrorInfo('参数错误'); + $cartInfo = self::where('id',$id)->field('cart_num,product_id,combination_id,seckill_id,bargain_id,product_attr_unique')->find(); + if($cartInfo['combination_id']) return StoreCombination::isValidCartCombination($cartInfo['combination_id'],$cartInfo['cart_num']); + else if($cartInfo['seckill_id']) return StoreSeckill::isValidCartSeckill($cartInfo['seckill_id'],$cartInfo['cart_num']); + else if($cartInfo['bargain_id']) return StoreBargain::isValidCartBargain($cartInfo['bargain_id'],$cartInfo['cart_num']); + else if(strlen(trim($cartInfo['product_attr_unique'])) > 2){ + if(!StoreProduct::isValidProduct($cartInfo['product_id'])) return self::setErrorInfo('该产品已下架或删除'); + if(!StoreProductAttr::issetProductUnique($cartInfo['product_id'],$cartInfo['product_attr_unique'])) return self::setErrorInfo('请选择有效的产品属性'); + if(StoreProduct::getProductStock($cartInfo['product_id'],$cartInfo['product_attr_unique']) < $cartInfo['cart_num']) return self::setErrorInfo('该产品库存不足'.$cartInfo['cart_num']); + return true; + }else return StoreProduct::isValidCartProduct($cartInfo['product_id'],$cartInfo['cart_num']); + } } \ No newline at end of file diff --git a/application/routine/model/store/StoreCouponIssue.php b/application/routine/model/store/StoreCouponIssue.php index 237cfb1c..af0617a6 100644 --- a/application/routine/model/store/StoreCouponIssue.php +++ b/application/routine/model/store/StoreCouponIssue.php @@ -52,7 +52,7 @@ class StoreCouponIssue extends ModelBasic $issueCouponInfo['remain_count'] -= 1; $res3 = false !== $issueCouponInfo->save(); } - $res = $res1 && $res2 & $res3; + $res = $res1 && $res2 && $res3; self::checkTrans($res); return $res; } diff --git a/application/routine/model/store/StoreCouponUser.php b/application/routine/model/store/StoreCouponUser.php index 31114bb8..f9315c2d 100644 --- a/application/routine/model/store/StoreCouponUser.php +++ b/application/routine/model/store/StoreCouponUser.php @@ -127,6 +127,18 @@ class StoreCouponUser extends ModelBasic return self::where('id',$id)->update(['status'=>1,'use_time'=>time()]); } + /** + * TODO 恢复优惠券 + * @param $id + * @return StoreCouponUser|bool + */ + public static function recoverCoupon($id) + { + $status = self::where('id',$id)->value('status'); + if($status) return self::where('id',$id)->update(['status'=>0,'use_time'=>'']); + else return true; + } + public static function addUserCoupon($uid,$cid,$type = 'get') { $couponInfo = StoreCoupon::find($cid); diff --git a/application/routine/model/store/StoreOrder.php b/application/routine/model/store/StoreOrder.php index 68b9cece..59631d34 100644 --- a/application/routine/model/store/StoreOrder.php +++ b/application/routine/model/store/StoreOrder.php @@ -30,6 +30,7 @@ use service\RoutineTemplateService; use think\Cache; use think\Url; use traits\ModelTrait; +use service\MiniProgramService; class StoreOrder extends ModelBasic { @@ -64,20 +65,20 @@ class StoreOrder extends ModelBasic { $storePostage = floatval(SystemConfigService::get('store_postage'))?:0;//邮费基础价 $storeFreePostage = floatval(SystemConfigService::get('store_free_postage'))?:0;//满额包邮 - $totalPrice = self::getOrderTotalPrice($cartInfo);//获取订单总金额 - $costPrice = self::getOrderCostPrice($cartInfo);//获取订单成本价 - //如果满额包邮等于0 - if(!$storeFreePostage) { + $totalPrice = floatval(self::getOrderTotalPrice($cartInfo));//获取订单总金额 + $costPrice = floatval(self::getOrderCostPrice($cartInfo));//获取订单成本价 + //如果订单金额大于满额包邮 邮费等于0 + if($totalPrice >= $storeFreePostage) { $storePostage = 0; }else{ foreach ($cartInfo as $cart){ if(!$cart['productInfo']['is_postage'])//若果产品不包邮 - $storePostage = bcadd($storePostage,$cart['productInfo']['postage'],2); + $storePostage = bcadd($storePostage,floatval($cart['productInfo']['postage']),2); } if($storeFreePostage <= $totalPrice) $storePostage = 0;//如果总价大于等于满额包邮 邮费等于0 } -// $totalPrice = bcadd($totalPrice,$storePostage,2); + $totalPrice = bcadd($totalPrice,$storePostage,2); return compact('storePostage','storeFreePostage','totalPrice','costPrice'); } @@ -210,6 +211,9 @@ class StoreOrder extends ModelBasic if(!UserAddress::be(['uid'=>$uid,'id'=>$addressId,'is_del'=>0]) || !($addressInfo = UserAddress::find($addressId))) return self::setErrorInfo('地址选择有误!'); + //是否包邮 + //if((isset($other['offlinePostage']) && $other['offlinePostage'] && $payType == 'offline')) $payPostage = 0; + //$payPrice = bcadd($payPrice,$payPostage,2); //使用优惠劵 $res1 = true; if($couponId){ @@ -217,22 +221,23 @@ class StoreOrder extends ModelBasic if(!$couponInfo) return self::setErrorInfo('选择的优惠劵无效!'); if($couponInfo['use_min_price'] > $payPrice) return self::setErrorInfo('不满足优惠劵的使用条件!'); - $payPrice = bcsub($payPrice,$couponInfo['coupon_price'],2); $res1 = StoreCouponUser::useCoupon($couponId); - $couponPrice = $couponInfo['coupon_price']; + if($payPrice < $couponInfo['coupon_price']) { + $couponPrice = $payPrice; + $payPrice = 0; + }else { + $payPrice = bcsub($payPrice,$couponInfo['coupon_price'],2); + $couponPrice = $couponInfo['coupon_price']; + } }else{ $couponId = 0; $couponPrice = 0; } if(!$res1) return self::setErrorInfo('使用优惠劵失败!'); - //是否包邮 - if((isset($other['offlinePostage']) && $other['offlinePostage'] && $payType == 'offline')) $payPostage = 0; - $payPrice = bcadd($payPrice,$payPostage,2); - //积分抵扣 $res2 = true; - if($useIntegral && $userInfo['integral'] > 0){ + if($useIntegral && $userInfo['integral'] > 0 && $payPrice > 0){ $deductionPrice = bcmul($userInfo['integral'],$other['integralRatio'],2); if($deductionPrice < $payPrice){ $payPrice = bcsub($payPrice,$deductionPrice,2); @@ -244,7 +249,7 @@ class StoreOrder extends ModelBasic $res2 = false !== User::bcDec($userInfo['uid'],'integral',$usedIntegral,'uid'); $payPrice = 0; } - $res2 = $res2 && false != UserBill::expend('积分抵扣',$uid,'integral','deduction',$usedIntegral,$key,$userInfo['integral'],'购买商品使用'.floatval($usedIntegral).'积分抵扣'.floatval($deductionPrice).'元'); + $res2 = $res2 && false != UserBill::expend('积分抵扣',$uid,'integral','deduction',$usedIntegral,$key,bcsub($userInfo['integral'],$usedIntegral,2),'购买商品使用'.floatval($usedIntegral).'积分抵扣'.floatval($deductionPrice).'元'); }else{ $deductionPrice = 0; $usedIntegral = 0; @@ -290,13 +295,6 @@ class StoreOrder extends ModelBasic $order = self::set($orderInfo); if(!$order)return self::setErrorInfo('订单生成失败!'); $res5 = true; - foreach ($cartInfo as $cart){ - //减库存加销量 - if($combinationId) $res5 = $res5 && StoreCombination::decCombinationStock($cart['cart_num'],$combinationId); - else if($seckill_id) $res5 = $res5 && StoreSeckill::decSeckillStock($cart['cart_num'],$seckill_id); - else if($bargain_id) $res5 = $res5 && StoreBargain::decBargainStock($cart['cart_num'],$bargain_id); - else $res5 = $res5 && StoreProduct::decProductStock($cart['cart_num'],$cart['productInfo']['id'],isset($cart['productInfo']['attrInfo']) ? $cart['productInfo']['attrInfo']['unique']:''); - } //保存购物车商品信息 $res4 = false !== StoreOrderCartInfo::setCartInfo($order['id'],$cartInfo); //购物车状态修改 @@ -336,7 +334,8 @@ class StoreOrder extends ModelBasic if($orderInfo['paid']) exception('支付已支付!'); if($orderInfo['pay_price'] <= 0) exception('该支付无需支付!'); $openid = WechatUser::getOpenId($orderInfo['uid']); - return RoutineService::payRoutine($openid,$orderInfo['order_id'],$orderInfo['pay_price'],'productr',SystemConfigService::get('site_name')); + return MiniProgramService::jsPay($openid,$orderInfo['order_id'],$orderInfo['pay_price'],'productr',SystemConfigService::get('site_name'));//2.5.36 +// return RoutineService::payRoutine($openid,$orderInfo['order_id'],$orderInfo['pay_price'],'productr',SystemConfigService::get('site_name')); } //TODO 余额支付 public static function yuePay($order_id,$uid,$formId = '') @@ -350,7 +349,8 @@ class StoreOrder extends ModelBasic return self::setErrorInfo('余额不足'.floatval($orderInfo['pay_price'])); self::beginTrans(); $res1 = false !== User::bcDec($uid,'now_money',$orderInfo['pay_price'],'uid'); - $res2 = UserBill::expend('购买商品',$uid,'now_money','pay_product',$orderInfo['pay_price'],$orderInfo['id'],$userInfo['now_money'],'余额支付'.floatval($orderInfo['pay_price']).'元购买商品'); + $balance = bcsub($userInfo['now_money'],$orderInfo['pay_price'],2); + $res2 = UserBill::expend('购买商品',$uid,'now_money','pay_product',$orderInfo['pay_price'],$orderInfo['id'],$balance,'余额支付'.floatval($orderInfo['pay_price']).'元购买商品'); $res3 = self::paySuccess($order_id,'yue',$formId);//余额支付成功 try{ // HookService::listen('yue_pay_product',$userInfo,$orderInfo,false,PaymentBehavior::class); @@ -432,12 +432,21 @@ class StoreOrder extends ModelBasic $order = self::where('order_id',$orderId)->find(); $resPink = true; $res1 = self::where('order_id',$orderId)->update(['paid'=>1,'pay_type'=>$paytype,'pay_time'=>time()]);//订单改为支付 + $cartInfo = self::getDb('StoreOrderCartInfo')->where('oid',$order['id'])->column('cart_info','unique')?:[]; + foreach ($cartInfo as $k=>&$cart) $cart = json_decode($cart, true); + $res2 = true; + foreach ($cartInfo as $k=>&$cart){ //减库存加销量 + if($cart['combination_id']) $res2 = $res2 && StoreCombination::decCombinationStock($cart['cart_num'],$cart['combination_id']); + else if($cart['seckill_id']) $res2 = $res2 && StoreSeckill::decSeckillStock($cart['cart_num'],$cart['seckill_id']); + else if($cart['bargain_id']) $res2 = $res2 && StoreBargain::decBargainStock($cart['cart_num'],$cart['bargain_id']); + else $res2 = $res2 && StoreProduct::decProductStock($cart['cart_num'],$cart['productInfo']['id'],isset($cart['productInfo']['attrInfo']) ? $cart['productInfo']['attrInfo']['unique']:''); + } User::bcInc($order['uid'],'pay_count',1,'uid'); if($order->combination_id && $res1 && !$order->refund_status) $resPink = StorePink::createPink($order);//创建拼团 $oid = self::where('order_id',$orderId)->value('id'); StoreOrderStatus::status($oid,'pay_success','用户付款成功'); RoutineTemplate::sendOrderSuccess($formId,$orderId); - $res = $res1 && $resPink; + $res = $res1 && $resPink && $res2; return false !== $res; } @@ -525,11 +534,37 @@ class StoreOrder extends ModelBasic $order = self::getUserOrderDetail($uid,$uni); if(!$order) return self::setErrorInfo('订单不存在!'); $order = self::tidyOrder($order); - if($order['_status']['_type'] != 0 && $order['_status']['_type']!= -2 && $order['_status']['_type'] != 4) + if($order['_status']['_type'] != 0 && $order['_status']['_type']!= -2 && $order['_status']['_type'] != 4) return self::setErrorInfo('该订单无法删除!'); - if(false !== self::edit(['is_del'=>1],$order['id'],'id') && + if($order['_status']['_type'] == 4 && false !== self::edit(['is_del'=>1],$order['id'],'id') && false !==StoreOrderStatus::status($order['id'],'remove_order','删除订单')) return true; + else if($order['_status']['_type'] != 4){//TODO 退款 未支付订单 删除退会积分和优惠券 + self::beginTrans(); + $res1 = self::edit(['is_del'=>1],$order['id'],'id'); + $res2 = StoreOrderStatus::status($order['id'],'remove_order','删除订单'); + $res3 = true; + $res4 = true; + $couponPrice = 0; + if($order['coupon_id']) { + $res3 = StoreCouponUser::recoverCoupon($order['coupon_id']); + $couponPrice = $order['coupon_price']; + $res4 = self::edit(['coupon_price'=>0.00,'coupon_id'=>0,'pay_price'=>bcadd($order['pay_price'],$couponPrice,2)],$order['id'],'id'); + } + $res5 = true; + $res6 = true; + $res7 = true; + if($order['use_integral']) { + $userInfo = User::getUserInfo($order['uid']); + $res5 = User::recoverOrderIntegral($order['uid'],$order['use_integral']);// TODO 退会积分到用户 + $res6 = self::edit(['deduction_price'=>0.00,'use_integral'=>0.00,'back_integral'=>$order['use_integral'],'pay_price'=>bcadd($couponPrice,bcadd($order['pay_price'],$order['deduction_price'],2),2)],$order['id'],'id'); // TODO 修改积分为空 + $balance = bcadd($userInfo['integral'],$order['use_integral'],2); + $res7 = UserBill::income('积分退回',$order['uid'],'integral','recover_deduction',$order['use_integral'],$order['unique'],$balance,'退回购买商品使用'.floatval($order['use_integral']).'积分抵扣'.floatval($order['deduction_price']).'元'); + } + $res = $res1 && $res2 && $res3 && $res4 && $res5 && $res6 && $res7; + self::checkTrans($res); + return $res; + } else return self::setErrorInfo('订单删除失败!'); } @@ -669,7 +704,7 @@ class StoreOrder extends ModelBasic public static function getUserOrderList($uid,$status = '',$first = 0,$limit = 8) { $list = self::statusByWhere($status)->where('is_del',0)->where('uid',$uid) - ->field('seckill_id,bargain_id,combination_id,id,order_id,pay_price,total_num,total_price,pay_postage,total_postage,paid,status,refund_status,pay_type,coupon_price,deduction_price,pink_id,delivery_type') + ->field('add_time,seckill_id,bargain_id,combination_id,id,order_id,pay_price,total_num,total_price,pay_postage,total_postage,paid,status,refund_status,pay_type,coupon_price,deduction_price,pink_id,delivery_type') ->order('add_time DESC')->limit($first,$limit)->select()->toArray(); foreach ($list as $k=>$order){ $list[$k] = self::tidyOrder($order,true); @@ -722,7 +757,7 @@ class StoreOrder extends ModelBasic $noBuy = self::where('uid',$uid)->where('paid',0)->where('is_del',0)->where('pay_type','<>','offline')->count(); $noPostageNoPink = self::where('o.uid',$uid)->alias('o')->where('o.paid',1)->where('o.pink_id',0)->where('o.is_del',0)->where('o.status',0)->where('o.pay_type','<>','offline')->count(); $noPostageYesPink = self::where('o.uid',$uid)->alias('o')->join('StorePink p','o.pink_id = p.id')->where('p.status',2)->where('o.paid',1)->where('o.is_del',0)->where('o.status',0)->where('o.pay_type','<>','offline')->count(); - $noPostage = bcadd($noPostageNoPink,$noPostageYesPink); + $noPostage = (int)bcadd($noPostageNoPink,$noPostageYesPink,0); $noTake = self::where('uid',$uid)->where('paid',1)->where('is_del',0)->where('status',1)->where('pay_type','<>','offline')->count(); $noReply = self::where('uid',$uid)->where('paid',1)->where('is_del',0)->where('status',2)->count(); $noPink = self::where('o.uid',$uid)->alias('o')->join('StorePink p','o.pink_id = p.id')->where('p.status',1)->where('o.paid',1)->where('o.is_del',0)->where('o.status',0)->where('o.pay_type','<>','offline')->count(); @@ -736,7 +771,7 @@ class StoreOrder extends ModelBasic $userInfo = User::getUserInfo($order['uid']); ModelBasic::beginTrans(); $res1 = false != User::where('uid',$userInfo['uid'])->update(['integral'=>bcadd($userInfo['integral'],$order['gain_integral'],2)]); - $res2 = false != UserBill::income('购买商品赠送积分',$order['uid'],'integral','gain',$order['gain_integral'],$order['id'],$userInfo['integral'],'购买商品赠送'.floatval($order['gain_integral']).'积分'); + $res2 = false != UserBill::income('购买商品赠送积分',$order['uid'],'integral','gain',$order['gain_integral'],$order['id'],bcadd($userInfo['integral'],$order['gain_integral'],2),'购买商品赠送'.floatval($order['gain_integral']).'积分'); $res = $res1 && $res2; ModelBasic::checkTrans($res); return $res; diff --git a/application/wap/model/store/StoreOrder.php b/application/wap/model/store/StoreOrder.php index ba4ebe7b..654f1686 100644 --- a/application/wap/model/store/StoreOrder.php +++ b/application/wap/model/store/StoreOrder.php @@ -213,7 +213,7 @@ class StoreOrder extends ModelBasic $res2 = false !== User::bcDec($userInfo['uid'],'integral',$usedIntegral,'uid'); $payPrice = 0; } - $res2 = $res2 && false != UserBill::expend('积分抵扣',$uid,'integral','deduction',$usedIntegral,$key,$userInfo['integral'],'购买商品使用'.floatval($usedIntegral).'积分抵扣'.floatval($deductionPrice).'元'); + $res2 = $res2 && false != UserBill::expend('积分抵扣',$uid,'integral','deduction',$usedIntegral,$key,bcsub($userInfo['integral'],$usedIntegral,2),'购买商品使用'.floatval($usedIntegral).'积分抵扣'.floatval($deductionPrice).'元'); }else{ $deductionPrice = 0; $usedIntegral = 0; @@ -319,7 +319,7 @@ class StoreOrder extends ModelBasic return self::setErrorInfo('余额不足'.floatval($orderInfo['pay_price'])); self::beginTrans(); $res1 = false !== User::bcDec($uid,'now_money',$orderInfo['pay_price'],'uid'); - $res2 = UserBill::expend('购买商品',$uid,'now_money','pay_product',$orderInfo['pay_price'],$orderInfo['id'],$userInfo['now_money'],'余额支付'.floatval($orderInfo['pay_price']).'元购买商品'); + $res2 = UserBill::expend('购买商品',$uid,'now_money','pay_product',$orderInfo['pay_price'],$orderInfo['id'],bcsub($userInfo['now_money'],$orderInfo['pay_price'],2),'余额支付'.floatval($orderInfo['pay_price']).'元购买商品'); $res3 = self::paySuccess($order_id); try{ HookService::listen('yue_pay_product',$userInfo,$orderInfo,false,PaymentBehavior::class); @@ -684,7 +684,7 @@ class StoreOrder extends ModelBasic $noBuy = self::where('uid',$uid)->where('paid',0)->where('is_del',0)->where('pay_type','<>','offline')->where('refund_status',0)->count(); $noPostageNoPink = self::where('o.uid',$uid)->alias('o')->where('o.paid',1)->where('o.pink_id',0)->where('o.is_del',0)->where('o.status',0)->where('o.pay_type','<>','offline')->where('o.refund_status',0)->count(); $noPostageYesPink = self::where('o.uid',$uid)->alias('o')->join('StorePink p','o.pink_id = p.id')->where('p.status',2)->where('o.paid',1)->where('o.is_del',0)->where('o.status',0)->where('o.refund_status',0)->where('o.pay_type','<>','offline')->count(); - $noPostage = bcadd($noPostageNoPink,$noPostageYesPink); + $noPostage = bcadd($noPostageNoPink,$noPostageYesPink,0); $noTake = self::where('uid',$uid)->where('paid',1)->where('is_del',0)->where('status',1)->where('pay_type','<>','offline')->where('refund_status',0)->count(); $noReply = self::where('uid',$uid)->where('paid',1)->where('is_del',0)->where('status',2)->where('refund_status',0)->count(); $noPink = self::where('o.uid',$uid)->alias('o')->join('StorePink p','o.pink_id = p.id')->where('p.status',1)->where('o.paid',1)->where('o.is_del',0)->where('o.status',0)->where('o.pay_type','<>','offline')->where('o.refund_status',0)->count(); @@ -697,7 +697,7 @@ class StoreOrder extends ModelBasic $userInfo = User::getUserInfo($order['uid']); ModelBasic::beginTrans(); $res1 = false != User::where('uid',$userInfo['uid'])->update(['integral'=>bcadd($userInfo['integral'],$order['gain_integral'],2)]); - $res2 = false != UserBill::income('购买商品赠送积分',$order['uid'],'integral','gain',$order['gain_integral'],$order['id'],$userInfo['integral'],'购买商品赠送'.floatval($order['gain_integral']).'积分'); + $res2 = false != UserBill::income('购买商品赠送积分',$order['uid'],'integral','gain',$order['gain_integral'],$order['id'],bcadd($userInfo['integral'],$order['gain_integral'],2),'购买商品赠送'.floatval($order['gain_integral']).'积分'); $res = $res1 && $res2; ModelBasic::checkTrans($res); return $res; diff --git a/extend/behavior/wechat/PaymentBehavior.php b/extend/behavior/wechat/PaymentBehavior.php index 127d89ef..adc99549 100644 --- a/extend/behavior/wechat/PaymentBehavior.php +++ b/extend/behavior/wechat/PaymentBehavior.php @@ -13,20 +13,29 @@ use app\routine\model\store\StoreOrder as StoreOrderRoutineModel; use app\wap\model\store\StoreOrder as StoreOrderWapModel; use app\wap\model\user\UserRecharge; use service\HookService; -use service\RoutineRefund; use service\WechatService; +use service\MiniProgramService; class PaymentBehavior { /** - * 下单成功之后 + * 公众号下单成功之后 * @param $order * @param $prepay_id */ public static function wechatPaymentPrepare($order, $prepay_id) { + } + /** + * 小程序下单成功之后 + * @param $order + * @param $prepay_id + */ + public static function wechatPaymentPrepareProgram($order, $prepay_id) + { + } /** @@ -121,7 +130,8 @@ class PaymentBehavior public static function routinePayOrderRefund($orderNo, array $opt) { $refundDesc = isset($opt['desc']) ? $opt['desc'] : ''; - $res = RoutineRefund::doRefund($opt['pay_price'],$opt['refund_price'],$orderNo,'',$orderNo,$refundDesc); + $res = MiniProgramService::payOrderRefund($orderNo,$opt);//2.5.36 +// $res = RoutineRefund::doRefund($opt['pay_price'],$opt['refund_price'],$orderNo,'',$orderNo,$refundDesc); } /** diff --git a/view/crmebN/pages/coupon/coupon.json b/view/crmebN/pages/coupon/coupon.json index 5210eccf..fc979ccc 100644 --- a/view/crmebN/pages/coupon/coupon.json +++ b/view/crmebN/pages/coupon/coupon.json @@ -1,19 +1,3 @@ -{"navigationBarTitleText": "优惠券", - "list": [ - { - "term": "满1000元使用", - "time": "2017/09/26至2017/10/26使用", - "money": "500" - }, - { - "term": "满1000元使用", - "time": "2017/09/26至2017/10/26使用", - "money": "500" - }, - { - "term": "满1000元使用", - "time": "2017/09/26至2017/10/26使用", - "money": "500" - } -] +{ + "navigationBarTitleText": "优惠券" } \ No newline at end of file diff --git a/view/crmebN/pages/coupon/coupon.wxml b/view/crmebN/pages/coupon/coupon.wxml index 32a44445..f1b1c69d 100644 --- a/view/crmebN/pages/coupon/coupon.wxml +++ b/view/crmebN/pages/coupon/coupon.wxml @@ -10,15 +10,16 @@ - + 满{{item.use_min_price}}元使用 {{item.add_time}}至{{item.end_time}}使用 - + {{item.coupon_price}} - 未使用 - 已使用 - 已过期 + 未使用 + 已使用 + 已过期 + diff --git a/view/crmebN/pages/coupon/coupon.wxss b/view/crmebN/pages/coupon/coupon.wxss index 02ac7923..13af97b6 100644 --- a/view/crmebN/pages/coupon/coupon.wxss +++ b/view/crmebN/pages/coupon/coupon.wxss @@ -6,8 +6,8 @@ .coupon-text{width:380rpx;height:157rpx;border:1rpx solid #FFC29C;border-radius:8rpx;margin:24rpx 32rpx;text-align:center;} .coupon-term{margin-top:38rpx;font-size:30rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .coupon-time{font-size:22rpx;margin-top:15rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.coupon-money{font-size:46rpx;margin-top:29rpx;} -.coupon-num{font-size:70rpx;} +.coupon-money{font-size:46rpx;margin-top:-7rpx;} +.coupon-num{font-size:60rpx;} .coupon-text{padding-right:23rpx;} .coupon-but{font-size:18rpx;border:1rpx solid #FFB9A8;border-radius:20rpx;text-align:center;width:112rpx;height:37rpx;line-height:36rpx;margin:7rpx auto 0 auto;} .coupon-new{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJEAAACVCAYAAABYSRg1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZGI5NDkyYy0xNjdlLTVmNGUtYmViOS0zNTIxOGIzYjljYWEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUJBRjI5MzU0MkI4MTFFOEIyQUI5REIyOUI0MzhFRDIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUJBRjI5MzQ0MkI4MTFFOEIyQUI5REIyOUI0MzhFRDIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5ZTZiMTY3Yy03NmNjLThlNDItODk1My0wODMzNTk0ZDJmNDciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGRiOTQ5MmMtMTY3ZS01ZjRlLWJlYjktMzUyMThiM2I5Y2Fh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");background-repeat:no-repeat;background-size:100% 100%;width:131rpx;height:135rpx;position:absolute;top:-33rpx;right:-31rpx;} @@ -15,4 +15,5 @@ .use-text{border:1rpx solid #E9E9E9;} .use-but{background-color:#AAA9A9;border:1rpx solid #AAA9A9;color:#C4C4C4;} .loading{font-size:30rpx;width:100%;height:100rpx;line-height:100rpx;justify-content:center;} -.loadingpic{font-size:40rpx;margin:4rpx 20rpx 0 0;} \ No newline at end of file +.loadingpic{font-size:40rpx;margin:4rpx 20rpx 0 0;} +.coupon-text2{width:200rpx;justify-content:center;flex-direction:column;align-items:center;} \ No newline at end of file diff --git a/view/crmebN/pages/order-confirm/order-confirm.js b/view/crmebN/pages/order-confirm/order-confirm.js index 3f1d2318..da938977 100644 --- a/view/crmebN/pages/order-confirm/order-confirm.js +++ b/view/crmebN/pages/order-confirm/order-confirm.js @@ -33,7 +33,9 @@ Page({ addressInfo:[], mark:'', payType:'weixin', - useIntegral:'' + useIntegral:false, + useInegealOrder:0, + statusIntegral: false, }, /** * 生命周期函数--监听页面加载 @@ -73,6 +75,53 @@ Page({ that.getCouponRope(); }, + //使用积分 + checkboxChange: function () { + var that = this; + that.setData({ + statusIntegral: !that.data.statusIntegral,//更改是否勾选积分 + useIntegral: !that.data.useIntegral //是否使用积分 + }); + //用户所有计算积分抵扣金额 + var integralCountPrice = (Number(that.data.userInfo.integral) * Number(that.data.integralRatio)).toFixed(2); + console.log(that.data.userInfo.integral); + console.log(integralCountPrice); + //如果积分抵扣金额能大于订单总金额 + if (Number(integralCountPrice) >= Number(that.data.totalPrice) && that.data.statusIntegral) { + var iCountPrice = Number(that.data.totalPrice);/* priceGroup. */ + var useinegeal = (Number(that.data.totalPrice) / Number(that.data.integralRatio)).toFixed(2); + }else{ + //实际抵扣的积分金额 + if (that.data.useInegealOrder > 0){ + var iCountPrice = (Number(that.data.useInegealOrder) * Number(that.data.integralRatio)).toFixed(2); + var useinegeal = that.data.useInegealOrder; + }else{ + var iCountPrice = (Number(that.data.userInfo.integral) * Number(that.data.integralRatio)).toFixed(2); + var useinegeal = Number(that.data.userInfo.integral); + } + } + //如果使用积分 + console.log(useinegeal); + console.log(that.data.useInegealOrder); + console.log(that.data.totalPrice); + console.log(iCountPrice); + var totalPrice = 0; + if ((Number(that.data.totalPrice) - Number(iCountPrice)).toFixed(2) > 0) totalPrice = (Number(that.data.totalPrice) - Number(iCountPrice)).toFixed(2); + if (that.data.statusIntegral) { + that.setData({ + priceIntegral: '-' + useinegeal, + totalPrice: totalPrice, + useInegealOrder: useinegeal + }); + console.log(that.data.totalPrice); + } else { + console.log(that.data.totalPrice); + that.setData({ + priceIntegral: '', + totalPrice: Number(Number(that.data.totalPrice) + Number(iCountPrice)).toFixed(2) + }); + } + }, bindHideKeyboard:function(e){ this.setData({ mark: e.detail.value @@ -86,7 +135,7 @@ Page({ subOrder:function(e){ var that = this; var header = { - 'content-type': 'application/x-www-form-urlencoded', + 'content-type': 'application/json', }; if (that.data.payType == ''){ wx.showToast({ @@ -166,7 +215,7 @@ Page({ } else if (res.data.code == 200 && res.data.data.status == 'WECHAT_PAY'){ var jsConfig = res.data.data.result.jsConfig; wx.requestPayment({ - timeStamp: jsConfig.timeStamp, + timeStamp: jsConfig.timestamp, nonceStr: jsConfig.nonceStr, package: jsConfig.package, signType: jsConfig.signType, @@ -221,6 +270,7 @@ Page({ }) } }, + //使用优惠券 getCouponRope:function(){ var that = this; if (that.data.couponId){ @@ -232,10 +282,15 @@ Page({ }, success: function (res) { if (res.data.code == 200) { + //原价 + var totalPrice = that.data.totalPrice; + if (Number(res.data.data.coupon_price) > 0){ + totalPrice = Number(that.data.totalPrice) - Number(res.data.data.coupon_price); + } + totalPrice = totalPrice > 0 ? totalPrice : 0; that.setData({ couponInfo: res.data.data, - // couponPrice: '-' + res.data.data.coupon_price, - totalPrice: Number(that.data.totalPrice) - Number(res.data.data.coupon_price) + totalPrice: totalPrice }) }else{ that.setData({ @@ -335,7 +390,7 @@ Page({ offlinePostage: res.data.data.offlinePostage, orderKey: res.data.data.orderKey, priceGroup: res.data.data.priceGroup, - totalPrice: Number(res.data.data.priceGroup.totalPrice) + Number(res.data.data.priceGroup.storePostage), + totalPrice: res.data.data.priceGroup.totalPrice, cartId: res.data.data.cartId, seckillId: res.data.data.seckill_id, usableCoupon: res.data.data.usableCoupon @@ -358,9 +413,9 @@ Page({ BargainId: BargainId, combinationId:combinationId }) - console.log(that.data.BargainId); - console.log(that.data.seckillId); - console.log(that.data.combinationId); + // console.log(that.data.BargainId); + // console.log(that.data.seckillId); + // console.log(that.data.combinationId); }, /** * 生命周期函数--监听页面初次渲染完成 diff --git a/view/crmebN/pages/order-confirm/order-confirm.wxml b/view/crmebN/pages/order-confirm/order-confirm.wxml index c1c9e9b1..5bec4b7a 100644 --- a/view/crmebN/pages/order-confirm/order-confirm.wxml +++ b/view/crmebN/pages/order-confirm/order-confirm.wxml @@ -28,11 +28,21 @@ 运费 快递¥{{priceGroup.storePostage}} - + 优惠券 满{{couponInfo.use_min_price}}减{{couponInfo.coupon_price}} 选择优惠券 + + + 可用积分:{{userInfo.integral}} + {{priceIntegral}} + + + + + + 买家留言 diff --git a/view/crmebN/pages/order-confirm/order-confirm.wxss b/view/crmebN/pages/order-confirm/order-confirm.wxss index 27172d72..0a7025ff 100644 --- a/view/crmebN/pages/order-confirm/order-confirm.wxss +++ b/view/crmebN/pages/order-confirm/order-confirm.wxss @@ -58,7 +58,7 @@ radio .wx-radio-input.wx-radio-input-checked::before{ transform:translate(-50%, -50%) scale(1); -webkit-transform:translate(-50%, -50%) scale(1); } - +checkbox .wx-checkbox-input{border-radius: 50%;width:40rpx;height: 40rpx;} .foot{position: fixed; left: 0; bottom: 0; width: 100%; border-top: 1px solid #eee; background-color: #fff; justify-content: space-between; align-items: center;} .foot .submit-btn{width: 275rpx; height: 100rpx; line-height: 100rpx; background-color: #ff3d3d; color: #fff; text-align: center; border-radius:0; } diff --git a/view/crmebN/pages/orders-con/orders-con.js b/view/crmebN/pages/orders-con/orders-con.js index 2f3aec11..c3e5fcf2 100644 --- a/view/crmebN/pages/orders-con/orders-con.js +++ b/view/crmebN/pages/orders-con/orders-con.js @@ -48,7 +48,7 @@ Page({ wx.showActionSheet({ itemList: ['微信支付', '余额支付'], success(res) { - console.log(res.tapIndex) + // console.log(res.tapIndex) if (res.tapIndex == 0) {//微信支付 wx.request({ url: app.globalData.url + '/routine/auth_api/pay_order?uid=' + app.globalData.uid + '&uni=' + e.target.dataset.id + '&paytype=weixin', @@ -57,9 +57,9 @@ Page({ var data = res.data.data; if (res.data.code == 200) { var jsConfig = res.data.data.result.jsConfig; - console.log(jsConfig); + // console.log(jsConfig); wx.requestPayment({ - timeStamp: jsConfig.timeStamp, + timeStamp: jsConfig.timestamp, nonceStr: jsConfig.nonceStr, package: jsConfig.package, signType: jsConfig.signType, @@ -95,6 +95,12 @@ Page({ } }, }) + }else{ + wx.showToast({ + title: res.data.msg, + icon: 'fail', + duration: 2000 + }) } }, fail: function (res) { @@ -157,7 +163,7 @@ Page({ var jsConfig = res.data.data.result.jsConfig; console.log(jsConfig); wx.requestPayment({ - timeStamp: jsConfig.timeStamp, + timeStamp: jsConfig.timestamp, nonceStr: jsConfig.nonceStr, package: jsConfig.package, signType: jsConfig.signType, @@ -345,6 +351,28 @@ Page({ url: '/pages/index/index' }) }, + goAgain:function(e){ + var that = this; + var uni = e.currentTarget.dataset.uni; + wx.request({ + url: app.globalData.url + '/routine/auth_api/again_order?uid=' + app.globalData.uid, + data: { uni: uni }, + method: 'get', + success: function (res) { + if (res.data.code == 200) { + wx.navigateTo({ + url: '/pages/order-confirm/order-confirm?id=' + res.data.data, + }) + } else { + wx.showToast({ + title: res.data.msg, + icon: 'none', + duration: 2000 + }) + } + } + }); + }, /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/view/crmebN/pages/orders-con/orders-con.wxml b/view/crmebN/pages/orders-con/orders-con.wxml index e2b0cdca..7041f7e4 100644 --- a/view/crmebN/pages/orders-con/orders-con.wxml +++ b/view/crmebN/pages/orders-con/orders-con.wxml @@ -52,8 +52,9 @@ {{item.productInfo.store_name}} - {{item.productInfo.store_name}} - {{item.productInfo.price}}x{{item.cart_num}} + {{item.productInfo.attrInfo.suk}} + {{item.productInfo.attrInfo.price}}x{{item.cart_num}} + {{item.productInfo.price}}x{{item.cart_num}} 评价 已评价 @@ -85,7 +86,7 @@ 折扣价 - ¥{{ordercon.deduction_price}} + ¥{{ordercon.favourable_price}} @@ -117,6 +118,6 @@ 查看物流 确认收货 删除订单 - 再次购买 + 再次购买 \ No newline at end of file