Merge branch 'dev' of https://gitea.lihaink.cn/mkm/shop-php into dev
This commit is contained in:
commit
6286f5607e
@ -1,294 +0,0 @@
|
||||
<?php
|
||||
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
namespace app\common\dao\system\merchant;
|
||||
|
||||
|
||||
use app\common\dao\BaseDao;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
use crmeb\services\VicWordService;
|
||||
use think\db\BaseQuery;
|
||||
use think\db\exception\DataNotFoundException;
|
||||
use think\db\exception\DbException;
|
||||
use think\db\exception\ModelNotFoundException;
|
||||
use think\facade\Db;
|
||||
use think\Model;
|
||||
|
||||
class MerchantDao extends BaseDao
|
||||
{
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @author xaboy
|
||||
* @day 2020-04-16
|
||||
*/
|
||||
protected function getModel(): string
|
||||
{
|
||||
return Merchant::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $where
|
||||
* @return BaseQuery
|
||||
* @author xaboy
|
||||
* @day 2020-04-16
|
||||
*/
|
||||
public function search(array $where, $is_del = 0)
|
||||
{
|
||||
$query = Merchant::getDB()
|
||||
->when($is_del !== null, function ($query) use ($is_del) {
|
||||
$query->where('is_del', $is_del);
|
||||
})
|
||||
->when(isset($where['is_trader']) && $where['is_trader'] !== '', function ($query) use ($where) {
|
||||
$query->where('is_trader', $where['is_trader']);
|
||||
})
|
||||
->when(isset($where['is_best']) && $where['is_best'] !== '', function ($query) use ($where) {
|
||||
$query->where('is_best', $where['is_best']);
|
||||
})
|
||||
->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
|
||||
getModelTime($query, $where['date']);
|
||||
})
|
||||
->when(isset($where['mer_state']) && $where['mer_state'] !== '', function ($query) use ($where) {
|
||||
$query->where('mer_state', $where['mer_state']);
|
||||
})
|
||||
->when(isset($where['mer_id']) && $where['mer_id'] !== '', function ($query) use ($where) {
|
||||
$query->where('mer_id', $where['mer_id']);
|
||||
})
|
||||
->when(isset($where['category_id']) && $where['category_id'] !== '', function ($query) use ($where) {
|
||||
$query->whereIn('category_id', is_array($where['category_id']) ? $where['category_id'] : explode(',', $where['category_id']));
|
||||
})
|
||||
->when(isset($where['type_id']) && $where['type_id'] !== '', function ($query) use ($where) {
|
||||
$query->whereIn('type_id', is_array($where['type_id']) ? $where['type_id'] : explode(',', $where['type_id']));
|
||||
})
|
||||
->when(isset($where['delivery_way']) && $where['delivery_way'] !== '', function ($query) use ($where) {
|
||||
$query->whereLike('delivery_way', "%{$where['delivery_way']}%");
|
||||
});
|
||||
|
||||
|
||||
if (isset($where['keyword']) && $where['keyword']) {
|
||||
if (is_numeric($where['keyword'])) {
|
||||
$query->whereLike('mer_name|mer_keyword|mer_phone', "%{$where['keyword']}%");
|
||||
} else {
|
||||
$word = app()->make(VicWordService::class)->getWord($where['keyword']);
|
||||
$query->where(function ($query) use ($word, $where) {
|
||||
foreach ($word as $item) {
|
||||
if(mb_strlen($item) > 1) {
|
||||
$query->whereOr('mer_name', 'LIKE', "%$item%");
|
||||
}
|
||||
}
|
||||
$query->whereOr('mer_name|mer_keyword', 'LIKE', "%{$where['keyword']}%");
|
||||
});
|
||||
}
|
||||
}
|
||||
if (isset($where['status']) && $where['status'] !== '')
|
||||
$query->where('status', $where['status']);
|
||||
$order = $where['order'] ?? '';
|
||||
$query->when($order, function ($query) use ($where, $order) {
|
||||
if ($order == 'rate') {
|
||||
$query->order('is_best DESC, product_score DESC,service_score DESC,postage_score DESC');
|
||||
} else if ($order == 'location' && isset($where['location']['long'], $where['location']['lat'])) {
|
||||
$lng = (float)$where['location']['long'];
|
||||
$lat = (float)$where['location']['lat'];
|
||||
$query->whereNotNull('lat')->whereNotNull('long')
|
||||
->order(Db::raw("(2 * 6378.137 * ASIN(
|
||||
SQRT(
|
||||
POW( SIN( PI( ) * ( $lng- `long` ) / 360 ), 2 ) + COS( PI( ) * $lat / 180 ) * COS( `lat` * PI( ) / 180 ) * POW( SIN( PI( ) * ( $lat- `lat` ) / 360 ), 2 )
|
||||
)
|
||||
)
|
||||
) ASC "));
|
||||
} else {
|
||||
$query->order('is_best DESC, sales DESC,sort DESC');
|
||||
}
|
||||
}, function ($query) use ($order) {
|
||||
$query->order('is_best DESC, sort DESC,sales DESC');
|
||||
});
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
* @return array|Model|null
|
||||
* @throws DataNotFoundException
|
||||
* @throws DbException
|
||||
* @throws ModelNotFoundException
|
||||
* @author xaboy
|
||||
* @day 2020-04-17
|
||||
*/
|
||||
public function get($id)
|
||||
{
|
||||
return Merchant::getInstance()->where('is_del', 0)->find($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @author Qinii
|
||||
*/
|
||||
public function apiGetOne($id)
|
||||
{
|
||||
return Merchant::getInstance()->where(['is_del' => 0, 'status' => 1, 'mer_state' => 1])->find($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $merId
|
||||
* @author Qinii
|
||||
*/
|
||||
public function incCareCount(int $merId)
|
||||
{
|
||||
($this->getModel()::getDB())->where($this->getPk(), $merId)->inc('care_count', 1)->update();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $merId
|
||||
* @param int $inc
|
||||
* @author xaboy
|
||||
* @day 2020/9/25
|
||||
*/
|
||||
public function incSales($merId, $inc)
|
||||
{
|
||||
($this->getModel()::getDB())->where($this->getPk(), $merId)->inc('sales', $inc)->update();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $merId
|
||||
* @author Qinii
|
||||
*/
|
||||
public function decCareCount(array $merId)
|
||||
{
|
||||
($this->getModel()::getDB())->whereIn($this->getPk(), $merId)->where('care_count', '>', 0)->dec('care_count', 1)->update();
|
||||
}
|
||||
|
||||
public function dateMerchantNum($date)
|
||||
{
|
||||
return Merchant::getDB()->where('is_del', 0)->when($date, function ($query, $date) {
|
||||
getModelTime($query, $date);
|
||||
})->count();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO 获取复制商品次数
|
||||
* @param int $merId
|
||||
* @return mixed
|
||||
* @author Qinii
|
||||
* @day 2020-08-06
|
||||
*/
|
||||
public function getCopyNum(int $merId)
|
||||
{
|
||||
return Merchant::getDB()->where('mer_id', $merId)->value('copy_product_num');
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO 变更复制次数
|
||||
* @param int $merId
|
||||
* @param int $num 正负数
|
||||
* @return mixed
|
||||
* @author Qinii
|
||||
* @day 2020-08-06
|
||||
*/
|
||||
public function changeCopyNum(int $merId, int $num)
|
||||
{
|
||||
return $this->getModel()::where('mer_id', $merId)->inc('copy_product_num', $num)->update();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $field
|
||||
* @param $value
|
||||
* @param int|null $except
|
||||
* @return bool
|
||||
* @author xaboy
|
||||
* @day 2020-03-30
|
||||
*/
|
||||
public function fieldExists($field, $value, ?int $except = null): bool
|
||||
{
|
||||
$query = ($this->getModel())::getDB()->where($field, $value);
|
||||
if (!is_null($except)) $query->where($this->getPk(), '<>', $except);
|
||||
return $query->where('is_del', 0)->count() > 0;
|
||||
}
|
||||
|
||||
public function names(array $ids)
|
||||
{
|
||||
return Merchant::getDB()->whereIn('mer_id',$ids)->column('mer_name');
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO 增加商户余额
|
||||
* @param int $merId
|
||||
* @param float $num
|
||||
* @author Qinii
|
||||
* @day 3/19/21
|
||||
*/
|
||||
public function addMoney(int $merId, float $num)
|
||||
{
|
||||
$field = 'mer_money';
|
||||
$merchant = $this->getModel()::getDB()->where('mer_id', $merId)->find();
|
||||
if ($merchant) {
|
||||
$mer_money = bcadd($merchant[$field], $num, 2);
|
||||
$merchant[$field] = $mer_money;
|
||||
$merchant->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO 减少商户余额
|
||||
* @param int $merId
|
||||
* @param float $num
|
||||
* @author Qinii
|
||||
* @day 3/19/21
|
||||
*/
|
||||
public function subMoney(int $merId, float $num)
|
||||
{
|
||||
$field = 'mer_money';
|
||||
$merchant = $this->getModel()::getDB()->where('mer_id', $merId)->find();
|
||||
if ($merchant) {
|
||||
$mer_money = bcsub($merchant[$field], $num, 2);
|
||||
$merchant[$field] = $mer_money;
|
||||
$merchant->save();
|
||||
}
|
||||
}
|
||||
|
||||
public function clearTypeId(int $typeId)
|
||||
{
|
||||
return Merchant::getDB()->where('type_id', $typeId)->update(['type_id' => 0]);
|
||||
}
|
||||
|
||||
public function addFieldNum(int $merId, int $num, string $field)
|
||||
{
|
||||
if ($num < 0) $num = -$num;
|
||||
$merchant = $this->getModel()::getDB()->where('mer_id', $merId)->find();
|
||||
$number = $merchant[$field] + $num;
|
||||
$merchant[$field] = $number;
|
||||
$merchant->save();
|
||||
}
|
||||
|
||||
public function sumFieldNum(int $merId, int $num, string $field)
|
||||
{
|
||||
if ($num < 0) $num = -$num;
|
||||
$merchant = $this->getModel()::getDB()->where('mer_id', $merId)->find();
|
||||
$number = $merchant[$field] - $num;
|
||||
$merchant[$field] = $number;
|
||||
$merchant->save();
|
||||
}
|
||||
|
||||
public function merIdByImage($merIds)
|
||||
{
|
||||
return $this->getModel()::getDB()->whereIn('mer_id', $merIds)->column('mer_id,mer_avatar');
|
||||
}
|
||||
|
||||
public function updateMargin($typeId, $margin, $is_margin)
|
||||
{
|
||||
return $this->getModel()::where('type_id',$typeId)->where('is_margin','in',[0,1])->update([
|
||||
'is_margin' => $is_margin,
|
||||
'margin' => $margin
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
@ -328,6 +328,46 @@ class StoreOrderRepository extends BaseRepository
|
||||
'mer_id' => $order->mer_id,
|
||||
'financial_record_sn' => $financeSn . ($i++)
|
||||
];
|
||||
//市级供应链
|
||||
$product_mer_id = Db::name('store_order_product')->where('order_id', $order->order_id)->value('product_mer_id');
|
||||
if ($product_mer_id) {
|
||||
$finance[] = [
|
||||
'order_id' => $order->order_id,
|
||||
'order_sn' => $order->order_sn,
|
||||
'user_info' => $groupOrder->user->nickname,
|
||||
'user_id' => $uid,
|
||||
'financial_type' => 'order',
|
||||
'financial_pm' => 0,
|
||||
'type' => 1,
|
||||
'number' => $_payPrice,
|
||||
'mer_id' => $product_mer_id,
|
||||
'financial_record_sn' => $financeSn . (($i++)+1)
|
||||
];
|
||||
//市级供应链押金计算
|
||||
if ($_payPrice > 0) {
|
||||
/** @var MerchantRepository $merchantRepo */
|
||||
$merchantRepo = app()->make(MerchantRepository::class);
|
||||
$merchantRepo->merId = $product_mer_id;
|
||||
$merchantRepo->forceMargin = false;
|
||||
[$_payCityPrice, $finance, $increase] = $merchantRepo->autoMargin($_payPrice, $order, $finance, $financeSn, $i++);
|
||||
}
|
||||
$finance[] = [
|
||||
'order_id' => $order->order_id,
|
||||
'order_sn' => $order->order_sn,
|
||||
'user_info' => $groupOrder->user->nickname,
|
||||
'user_id' => $uid,
|
||||
'financial_type' => 'order_true',
|
||||
'financial_pm' => 0,
|
||||
'type' => 2,
|
||||
'number' => $_payCityPrice,
|
||||
'mer_id' => $product_mer_id,
|
||||
'financial_record_sn' => $financeSn . (($i++)+2)
|
||||
];
|
||||
if (!$is_combine) {
|
||||
app()->make(MerchantRepository::class)->addLockMoney($product_mer_id, 'order', $order->order_id, $_payCityPrice);
|
||||
}
|
||||
}
|
||||
|
||||
//计算手续费
|
||||
$_order_rate = bcsub($order->pay_price, $_payPrice, 2);
|
||||
|
||||
@ -390,6 +430,20 @@ class StoreOrderRepository extends BaseRepository
|
||||
$merchantRepo->forceMargin = false;
|
||||
[$_payPrice, $finance, $increase] = $merchantRepo->autoMargin($_payPrice, $order, $finance, $financeSn, $i++);
|
||||
}
|
||||
if ($order->source == 103) {
|
||||
$finance[] = [
|
||||
'order_id' => $order->order_id,
|
||||
'order_sn' => $order->order_sn,
|
||||
'user_info' => $groupOrder->user->nickname,
|
||||
'user_id' => $uid,
|
||||
'financial_type' => 'commission_to_cloud_warehouse',
|
||||
'financial_pm' => 0,
|
||||
'type' => 1,
|
||||
'number' => $_payPrice,
|
||||
'mer_id' => $order->mer_id,
|
||||
'financial_record_sn' => $financeSn . ($i++)
|
||||
];
|
||||
} else {
|
||||
$finance[] = [
|
||||
'order_id' => $order->order_id,
|
||||
'order_sn' => $order->order_sn,
|
||||
@ -402,6 +456,8 @@ class StoreOrderRepository extends BaseRepository
|
||||
'mer_id' => $order->mer_id,
|
||||
'financial_record_sn' => $financeSn . ($i++)
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
// if ($order->platform_coupon_price > 0) {
|
||||
// $finance[] = [
|
||||
@ -483,9 +539,7 @@ class StoreOrderRepository extends BaseRepository
|
||||
Queue::push(SendSmsJob::class, ['tempId' => 'ORDER_CREATE', 'phone' => $phone['phone'], 'orderId' => $order->order_id, 'id' => 0]); //短信通知
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (count($groupOrder['give_coupon_ids']) > 0) {
|
||||
@ -2738,7 +2792,6 @@ class StoreOrderRepository extends BaseRepository
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
} catch (\Exception $e) {
|
||||
$datas['product_id'] = $product_id ?? 0;
|
||||
$datas['mer_id'] = $merId;
|
||||
|
@ -714,13 +714,10 @@ class FinancialRecordRepository extends BaseRepository
|
||||
//平台手续费 =( order_charge + 预售手续费 presell_charge - 平台退给商户的手续费 refund_charge )
|
||||
$number_1 = bcsub($data['number_order_charge'], $data['number_charge'], 2);
|
||||
if($data['number_supply_chain']>0){
|
||||
$financialType = ['order_true'];
|
||||
$where['type']=2;
|
||||
$where['mer_id']=$where['is_mer'];
|
||||
unset($where['is_mer']);
|
||||
[$data['count_order'], $data['number_order']] = $this->dao->getDataByType($type, $where, $date, $financialType);
|
||||
$financialType = ['commission_to_cloud_warehouse'];
|
||||
[$data['count_commission_to_cloud_warehouse'], $data['number_commission_to_cloud_warehouse']] = $this->dao->getDataByType($type, $where, $date, $financialType);
|
||||
$number_1=bcadd($number_1, $data['number_supply_chain'], 2);
|
||||
$number_1=bcsub( $number_1, $data['number_order'], 2);
|
||||
$number_1=bcsub( $number_1, $data['number_commission_to_cloud_warehouse'], 2);
|
||||
}
|
||||
|
||||
//退回收入 refund_order + 退回佣金
|
||||
|
@ -687,9 +687,9 @@ class MerchantRepository extends BaseRepository
|
||||
public function autoMargin($income, $order, $finance, $financeSn, $index = 0)
|
||||
{
|
||||
$merchant = Merchant::find($this->merId);
|
||||
$margin_type = Db::name('MerchantType')->where('mer_type_id', $merchant['type_id'])->value('margin');
|
||||
// $margin_type = Db::name('MerchantType')->where('mer_type_id', $merchant['type_id'])->value('margin');
|
||||
//商户押金大于支付押金 或者forceMargin==false 直接返回 不计算押金
|
||||
if ($merchant['paid_margin']>= $margin_type|| ($this->forceMargin === false && $merchant['auto_margin_rate'] == 0)) {
|
||||
if ($merchant['paid_margin']>= $merchant['margin']|| ($this->forceMargin === false && $merchant['auto_margin_rate'] == 0)) {
|
||||
return [$income, $finance, false];
|
||||
}
|
||||
$rate = $this->forceMargin ? 100 : $merchant['auto_margin_rate'];
|
||||
@ -712,7 +712,7 @@ class MerchantRepository extends BaseRepository
|
||||
'mer_id' => $this->merId,
|
||||
'financial_record_sn' => $financeSn . $index
|
||||
];
|
||||
if(bcadd($merchant['paid_margin'],$margin)>=$margin_type){
|
||||
if(bcadd($merchant['paid_margin'],$margin)>=$merchant['margin']){
|
||||
$is_margin=10;
|
||||
}else{
|
||||
$is_margin=1;
|
||||
|
@ -366,14 +366,14 @@ class ExcelService
|
||||
'commission_to_village_refund' => '退回平台佣金',
|
||||
'commission_to_town_refund' => '退回平台佣金',
|
||||
'auto_margin_refund' => '退回押金',
|
||||
'commission_to_entry_merchant' => '订单平台佣金',
|
||||
'commission_to_cloud_warehouse' => '订单平台佣金',
|
||||
'commission_to_entry_merchant' => '订单平台佣金',//入口店铺佣金
|
||||
'commission_to_cloud_warehouse' => '订单平台佣金',//云仓佣金
|
||||
'commission_to_entry_merchant_refund' => '退回平台佣金',
|
||||
'commission_to_cloud_warehouse_refund' => '退回平台佣金',
|
||||
'first_order_commission' => '首单拉新',
|
||||
];
|
||||
$sys_pm_1 = ['first_order_commission','supply_chain','order', 'presell', 'order_charge', 'order_presell', 'presell_charge', 'refund_brokerage_one', 'refund_brokerage_two', 'commission_to_platform'];
|
||||
$mer_pm_1 = ['order', 'presell', 'refund_brokerage_one', 'refund_brokerage_two', 'mer_presell',
|
||||
$sys_pm_1 = ['auto_margin','order', 'presell', 'order_charge', 'order_presell', 'presell_charge', 'refund_brokerage_one', 'refund_brokerage_two', 'commission_to_platform'];
|
||||
$mer_pm_1 = ['first_order_commission','order_true','order', 'presell', 'refund_brokerage_one', 'refund_brokerage_two', 'mer_presell',
|
||||
'order_platform_coupon', 'commission_to_cloud_warehouse', 'commission_to_entry_merchant', 'commission_to_town', 'commission_to_village', 'commission_to_service_team'];
|
||||
$date_ = $where['date'];
|
||||
unset($where['date']);
|
||||
|
Loading…
x
Reference in New Issue
Block a user