Merge pull request 'dev' (#9) from dev into master
Reviewed-on: http://git.excellentkk.cn/mkm/shop-php/pulls/9
This commit is contained in:
commit
b0e7b1644e
@ -52,6 +52,9 @@ class SpuDao extends BaseDao
|
|||||||
$query->when(isset($where['is_del']) && $where['is_del'] !== '',function($query)use($where){
|
$query->when(isset($where['is_del']) && $where['is_del'] !== '',function($query)use($where){
|
||||||
$query->where('P.is_del',$where['is_del']);
|
$query->where('P.is_del',$where['is_del']);
|
||||||
})
|
})
|
||||||
|
->when(isset($where['product_id']) && $where['product_id'] !== '',function($query)use($where){
|
||||||
|
$query->where('P.product_id','in',$where['product_id']);
|
||||||
|
})
|
||||||
->when(isset($where['mer_id']) && $where['mer_id'] !== '',function($query)use($where){
|
->when(isset($where['mer_id']) && $where['mer_id'] !== '',function($query)use($where){
|
||||||
$query->where('P.mer_id',$where['mer_id']);
|
$query->where('P.mer_id',$where['mer_id']);
|
||||||
})
|
})
|
||||||
|
@ -20,6 +20,13 @@ use app\common\model\system\merchant\FinancialRecord;
|
|||||||
class FinancialRecordDao extends BaseDao
|
class FinancialRecordDao extends BaseDao
|
||||||
{
|
{
|
||||||
|
|
||||||
|
const Outlay = 0; //支出
|
||||||
|
const Income = 1; //收入
|
||||||
|
|
||||||
|
const TypeMerchant = 0; //商户
|
||||||
|
const TypeCommon = 1; //公共
|
||||||
|
const TypePlatform = 2; //平台
|
||||||
|
|
||||||
protected function getModel(): string
|
protected function getModel(): string
|
||||||
{
|
{
|
||||||
return FinancialRecord::class;
|
return FinancialRecord::class;
|
||||||
|
@ -12,8 +12,10 @@
|
|||||||
namespace app\common\repositories\store\order;
|
namespace app\common\repositories\store\order;
|
||||||
|
|
||||||
use app\common\dao\store\order\StoreOrderDao;
|
use app\common\dao\store\order\StoreOrderDao;
|
||||||
|
use app\common\dao\system\merchant\FinancialRecordDao;
|
||||||
use app\common\model\store\order\StoreGroupOrder;
|
use app\common\model\store\order\StoreGroupOrder;
|
||||||
use app\common\model\store\order\StoreOrder;
|
use app\common\model\store\order\StoreOrder;
|
||||||
|
use app\common\model\system\merchant\Merchant;
|
||||||
use app\common\model\user\User;
|
use app\common\model\user\User;
|
||||||
use app\common\repositories\BaseRepository;
|
use app\common\repositories\BaseRepository;
|
||||||
use app\common\repositories\delivery\DeliveryOrderRepository;
|
use app\common\repositories\delivery\DeliveryOrderRepository;
|
||||||
@ -374,6 +376,10 @@ class StoreOrderRepository extends BaseRepository
|
|||||||
$_payPrice = bcadd($_payPrice, $order->platform_coupon_price, 2);
|
$_payPrice = bcadd($_payPrice, $order->platform_coupon_price, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($_payPrice > 0) {
|
||||||
|
$this->autoMargin($_payPrice, $order, $finance, $financeSn, $i);
|
||||||
|
}
|
||||||
|
|
||||||
if (!$is_combine) {
|
if (!$is_combine) {
|
||||||
app()->make(MerchantRepository::class)->addLockMoney($order->mer_id, 'order', $order->order_id, $_payPrice);
|
app()->make(MerchantRepository::class)->addLockMoney($order->mer_id, 'order', $order->order_id, $_payPrice);
|
||||||
}
|
}
|
||||||
@ -450,6 +456,39 @@ class StoreOrderRepository extends BaseRepository
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动扣除保证金
|
||||||
|
* @param $income
|
||||||
|
* @param $order
|
||||||
|
* @param $finance
|
||||||
|
* @param $financeSn
|
||||||
|
* @param $index
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function autoMargin(&$income, $order, &$finance, $financeSn, $index = 0)
|
||||||
|
{
|
||||||
|
$merchant = Merchant::find($order->mer_id);
|
||||||
|
//商户保证金未完全缴纳且设置了自动扣除比例
|
||||||
|
if ($merchant['margin'] > $merchant['paid_margin'] && $merchant['auto_margin_rate'] > 0 && $merchant['auto_margin_rate'] <= 100) {
|
||||||
|
$margin = bcmul($income, $merchant['auto_margin_rate'] / 100, 2);
|
||||||
|
$margin = min(bcsub($merchant['margin'], $merchant['paid_margin'], 2), $margin);
|
||||||
|
$income = max(bcsub($income, $margin, 2), 0);
|
||||||
|
$finance[] = [
|
||||||
|
'order_id' => $order->order_id,
|
||||||
|
'order_sn' => $order->order_sn,
|
||||||
|
'user_info' => $order->user->nickname,
|
||||||
|
'user_id' => $order->uid,
|
||||||
|
'financial_type' => 'auto_margin',
|
||||||
|
'financial_pm' => FinancialRecordDao::Outlay,
|
||||||
|
'type' => FinancialRecordDao::TypePlatform,
|
||||||
|
'number' => $margin,
|
||||||
|
'mer_id' => $order->mer_id,
|
||||||
|
'financial_record_sn' => $financeSn . $index
|
||||||
|
];
|
||||||
|
$merchant->save(['paid_margin' => bcadd($merchant['paid_margin'], $margin, 2)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动打印
|
* 自动打印
|
||||||
* @Author:Qinii
|
* @Author:Qinii
|
||||||
|
@ -1563,9 +1563,19 @@ class ProductRepository extends BaseRepository
|
|||||||
Db::rollback();
|
Db::rollback();
|
||||||
throw new ValidateException('商品更新出错');
|
throw new ValidateException('商品更新出错');
|
||||||
}
|
}
|
||||||
if (app()->make(SpuRepository::class)->changeStatus($id, $product->product_type) === false) {
|
$changeStatus= app()->make(SpuRepository::class)->changeStatus($id, $product->product_type);
|
||||||
|
if ($changeStatus=== false) {
|
||||||
Db::rollback();
|
Db::rollback();
|
||||||
throw new ValidateException('商品spu更新出错');
|
throw new ValidateException('商品spu更新出错');
|
||||||
|
}else{
|
||||||
|
if ($product->product_type==0){
|
||||||
|
$RedisCacheService = app()->make(RedisCacheService::class);
|
||||||
|
if ($status==1){
|
||||||
|
$RedisCacheService->SADD ('CloudMerchanSpu'.$product['mer_id'], $product['product_id']);
|
||||||
|
}else{
|
||||||
|
$RedisCacheService->SREM ('CloudMerchanSpu'.$product['mer_id'], $product['product_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Db::commit();
|
Db::commit();
|
||||||
}
|
}
|
||||||
|
@ -161,9 +161,15 @@ class SpuRepository extends BaseRepository
|
|||||||
{
|
{
|
||||||
$where['spu_status'] = 1;
|
$where['spu_status'] = 1;
|
||||||
$where['mer_status'] = 1;
|
$where['mer_status'] = 1;
|
||||||
|
$RedisCacheService = app()->make(RedisCacheService::class);
|
||||||
|
$exists=$RedisCacheService->exists('CloudMerchanSpu'.$where['mer_id']);
|
||||||
|
if ($exists){
|
||||||
|
$Spu_arr=$RedisCacheService->SRANDMEMBER('CloudMerchanSpu'.$where['mer_id'], 10);
|
||||||
|
$where['product_id'] =$Spu_arr;
|
||||||
|
}
|
||||||
$query = $this->dao->search($where);
|
$query = $this->dao->search($where);
|
||||||
|
|
||||||
$count = $query->count();
|
$count = 0;
|
||||||
// $Sql=$query->page($page, $limit)->setOption('field', [])->field($this->productFiled)->fetchSql(true);
|
// $Sql=$query->page($page, $limit)->setOption('field', [])->field($this->productFiled)->fetchSql(true);
|
||||||
$query->with([
|
$query->with([
|
||||||
'merchant' => function ($query) {
|
'merchant' => function ($query) {
|
||||||
@ -171,7 +177,7 @@ class SpuRepository extends BaseRepository
|
|||||||
},
|
},
|
||||||
'issetCoupon',
|
'issetCoupon',
|
||||||
]);
|
]);
|
||||||
$list = $query->page($page, $limit)->setOption('field', [])->field($this->productFiled)->orderRaw('rand()')->select();
|
$list = $query->setOption('field', [])->field($this->productFiled)->select();
|
||||||
$append = ['stop_time','svip_price','show_svip_info','is_svip_price'];
|
$append = ['stop_time','svip_price','show_svip_info','is_svip_price'];
|
||||||
|
|
||||||
$list->append($append);
|
$list->append($append);
|
||||||
|
@ -37,9 +37,9 @@ class FinancialRecord extends BaseController
|
|||||||
$merId = $this->request->merId();
|
$merId = $this->request->merId();
|
||||||
if ($merId) {
|
if ($merId) {
|
||||||
$where['mer_id'] = $merId;
|
$where['mer_id'] = $merId;
|
||||||
$where['financial_type'] = ['order', 'mer_accoubts', 'brokerage_one', 'brokerage_two', 'refund_brokerage_one', 'refund_brokerage_two', 'refund_order','order_platform_coupon','order_svip_coupon'];
|
$where['financial_type'] = ['order', 'mer_accoubts', 'brokerage_one', 'brokerage_two', 'refund_brokerage_one', 'refund_brokerage_two', 'refund_order','order_platform_coupon','order_svip_coupon' ,'auto_margin'];
|
||||||
} else {
|
} else {
|
||||||
$where['financial_type'] = ['order', 'sys_accoubts', 'brokerage_one', 'brokerage_two', 'refund_brokerage_one', 'refund_brokerage_two', 'refund_order','order_platform_coupon','order_svip_coupon'];
|
$where['financial_type'] = ['order', 'sys_accoubts', 'brokerage_one', 'brokerage_two', 'refund_brokerage_one', 'refund_brokerage_two', 'refund_order','order_platform_coupon','order_svip_coupon', 'auto_margin'];
|
||||||
}
|
}
|
||||||
return app('json')->success($this->repository->getList($where, $page, $limit));
|
return app('json')->success($this->repository->getList($where, $page, $limit));
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace app\controller\api\store\product;
|
namespace app\controller\api\store\product;
|
||||||
use think\exception\ValidateException;
|
use app\common\repositories\store\product\ProductRepository;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
use crmeb\basic\BaseController;
|
use crmeb\basic\BaseController;
|
||||||
|
|
||||||
@ -28,6 +28,7 @@ class StoreMicro extends BaseController
|
|||||||
return app('json')->success($store_product);
|
return app('json')->success($store_product);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//商品详情
|
||||||
public function ProductDetails($id){
|
public function ProductDetails($id){
|
||||||
$find=Db::name('store_product')->where('product_id',$id)
|
$find=Db::name('store_product')->where('product_id',$id)
|
||||||
->withAttr('attr_value',function ($value,$data){
|
->withAttr('attr_value',function ($value,$data){
|
||||||
@ -35,8 +36,47 @@ class StoreMicro extends BaseController
|
|||||||
})
|
})
|
||||||
->find();
|
->find();
|
||||||
return app('json')->success(['list'=>$find]);
|
return app('json')->success(['list'=>$find]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交导入商品id
|
||||||
|
public function ProductImport(){
|
||||||
|
$product_id = $this->request->param('id', 0);
|
||||||
|
$user = $this->request->userInfo();
|
||||||
|
$mer_id =Db::name('store_service')->where('uid',$user['uid'])->where('status',1)->value('mer_id');
|
||||||
|
if ($mer_id==0) return app('json')->fail('商户id不能为空');
|
||||||
|
$find=Db::name('store_product')->where('product_id',$product_id)->find();
|
||||||
|
if($find){
|
||||||
|
if($find['product_type']!=0){
|
||||||
|
return app('json')->fail('该商品不是普通商品');
|
||||||
|
}
|
||||||
|
$find['attrValue']=Db::name('store_product_attr_value')->where('product_id',$find['product_id'])->field('image,price,cost,ot_price,svip_price,stock,bar_code,weight,volume')->select();
|
||||||
|
$find['content']=Db::name('store_product_content')->where('product_id',$find['product_id'])->value('content');
|
||||||
|
$find['is_show']=0;
|
||||||
|
$find['mer_status']=1;
|
||||||
|
$find['mer_id']=$mer_id;
|
||||||
|
$find['temp_id']="";
|
||||||
|
$find['give_coupon_ids']=[];
|
||||||
|
$find['params']=[];
|
||||||
|
$find['extend']=[];
|
||||||
|
$find['param_temp_id']=[];
|
||||||
|
$find['mer_labels']=[];
|
||||||
|
$find['attr']=[];
|
||||||
|
$find['delivery_way']=[ 0 => "2"];
|
||||||
|
$find["guarantee_template_id"] = "";
|
||||||
|
$find['product_type']=0;
|
||||||
|
$find['mer_cate_id']=[0 => 0];
|
||||||
|
$find['is_used']=1;
|
||||||
|
$find['status']=1;
|
||||||
|
$find['mer_status']=1;
|
||||||
|
unset($find['product_id'],$find['create_time']);
|
||||||
|
}
|
||||||
|
$make = app()->make(ProductRepository::class);
|
||||||
|
$a=$make->create($find,0);
|
||||||
|
if($a){
|
||||||
|
return app('json')->success(['data'=>$a,'msg'=>'导入成功']);
|
||||||
|
}else{
|
||||||
|
return app('json')->fail('导入失败');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function eadtProduct(){
|
public function eadtProduct(){
|
||||||
|
@ -102,7 +102,7 @@ class StoreSpu extends BaseController
|
|||||||
]);
|
]);
|
||||||
if ($where['action']) unset($where['product_type']);
|
if ($where['action']) unset($where['product_type']);
|
||||||
$category_id=Db::name('merchant')->where('mer_id',$id)->value('category_id');
|
$category_id=Db::name('merchant')->where('mer_id',$id)->value('category_id');
|
||||||
$mer_id=Db::name('merchant')->where('category_id',$category_id)->where('type_id',11)->value('mer_id');
|
$mer_id=Db::name('merchant')->where('mer_state',1)->where('status',1)->where('category_id',$category_id)->where('type_id',11)->value('mer_id');
|
||||||
if (!$mer_id){
|
if (!$mer_id){
|
||||||
return app('json')->success(['count'=>0,'list'=>[]]);
|
return app('json')->success(['count'=>0,'list'=>[]]);
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ return [
|
|||||||
'pay_success_presell' => [\crmeb\listens\pay\PresellPaySuccessListen::class],
|
'pay_success_presell' => [\crmeb\listens\pay\PresellPaySuccessListen::class],
|
||||||
'pay_success_meal' => [\crmeb\listens\pay\MealSuccessListen::class],
|
'pay_success_meal' => [\crmeb\listens\pay\MealSuccessListen::class],
|
||||||
'community_address'=>[\app\listener\CommunityAddress::class],
|
'community_address'=>[\app\listener\CommunityAddress::class],
|
||||||
'order.paySuccess'=>[\app\listener\OrderPaySuccess::class],
|
// 'order.paySuccess'=>[\app\listener\OrderPaySuccess::class],
|
||||||
'product.create'=>[\app\listener\ProductCreate::class],
|
'product.create'=>[\app\listener\ProductCreate::class],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ declare (strict_types=1);
|
|||||||
|
|
||||||
namespace app\listener;
|
namespace app\listener;
|
||||||
|
|
||||||
|
use crmeb\services\RedisCacheService;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
use think\facade\Log;
|
use think\facade\Log;
|
||||||
|
|
||||||
@ -11,14 +12,16 @@ class ProductCreate
|
|||||||
|
|
||||||
public function handle($event)
|
public function handle($event)
|
||||||
{
|
{
|
||||||
$merchant=Db::name('merchant')->where('mer_id',$event['product']['mer_id'])->find();
|
$merchant=Db::name('merchant')->where('status',1)->where('mer_state',1)->where('mer_id',$event['product']['mer_id'])->find();
|
||||||
|
if ($merchant['type_id']==11){
|
||||||
|
$this->CloudMerchanSpu($merchant,$event);
|
||||||
|
}
|
||||||
if ($merchant['type_id']==13 ||$merchant['type_id']==11){
|
if ($merchant['type_id']==13 ||$merchant['type_id']==11){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$product_find=Db::name('store_product')->where('product_id',$event['product']['product_id'])->where('mer_id',$event['product']['mer_id'])->find();
|
$product_find=Db::name('store_product')->where('product_id',$event['product']['product_id'])->where('mer_id',$event['product']['mer_id'])->find();
|
||||||
|
|
||||||
//市级云仓
|
//市级云仓
|
||||||
$cityMerchantId = Db::name('merchant')->where('category_id',$merchant['category_id'])->where('type_id',13)->value('mer_id');
|
$cityMerchantId = Db::name('merchant')->where('status',1)->where('mer_state',1)->where('category_id',$merchant['category_id'])->where('type_id',13)->value('mer_id');
|
||||||
if ($cityMerchantId) {
|
if ($cityMerchantId) {
|
||||||
$is_product=0;
|
$is_product=0;
|
||||||
if ($product_find['bar_code']!='' &&in_array($product_find['product_type'],[0,98]) &&$product_find['spec_type']==0){
|
if ($product_find['bar_code']!='' &&in_array($product_find['product_type'],[0,98]) &&$product_find['spec_type']==0){
|
||||||
@ -38,26 +41,40 @@ class ProductCreate
|
|||||||
}
|
}
|
||||||
//镇街云仓
|
//镇街云仓
|
||||||
$is_product=0;
|
$is_product=0;
|
||||||
if ($merchant['type_id']==11){
|
if ($merchant['type_id']==10){
|
||||||
$townMerchantId = Db::name('merchant')->where('category_id',$merchant['category_id'])->where('type_id',11)->value('mer_id');
|
$townMerchantId = Db::name('merchant')->where('status',1)->where('mer_state',1)->where('category_id',$merchant['category_id'])->where('type_id',11)->value('mer_id');
|
||||||
if ($product_find['bar_code']!='' &&in_array($product_find['product_type'],[0,98]) &&$product_find['spec_type']==0){
|
if ($townMerchantId){
|
||||||
$find=Db::name('store_product')->where('bar_code',$product_find['bar_code'])->where('mer_id',$townMerchantId)->find();
|
if ($product_find['bar_code']!='' &&in_array($product_find['product_type'],[0,98]) &&$product_find['spec_type']==0){
|
||||||
if (!$find){
|
$find=Db::name('store_product')->where('bar_code',$product_find['bar_code'])->where('mer_id',$townMerchantId)->find();
|
||||||
$is_product=1;
|
if (!$find){
|
||||||
|
$is_product=1;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$find=Db::name('store_product')->where('store_name',$product_find['store_name'])->where('mer_id',$townMerchantId)->find();
|
||||||
|
if (!$find){
|
||||||
|
$is_product=1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else{
|
if ($is_product==1){
|
||||||
$find=Db::name('store_product')->where('store_name',$product_find['store_name'])->where('mer_id',$townMerchantId)->find();
|
$this->AddProduct($townMerchantId,$product_find,$event);
|
||||||
if (!$find){
|
|
||||||
$is_product=1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($is_product==1){
|
|
||||||
$this->AddProduct($townMerchantId,$product_find,$event);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function CloudMerchanSpu($data,$event){
|
||||||
|
$RedisCacheService = app()->make(RedisCacheService::class);
|
||||||
|
$exists=$RedisCacheService->exists('CloudMerchanSpu'.$data['mer_id']);
|
||||||
|
if ($exists){
|
||||||
|
$RedisCacheService->SADD ('CloudMerchanSpu'.$data['mer_id'], $event['product']['product_id']);
|
||||||
|
}else{
|
||||||
|
$Spu_arr=Db::name('store_spu')->where('mer_id',$data['mer_id'])->where('status',1)->column('product_id');
|
||||||
|
foreach ($Spu_arr as $k=>$v){
|
||||||
|
$RedisCacheService->SADD ('CloudMerchanSpu'.$data['mer_id'], $v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public function AddProduct($mer_id,$product_find,$event){
|
public function AddProduct($mer_id,$product_find,$event){
|
||||||
$datas=[
|
$datas=[
|
||||||
'mer_id'=>$mer_id,
|
'mer_id'=>$mer_id,
|
||||||
|
@ -28,6 +28,7 @@ Route::group('api/', function () {
|
|||||||
Route::get('seach_bar_code', '/seach_bar_code');
|
Route::get('seach_bar_code', '/seach_bar_code');
|
||||||
Route::get('product_details', '/ProductDetails');
|
Route::get('product_details', '/ProductDetails');
|
||||||
Route::post('eadt_product', '/eadtProduct');
|
Route::post('eadt_product', '/eadtProduct');
|
||||||
|
Route::post('product_import', '/ProductImport');
|
||||||
})->prefix('api.store.product.StoreMicro');
|
})->prefix('api.store.product.StoreMicro');
|
||||||
|
|
||||||
Route::group('v2', function () {
|
Route::group('v2', function () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user