You've already forked qlg.tsgz.moe
终极提交~
This commit is contained in:
@ -282,12 +282,21 @@ class Orders extends Base{
|
||||
}
|
||||
if(empty($carts['carts']))return WSTReturn("请选择要购买的商品");
|
||||
$carts['ect_pay'] = isset($carts['ect_pay']) ? (int)$carts['ect_pay'] : 0;
|
||||
$carts['goodsType'] = isset($carts['goodsType']) ? $carts['goodsType'] : 0;
|
||||
$carts['goodsType'] = isset($carts['goodsType']) ? $carts['goodsType'] : 1;
|
||||
if(1 == $carts['ect_pay'] || (isset($carts['is_seckilling']) && $carts['is_seckilling'] == 1) || (isset($carts['promotion_goods']) && $carts['promotion_goods'] == 1)){//不可抵用惠宝
|
||||
$isUseScore=0;
|
||||
$useScore=0;
|
||||
}
|
||||
|
||||
$from = (int)input('post.from');
|
||||
if(3 == $from){
|
||||
$carts['goodsType'] = $from;
|
||||
$helpUserId = (int)input('post.helpUserId');//助购用户ID
|
||||
$helpLevel = (int)input('post.helpLevel');//助购用户ID
|
||||
if($helpUserId<=0){
|
||||
return WSTReturn("请选择助购用户");
|
||||
}
|
||||
if($helpUserId == $userId && $userId!=1){$helpLevel=0;}
|
||||
}
|
||||
$pay_code = input('payCode');
|
||||
//$carts['ect_pay']=0;
|
||||
// if($carts['ect_pay'] == 1 && $pay_code !='ect'){
|
||||
@ -382,6 +391,8 @@ class Orders extends Base{
|
||||
//计算运费和总金额
|
||||
$order['deliverType'] = $deliverType;
|
||||
$order['deliverMoney']=0;
|
||||
$order['helpUserId']=isset($helpUserId)?$helpUserId:0;//助购用户,只有助购的时候有
|
||||
$order['helpUserLevel']=isset($helpLevel)?$helpLevel:0;//助购用户,只有助购的时候有
|
||||
if($shopOrder['isFreeShipping']){
|
||||
$order['deliverMoney'] = 0;
|
||||
}else{
|
||||
@ -1016,7 +1027,84 @@ class Orders extends Base{
|
||||
}
|
||||
return WSTReturn('操作失败',-1);
|
||||
}
|
||||
/**
|
||||
/**
|
||||
* 助购吧获取用户订单列表
|
||||
*/
|
||||
public function userZgOrdersByPage($orderStatus, $isAppraise = -1, $uId=0){
|
||||
$userId = ($uId==0)?(int)session('WST_USER.userId'):$uId;
|
||||
$orderNo = input('post.orderNo');
|
||||
$shopName = input('post.shopName');
|
||||
$isRefund = (int)input('post.isRefund',-1);
|
||||
$where = ['o.userId'=>$userId,'o.dataFlag'=>1];
|
||||
if(is_array($orderStatus)){
|
||||
$where['orderStatus'] = ['in',$orderStatus];
|
||||
}else{
|
||||
$where['orderStatus'] = $orderStatus;
|
||||
}
|
||||
if($isAppraise!=-1)$where['isAppraise'] = $isAppraise;
|
||||
if($orderNo!=''){
|
||||
$where['o.orderNo'] = ['like',"%$orderNo%"];
|
||||
}
|
||||
if($shopName != ''){
|
||||
$where['s.shopName'] = ['like',"%$shopName%"];
|
||||
}
|
||||
if(in_array($isRefund,[0,1])){
|
||||
$where['isRefund'] = $isRefund;
|
||||
}
|
||||
$where["o.goodsType"]=3;
|
||||
$page = $this->alias('o')->join('__SHOPS__ s','o.shopId=s.shopId','left')
|
||||
->join('__ORDER_COMPLAINS__ oc','oc.orderId=o.orderId','left')
|
||||
->join('__ORDERS_ECT__ ore','ore.orderId=o.orderId','left')
|
||||
->join('__ORDER_REFUNDS__ orf','orf.orderId=o.orderId and orf.refundStatus!=-1','left')
|
||||
->where($where)
|
||||
->field('ore.orderEctNum,o.pay_name,ore.ectPrice,o.orderRemarks,o.noticeDeliver,o.orderId,o.orderNo,o.shopConfirm,s.shopName,s.shopId,s.shopQQ,s.phone,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,
|
||||
o.orderStatus,o.deliverType,o.helpUserId,o.helpUserLevel,o.goodsType,deliverMoney,isPay,payType,payFrom,o.orderStatus,needPay,isAppraise,isRefund,orderSrc,o.createTime,o.useScore,oc.complainId,orf.id refundId,o.orderCode')
|
||||
->order('o.createTime', 'desc')
|
||||
->paginate(input('pagesize/d'))->toArray();
|
||||
if(count($page['Rows'])>0){
|
||||
$orderIds = [];
|
||||
foreach ($page['Rows'] as $v){
|
||||
$orderIds[] = $v['orderId'];
|
||||
}
|
||||
$goods = Db::name('order_goods')->where('orderId','in',$orderIds)->select();
|
||||
$goodsMap = [];
|
||||
foreach ($goods as $v){
|
||||
$v['goodsSpecNames'] = str_replace('@@_@@','、',$v['goodsSpecNames']);
|
||||
$v['marketPrice'] = Db::name('goods')->where(['goodsId'=>$v['goodsId']])->value('marketPrice');//添加返回市场价 mark hsf 20180112
|
||||
$goodsMap[$v['orderId']][] = $v;
|
||||
}
|
||||
foreach ($page['Rows'] as $key => $v){
|
||||
$page['Rows'][$key]['allowRefund'] = 0;
|
||||
//只要是已支付的,并且没有申请退款的,都可以申请退款操作
|
||||
if($v['isPay']==1 && $v['refundId']==''){
|
||||
$page['Rows'][$key]['allowRefund'] = 1;
|
||||
}
|
||||
if($v["helpUserId"]!=0){
|
||||
$page['Rows'][$key]['helpUser']=Db::name('users')->where('userId','=',$v["helpUserId"])
|
||||
->field("userName")->find();
|
||||
}else{
|
||||
$page['Rows'][$key]['helpUser']=["userName"=>''];
|
||||
}
|
||||
//货到付款中使用了惠宝支付的也可以申请退款
|
||||
if($v['payType']==0 && $v['refundId']=='' && $v['useScore']>0){
|
||||
$page['Rows'][$key]['allowRefund'] = 1;
|
||||
}
|
||||
$page['Rows'][$key]['list'] = $goodsMap[$v['orderId']];
|
||||
$page['Rows'][$key]['isComplain'] = 1;
|
||||
if(($v['complainId']=='') && ($v['payType']==0 || ($v['payType']==1 && $v['orderStatus']!=-2))){
|
||||
$page['Rows'][$key]['isComplain'] = '';
|
||||
}
|
||||
$page['Rows'][$key]['payTypeName'] = WSTLangPayType($v['payType']);
|
||||
$page['Rows'][$key]['deliverType'] = WSTLangDeliverType($v['deliverType']==1);
|
||||
$page['Rows'][$key]['status'] = WSTLangOrderStatus($v['orderStatus']);
|
||||
$page['Rows'][$key]['orderCodeTitle'] = WSTOrderCodeTitle($v['orderCode']);
|
||||
}
|
||||
hook('afterQueryUserOrders',['page'=>&$page]);
|
||||
}
|
||||
return $page;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户订单列表
|
||||
*/
|
||||
public function userOrdersByPage($orderStatus, $isAppraise = -1, $uId=0){
|
||||
@ -1047,7 +1135,7 @@ class Orders extends Base{
|
||||
->join('__ORDER_REFUNDS__ orf','orf.orderId=o.orderId and orf.refundStatus!=-1','left')
|
||||
->where($where)
|
||||
->field('ore.orderEctNum,o.pay_name,ore.ectPrice,o.orderRemarks,o.noticeDeliver,o.orderId,o.orderNo,o.shopConfirm,s.shopName,s.shopId,s.shopQQ,s.phone,s.shopWangWang,o.goodsMoney,o.totalMoney,o.realTotalMoney,
|
||||
o.orderStatus,o.deliverType,deliverMoney,isPay,payType,payFrom,o.orderStatus,needPay,isAppraise,isRefund,orderSrc,o.createTime,o.useScore,oc.complainId,orf.id refundId,o.orderCode')
|
||||
o.orderStatus,o.deliverType,o.helpUserId,o.helpUserLevel,o.goodsType,deliverMoney,isPay,payType,payFrom,o.orderStatus,needPay,isAppraise,isRefund,orderSrc,o.createTime,o.useScore,oc.complainId,orf.id refundId,o.orderCode')
|
||||
->order('o.createTime', 'desc')
|
||||
->paginate(input('pagesize/d'))->toArray();
|
||||
if(count($page['Rows'])>0){
|
||||
@ -1068,6 +1156,7 @@ class Orders extends Base{
|
||||
if($v['isPay']==1 && $v['refundId']==''){
|
||||
$page['Rows'][$key]['allowRefund'] = 1;
|
||||
}
|
||||
$page['Rows'][$key]['helpUser']=["userName"=>''];
|
||||
//货到付款中使用了惠宝支付的也可以申请退款
|
||||
if($v['payType']==0 && $v['refundId']=='' && $v['useScore']>0){
|
||||
$page['Rows'][$key]['allowRefund'] = 1;
|
||||
@ -1081,7 +1170,6 @@ class Orders extends Base{
|
||||
$page['Rows'][$key]['deliverType'] = WSTLangDeliverType($v['deliverType']==1);
|
||||
$page['Rows'][$key]['status'] = WSTLangOrderStatus($v['orderStatus']);
|
||||
$page['Rows'][$key]['orderCodeTitle'] = WSTOrderCodeTitle($v['orderCode']);
|
||||
|
||||
}
|
||||
hook('afterQueryUserOrders',['page'=>&$page]);
|
||||
}
|
||||
@ -1346,7 +1434,7 @@ class Orders extends Base{
|
||||
}
|
||||
$order = $this->alias('o')->join('__SHOPS__ s','o.shopId=s.shopId','left')
|
||||
->where(['o.userId'=>$userId,'o.orderId'=>$orderId,'o.orderStatus'=>1])
|
||||
->field('o.orderId,o.orderNo,o.payType,s.userId,s.shopId,o.orderScore,o.payFrom,o.realTotalMoney,o.goodsType,commissionFee')->find();
|
||||
->field('o.orderId,o.orderNo,o.helpUserId,o.helpUserLevel,o.payType,s.userId,s.shopId,o.orderScore,o.payFrom,o.goodsMoney,o.realTotalMoney,o.goodsType,commissionFee')->find();
|
||||
if(!empty($order)){
|
||||
Db::startTrans();
|
||||
try{
|
||||
@ -1372,9 +1460,9 @@ class Orders extends Base{
|
||||
model('common/Settlements')->speedySettlement($orderId);
|
||||
}
|
||||
}
|
||||
$m = Model('common/Table');
|
||||
$userInfo = getUserInfo(['userId'=>$userId],'userName,userType,buyHelpMoney,helpMaxSaleMoney');
|
||||
if (2 == $order['goodsType']){//助微吧购物
|
||||
$m = Model('common/Table');
|
||||
$userInfo = getUserInfo(['userId'=>$userId],'userType,buyHelpMoney,helpMaxSaleMoney');
|
||||
if (1 == $userInfo['userType']){//是商户购物
|
||||
//加助微吧购物金额
|
||||
$m->setTable('users');
|
||||
@ -1406,7 +1494,91 @@ class Orders extends Base{
|
||||
}else{
|
||||
$m->insertInfo(['userId'=>$userId,'ectNum'=>$order['realTotalMoney'],'ectType'=>1,'dataRemarks'=>'购户购物']);
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif (3 == $order['goodsType']){//助购吧购物
|
||||
// 计算 SUM(商品*优惠率) 的值
|
||||
$calBaseNum = Db::table("__ORDERS__ o")->join("__ORDER_GOODS__ g", "g.orderId=o.orderId", 'inner')
|
||||
->where(['o.userId'=>$userId,'o.orderId'=>$orderId])
|
||||
->sum('g.goodsPrice*g.discountRate*0.01');
|
||||
// foreach ($orderGoods as $orderGood) {
|
||||
// // 在不考虑数据库变更的情况下,这两个值都是存储的数字类型,所以不做特殊处理
|
||||
// $calBaseNum += (float)$orderGood['goodsPrice'] * (float)$orderGood['discountRate'] / 100;
|
||||
// }
|
||||
|
||||
$sm = Model('common/SysSummary');
|
||||
|
||||
// step 2 商户支付优惠款给平台:10000×0.4=4000
|
||||
// 10.15添加 优惠款 全额进入 代快付值
|
||||
$sm->addSysSummary($calBaseNum,0,1);
|
||||
|
||||
$vm = new UserVouchers();
|
||||
|
||||
|
||||
// step 4 平台送商户的推荐人:当消费超过限制值时10000×0.4×0.5×0.5=1000“预获产品券”。
|
||||
// 当消费低于限制值时10000×0.4×0.5×0.2=400“预获产品券”。
|
||||
$uUserId = UserTrees::getUpperId($order["userId"]);
|
||||
if($uUserId == null){$uUserId = 1;}
|
||||
$data = Db::query('SELECT count(`goodsMoney`) as `total` FROM `hyh_orders` WHERE DATE_FORMAT(`createTime`,"%Y%m%d")=DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 day),"%Y%m%d") and `userId`="'.$uUserId.'"');
|
||||
// 因为count一定会有数据所以不判断了
|
||||
if($data[0]["total"]<=dataConf("refPreProductYdGTMoney")){
|
||||
$vm->insertVouchersNotice($uUserId, $orderId,$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*((float)dataConf("refPreProductNoInSaleScale")/100),
|
||||
0,'交易订单【'.$order['orderNo'].'】推荐商户所得',1);
|
||||
}else{
|
||||
$vm->insertVouchersNotice($uUserId, $orderId,$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*((float)dataConf("refPreProductYesInSaleScale ")/100),
|
||||
0,'交易订单【'.$order['orderNo'].'】推荐商户所得',1);
|
||||
}
|
||||
|
||||
// step 5 平台送自己:10000×N“助购预获”,
|
||||
// 10000“预获产品券”;
|
||||
// 10000×0.4×0.5×0.5=1000“预获优惠券”。
|
||||
$vm->insertHelpSaleNotice($userId, $orderId, $order['goodsMoney']*((int)$order["helpUserLevel"])*(float)dataConf("helpSaleCalBase"),
|
||||
'交易订单【'.$order['orderNo'].'】购户购物所得', 1);
|
||||
$vm->insertVouchersNotice($userId, $orderId, $order['goodsMoney'], $calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*(1-((float)dataConf("helpSaleChildrenGet")/100)),
|
||||
'您的订单编号'.$order['orderNo'].'完成添加',1);
|
||||
|
||||
// step 6 平台送自己的推荐人:当消费超过限制值时10000×0.4×0.5×0.5=1000“预获产品券”;
|
||||
// 当消费低于限制值时10000×0.4×0.5×0.2=400“预获产品券”。
|
||||
$uUserId = UserTrees::getUpperId($userId);
|
||||
if($uUserId === null){$uUserId = 1;}
|
||||
$data = Db::query('SELECT count(`goodsMoney`) as `total` FROM `hyh_orders` WHERE DATE_FORMAT(`createTime`,"%Y%m%d")=DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 day),"%Y%m%d") and `userId`="'.$uUserId.'"');
|
||||
// 因为count一定会有数据所以不判断了
|
||||
if($data[0]["total"]<=dataConf("refPreProductYdGTMoney")){
|
||||
$vm->insertVouchersNotice($uUserId, $orderId,$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*((float)dataConf("refPreProductNoInSaleScale")/100),
|
||||
0,'交易订单【'.$order['orderNo'].'】推荐购户所得',1);
|
||||
}else{
|
||||
$vm->insertVouchersNotice($uUserId, $orderId,$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*((float)dataConf("refPreProductYesInSaleScale ")/100),
|
||||
0,'交易订单【'.$order['orderNo'].'】推荐购户所得',1);
|
||||
}
|
||||
|
||||
// step 7 平台送自己的被推荐人:10000×0.4×0.5×0.5÷5=200“预获产品券”。
|
||||
$childes = DB::table("hyh_user_trees")->where(["pid"=>$userId])->field("uid")->select();
|
||||
foreach ($childes as $child){
|
||||
$vm->insertVouchersNotice($child['uid'], $orderId,
|
||||
$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100)*((float)dataConf("helpSaleChildrenGet")/100)/sizeof($childes), 0,
|
||||
'交易订单【'.$order['orderNo'].'】被推荐所得',1);
|
||||
}
|
||||
|
||||
// step 8 平台送自己的上第N层:扣减“助购预获”、“预获产品券”各10000×0.4×0.5=2000,
|
||||
// 同时添加10000×0.4×0.5=2000“已获产品券”。
|
||||
if((int)$order["helpUserLevel"]!==0){
|
||||
$vm->insertHelpSaleNotice($order["helpUserId"], $orderId, $calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100),
|
||||
'预获助购转换所扣', 0);
|
||||
$sm->addSysSummary($calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100),0,2);
|
||||
$vm->insertVouchersNotice($order['helpUserId'], $orderId, $calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100), 0,
|
||||
'预获产品券转换所扣',0);
|
||||
$vm->insertAlreadyVouchersNotice($order['helpUserId'], $orderId, $calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100), 0,
|
||||
'预获产品券转换所得',1);
|
||||
}else{
|
||||
$vm->insertHelpSaleNotice($order["helpUserId"], $orderId, 0,
|
||||
'预获产品券转换所扣', 0);
|
||||
}
|
||||
|
||||
// 10.15添加:助购户的 助购预获 减少的同时 代快付值等额减少
|
||||
Db::name("orders")->where(compact('orderId'))->update([
|
||||
"helpGetCount"=>$order['goodsMoney']*((int)$order["helpUserLevel"])*(float)dataConf("helpSaleCalBase"),
|
||||
"helpGetCount2"=>$calBaseNum*((float)dataConf('helpSaleCouponsCalBase')/100),
|
||||
]);
|
||||
}
|
||||
//新增订单日志
|
||||
$logOrder = [];
|
||||
$logOrder['orderId'] = $orderId;
|
||||
@ -1458,10 +1630,15 @@ class Orders extends Base{
|
||||
}
|
||||
Db::commit();
|
||||
return WSTReturn('操作成功',1);
|
||||
}
|
||||
}else{
|
||||
// 避免多次事物重叠
|
||||
Db::rollback();
|
||||
return WSTReturn('操作失败',-1);
|
||||
}
|
||||
}catch (\Exception $e) {
|
||||
Db::rollback();errLog($e);
|
||||
// dump($e);
|
||||
Db::rollback();
|
||||
dump($e);die();
|
||||
errLog($e);
|
||||
return WSTReturn('操作失败',-1);
|
||||
}
|
||||
}
|
||||
@ -3022,8 +3199,8 @@ class Orders extends Base{
|
||||
//产品券
|
||||
$buyerMaxProductScale = $this->round(dataConf('buyerMaxProductScale')*0.01,2);
|
||||
$pay['maxProduct'] = $this->round($needPay * $buyerMaxProductScale,2);//最大可用产品券
|
||||
$pay['productHandlingFee'] = $this->round(dataConf('useHasProductHandlingFee')*0.01,2);//产品券手续费
|
||||
$pay['productTaxFee'] = $this->round(dataConf('useHasProductTaxFee')*0.01,2);//产品券税费
|
||||
$pay['productHandlingFee'] = $this->round(dataConf('useHasHandlingFee')*0.01,2);//产品券手续费
|
||||
$pay['productTaxFee'] = $this->round(dataConf('useHasTaxFee')*0.01,2);//产品券税费
|
||||
//获取最大可用券值
|
||||
//$allProductNum = $this->getMaxNum($pay['maxProduct'],(1-$pay['productHandlingFee']-$pay['productTaxFee'] ));
|
||||
$allProductNum = $this->round($pay['maxProduct'] + ($pay['maxProduct'] / (1 - $pay['productHandlingFee'] - $pay['productTaxFee'])) * ($pay['productHandlingFee']+ $pay['productTaxFee']),2);
|
||||
@ -3039,8 +3216,8 @@ class Orders extends Base{
|
||||
$pay['product']['useProductTaxFee'] = $this->round($pay['product']['useProduct'] * $pay['productTaxFee'],2);
|
||||
$pay['product']['useProductOk'] = $this->round($pay['product']['useProduct'] - $pay['product']['useProductHandlingFee'] - $pay['product']['useProductTaxFee'],3);
|
||||
//优惠券
|
||||
$pay['coupousHandlingFee'] = $this->round(dataConf('useHasCoupousHandlingFee')*0.01,2);//优惠券手续费
|
||||
$pay['coupousTaxFee'] = $this->round(dataConf('useHasCoupousTaxFee')*0.01,2);//优惠券税费
|
||||
$pay['coupousHandlingFee'] = $this->round(dataConf('useHasHandlingFee')*0.01,2);//优惠券手续费
|
||||
$pay['coupousTaxFee'] = $this->round(dataConf('useHasTaxFee')*0.01,2);//优惠券税费
|
||||
$pay['maxCoupons'] = $this->round($needPay - $pay['product']['useProductOk'],2) ;//最大可用其他券,优惠券+旺旺券+现金券
|
||||
//获取最大可用券值
|
||||
//$allCouponsNum = $this->getMaxNum($pay['maxCoupons'],(1-$pay['coupousHandlingFee']-$pay['coupousTaxFee'] ));
|
||||
|
Reference in New Issue
Block a user