Merge branch 'feature/purchase_record' into dev
This commit is contained in:
commit
57eeeece53
@ -15,6 +15,7 @@ namespace app\common\model\community;
|
|||||||
|
|
||||||
use app\common\model\BaseModel;
|
use app\common\model\BaseModel;
|
||||||
use app\common\model\store\product\Spu;
|
use app\common\model\store\product\Spu;
|
||||||
|
use app\common\model\store\Resale;
|
||||||
use app\common\model\system\Relevance;
|
use app\common\model\system\Relevance;
|
||||||
use app\common\model\user\User;
|
use app\common\model\user\User;
|
||||||
use app\common\repositories\system\RelevanceRepository;
|
use app\common\repositories\system\RelevanceRepository;
|
||||||
@ -173,8 +174,7 @@ class Community extends BaseModel
|
|||||||
|
|
||||||
public function resale()
|
public function resale()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Relevance::class, 'left_id','community_id')
|
return $this->hasMany(Resale::class, 'community_id','community_id');
|
||||||
->where('type',RelevanceRepository::TYPE_COMMUNITY_PRODUCT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
26
app/common/model/store/Resale.php
Normal file
26
app/common/model/store/Resale.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\common\model\store;
|
||||||
|
|
||||||
|
use app\common\model\BaseModel;
|
||||||
|
use app\common\model\store\product\Spu;
|
||||||
|
|
||||||
|
class Resale extends BaseModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function tablePk(): string
|
||||||
|
{
|
||||||
|
return 'id';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function tableName(): string
|
||||||
|
{
|
||||||
|
return 'resale';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function spu()
|
||||||
|
{
|
||||||
|
return $this->hasOne(Spu::class, 'product_id','product_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,6 +13,9 @@
|
|||||||
namespace app\common\repositories\community;
|
namespace app\common\repositories\community;
|
||||||
|
|
||||||
use app\common\dao\community\CommunityDao;
|
use app\common\dao\community\CommunityDao;
|
||||||
|
use app\common\model\store\product\ProductAttrValue;
|
||||||
|
use app\common\model\store\product\PurchaseRecord;
|
||||||
|
use app\common\model\store\Resale;
|
||||||
use app\common\repositories\BaseRepository;
|
use app\common\repositories\BaseRepository;
|
||||||
use app\common\repositories\store\order\StoreOrderProductRepository;
|
use app\common\repositories\store\order\StoreOrderProductRepository;
|
||||||
use app\common\repositories\store\product\SpuRepository;
|
use app\common\repositories\store\product\SpuRepository;
|
||||||
@ -112,13 +115,22 @@ class CommunityRepository extends BaseRepository
|
|||||||
],
|
],
|
||||||
'is_fans' => function($query) use($userInfo){
|
'is_fans' => function($query) use($userInfo){
|
||||||
$query->where('left_id',$userInfo->uid?? 0);
|
$query->where('left_id',$userInfo->uid?? 0);
|
||||||
}
|
},
|
||||||
|
'resale',
|
||||||
]);
|
]);
|
||||||
$count = $query->count();
|
$count = $query->count();
|
||||||
$list = $query->page($page, $limit)->setOption('field',[])
|
$list = $query->page($page, $limit)->setOption('field',[])
|
||||||
->field('community_id,title,image,topic_id,Community.count_start,count_reply,start,Community.create_time,Community.uid,Community.status,is_show,content,video_link,is_type,refusal')
|
->field('community_id,title,image,topic_id,Community.count_start,count_reply,start,Community.create_time,Community.uid,Community.status,is_show,content,video_link,is_type,refusal')
|
||||||
->select()->append(['time']);
|
->select()->append(['time']);
|
||||||
if ($list) $list = $list->toArray();
|
if ($list) $list = $list->toArray();
|
||||||
|
foreach ($list as $k => $item) {
|
||||||
|
if ($item['is_type'] == self::COMMUNITY_TYPE_RESALE) {
|
||||||
|
$list[$k]['total_price'] = '0';
|
||||||
|
foreach ($item['resale'] as $value) {
|
||||||
|
$list[$k]['total_price'] = bcadd($list[$k]['total_price'], bcmul($value['price'], $value['number'], 2), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return compact('count','list');
|
return compact('count','list');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,6 +250,11 @@ class CommunityRepository extends BaseRepository
|
|||||||
'is_start' => function ($query) use ($user) {
|
'is_start' => function ($query) use ($user) {
|
||||||
$query->where('left_id', $user->uid ?? '');
|
$query->where('left_id', $user->uid ?? '');
|
||||||
},
|
},
|
||||||
|
'resale' => [
|
||||||
|
'spu' => function ($query) {
|
||||||
|
$query->field('spu_id,store_name,image,price,product_type,activity_id,product_id');
|
||||||
|
}
|
||||||
|
],
|
||||||
])->hidden(['is_del'])->find();
|
])->hidden(['is_del'])->find();
|
||||||
|
|
||||||
if (!$data) throw new ValidateException('内容不存在,可能已被删除了哦~');
|
if (!$data) throw new ValidateException('内容不存在,可能已被删除了哦~');
|
||||||
@ -251,6 +268,12 @@ class CommunityRepository extends BaseRepository
|
|||||||
'type' => RelevanceRepository::TYPE_COMMUNITY_FANS,
|
'type' => RelevanceRepository::TYPE_COMMUNITY_FANS,
|
||||||
]);
|
]);
|
||||||
$data['is_fans'] = $is_fans;
|
$data['is_fans'] = $is_fans;
|
||||||
|
if ($data['is_type'] == self::COMMUNITY_TYPE_RESALE) {
|
||||||
|
$data['total_price'] = '0';
|
||||||
|
foreach ($data['resale'] as $value) {
|
||||||
|
$data['total_price'] = bcadd($data['total_price'], bcmul($value['price'], $value['number'], 2), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,6 +327,9 @@ class CommunityRepository extends BaseRepository
|
|||||||
return Db::transaction(function () use($data) {
|
return Db::transaction(function () use($data) {
|
||||||
$community = $this->dao->create($data);
|
$community = $this->dao->create($data);
|
||||||
if ($data['spu_id'])$this->joinProduct($community->community_id,$data['spu_id']);
|
if ($data['spu_id'])$this->joinProduct($community->community_id,$data['spu_id']);
|
||||||
|
if ($data['product_info'] && $data['is_type'] == self::COMMUNITY_TYPE_RESALE) {
|
||||||
|
$this->resale($community->community_id, $data['product_info']);
|
||||||
|
}
|
||||||
event('community.create',compact('community'));
|
event('community.create',compact('community'));
|
||||||
return $community->community_id;
|
return $community->community_id;
|
||||||
});
|
});
|
||||||
@ -508,5 +534,53 @@ class CommunityRepository extends BaseRepository
|
|||||||
return $make->getWechatQrcodePath($name, $link, false, $key);
|
return $make->getWechatQrcodePath($name, $link, false, $key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转售贴
|
||||||
|
* @param $id
|
||||||
|
* @param array $data
|
||||||
|
* @return void
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
*/
|
||||||
|
public function resale($id, array $data)
|
||||||
|
{
|
||||||
|
$insert = [];
|
||||||
|
foreach ($data as $value) {
|
||||||
|
$purchaseRecord = PurchaseRecord::find($value['purchase_record_id']);
|
||||||
|
$exist = Resale::where('purchase_record_id', $purchaseRecord['id'])->find();
|
||||||
|
if ($exist) {
|
||||||
|
throw new ValidateException('已发起转售');
|
||||||
|
}
|
||||||
|
if (empty($purchaseRecord) || ($purchaseRecord['number'] - $purchaseRecord['sales_volume']) <= 0) {
|
||||||
|
throw new ValidateException('进货记录不存在或已售罄');
|
||||||
|
}
|
||||||
|
if (($purchaseRecord['number'] - $purchaseRecord['sales_volume']) < $value['number']) {
|
||||||
|
throw new ValidateException('库存不足');
|
||||||
|
}
|
||||||
|
if ($value) {
|
||||||
|
$insert[] = [
|
||||||
|
'community_id' => $id,
|
||||||
|
'purchase_record_id' => $purchaseRecord['id'],
|
||||||
|
'product_id' => $purchaseRecord['product_id'],
|
||||||
|
'product_attr_unique' => $purchaseRecord['unique'],
|
||||||
|
'mer_id' => $purchaseRecord['mer_id'],
|
||||||
|
'number' => $value['number'],
|
||||||
|
'price' => $value['price'],
|
||||||
|
'update_time' => date('Y-m-d H:i:s'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$purchaseRecord->product->stock -= $value['number'];
|
||||||
|
$purchaseRecord->product->save();
|
||||||
|
$attrValue = ProductAttrValue::where('product_id', $purchaseRecord['product_id'])->where('unique', $purchaseRecord['unique'])->find();
|
||||||
|
$attrValue->stock -= $value['number'];
|
||||||
|
$attrValue->save();
|
||||||
|
}
|
||||||
|
if ($insert) {
|
||||||
|
Resale::getInstance()->insertAll($insert);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -851,7 +851,6 @@ class StoreOrderRepository extends BaseRepository
|
|||||||
$param['StoreOrder.is_del'] = 0;
|
$param['StoreOrder.is_del'] = 0;
|
||||||
switch ($status) {
|
switch ($status) {
|
||||||
case 1:
|
case 1:
|
||||||
$param['paid'] = 0;
|
|
||||||
break; // 未支付
|
break; // 未支付
|
||||||
case 2:
|
case 2:
|
||||||
$param['paid'] = 1;
|
$param['paid'] = 1;
|
||||||
@ -1494,6 +1493,12 @@ class StoreOrderRepository extends BaseRepository
|
|||||||
$status = $where['status'];
|
$status = $where['status'];
|
||||||
unset($where['status']);
|
unset($where['status']);
|
||||||
$query = $this->dao->search($where)->where($this->getOrderType($status))
|
$query = $this->dao->search($where)->where($this->getOrderType($status))
|
||||||
|
->when($status == 4, function ($query) {
|
||||||
|
$query->where('paid', 1)->where('pay_type', '<>', StoreGroupOrder::PAY_TYPE_CREDIT_BUY);
|
||||||
|
})
|
||||||
|
->when($status == 1, function ($query) {
|
||||||
|
$query->whereRaw("(StoreOrder.paid=0 and StoreOrder.status!=12) or (StoreOrder.paid=1 and StoreOrder.pay_type=8 and StoreOrder.status=2)");
|
||||||
|
})
|
||||||
->with([
|
->with([
|
||||||
'orderProduct',
|
'orderProduct',
|
||||||
'merchant' => function ($query) {
|
'merchant' => function ($query) {
|
||||||
@ -2591,7 +2596,7 @@ class StoreOrderRepository extends BaseRepository
|
|||||||
$products = $order->orderProduct;
|
$products = $order->orderProduct;
|
||||||
$currentOrder = $order->toArray();
|
$currentOrder = $order->toArray();
|
||||||
foreach ($products as $k => $product) {
|
foreach ($products as $k => $product) {
|
||||||
$purchaseRecord = PurchaseRecord::where(['order_id' => $product['order_id'], 'order_product_id' => $product['product_id'], 'order_unique' => $product['product_sku']])->field('mer_id,product_id,unique,number,sales_volume')->find();
|
$purchaseRecord = PurchaseRecord::where(['order_id' => $product['order_id'], 'order_product_id' => $product['product_id'], 'order_unique' => $product['product_sku']])->field('id,number,sales_volume')->find();
|
||||||
if (!empty($purchaseRecord)) {
|
if (!empty($purchaseRecord)) {
|
||||||
$currentOrder['orderProduct'][$k]['sales_volume'] = $purchaseRecord->sales_volume;
|
$currentOrder['orderProduct'][$k]['sales_volume'] = $purchaseRecord->sales_volume;
|
||||||
$currentOrder['orderProduct'][$k]['purchase_record'] = $purchaseRecord->toArray();
|
$currentOrder['orderProduct'][$k]['purchase_record'] = $purchaseRecord->toArray();
|
||||||
|
@ -12,8 +12,10 @@
|
|||||||
|
|
||||||
namespace app\controller\api\community;
|
namespace app\controller\api\community;
|
||||||
|
|
||||||
|
use app\common\model\system\merchant\Merchant;
|
||||||
use app\common\repositories\community\CommunityRepository;
|
use app\common\repositories\community\CommunityRepository;
|
||||||
use app\common\repositories\store\order\StoreOrderProductRepository;
|
use app\common\repositories\store\order\StoreOrderProductRepository;
|
||||||
|
use app\common\repositories\store\order\StoreOrderRepository;
|
||||||
use app\common\repositories\system\RelevanceRepository;
|
use app\common\repositories\system\RelevanceRepository;
|
||||||
use app\common\repositories\user\UserHistoryRepository;
|
use app\common\repositories\user\UserHistoryRepository;
|
||||||
use app\common\repositories\user\UserRelationRepository;
|
use app\common\repositories\user\UserRelationRepository;
|
||||||
@ -268,7 +270,7 @@ class Community extends BaseController
|
|||||||
|
|
||||||
public function checkParams()
|
public function checkParams()
|
||||||
{
|
{
|
||||||
$data = $this->request->params(['image','topic_id','content','spu_id','order_id',['is_type',1],'video_link']);
|
$data = $this->request->params(['image','topic_id','content','spu_id','order_id',['is_type',1],'video_link', 'product_info']);
|
||||||
$config = systemConfig(["community_app_switch",'community_audit','community_video_audit']);
|
$config = systemConfig(["community_app_switch",'community_audit','community_video_audit']);
|
||||||
$data['status'] = 0;
|
$data['status'] = 0;
|
||||||
$data['is_show'] = 0;
|
$data['is_show'] = 0;
|
||||||
@ -280,7 +282,7 @@ class Community extends BaseController
|
|||||||
$data['is_show'] = 1;
|
$data['is_show'] = 1;
|
||||||
$data['status_time'] = date('Y-m-d H:i:s', time());
|
$data['status_time'] = date('Y-m-d H:i:s', time());
|
||||||
}
|
}
|
||||||
} else {
|
} elseif ($data['is_type'] == 2) {
|
||||||
if (!in_array($this->repository::COMMUNIT_TYPE_VIDEO,$config['community_app_switch']))
|
if (!in_array($this->repository::COMMUNIT_TYPE_VIDEO,$config['community_app_switch']))
|
||||||
throw new ValidateException('短视频未开启');
|
throw new ValidateException('短视频未开启');
|
||||||
if ($config['community_video_audit']) {
|
if ($config['community_video_audit']) {
|
||||||
@ -427,4 +429,15 @@ class Community extends BaseController
|
|||||||
if (!$url) return app('json')->fail('二维码生成失败');
|
if (!$url) return app('json')->fail('二维码生成失败');
|
||||||
return app('json')->success(compact('url'));
|
return app('json')->success(compact('url'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getOrderList()
|
||||||
|
{
|
||||||
|
[$page, $limit] = $this->getPage();
|
||||||
|
$keyword = $this->request->param('keyword');
|
||||||
|
/** @var StoreOrderRepository $repo */
|
||||||
|
$repo = app()->make(StoreOrderRepository::class);
|
||||||
|
$list = $repo->purchaseOrder(['uid' => $this->request->uid()], $keyword, $page, $limit);
|
||||||
|
return app('json')->success($list);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -400,6 +400,7 @@ Route::group('api/', function () {
|
|||||||
Route::get('/:id/reply', 'CommunityReply/lst');
|
Route::get('/:id/reply', 'CommunityReply/lst');
|
||||||
|
|
||||||
Route::get('/focuslst', 'Community/focuslst');
|
Route::get('/focuslst', 'Community/focuslst');
|
||||||
|
Route::get('/getOrderList', 'Community/getOrderList');
|
||||||
})->prefix('api.community.');
|
})->prefix('api.community.');
|
||||||
//上传图片
|
//上传图片
|
||||||
Route::post('upload/image/:field', 'api.Common/uploadImage');
|
Route::post('upload/image/:field', 'api.Common/uploadImage');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user