This commit is contained in:
mkm 2024-09-13 20:49:05 +08:00
commit 916a767e0a
130 changed files with 2706 additions and 1247 deletions

View File

@ -339,4 +339,17 @@ class WorkbenchController extends BaseAdminController
return $this->data([], '操作失败', 400);
}
}
/**
* 更新库存和价值
*/
public function stock_product_price()
{
$parmas = $this->request->get();
$res = WarehouseLogic::stockProductPrice($parmas);
if($res){
return $this->success('操作成功,请刷新页面',[],1,1);
}else{
return $this->fail('操作失败');
}
}
}

View File

@ -46,18 +46,13 @@ class StoreBranchProductController extends BaseAdminController
{
$params = (new StoreProductValidate())->post()->goCheck('add');
$result = StoreProductLogic::add($params);
if (true === $result) {
return $this->success('添加成功', [], 1, 1);
}
return $this->fail(StoreProductLogic::getError());
return $this->success('添加成功', [], 1, 1);
}
public function update()
{
$params = $this->request->post();
StoreBranchProductLogic::edit($params);
if (StoreBranchProductLogic::hasError()) {
return $this->fail(StoreBranchProductLogic::getError());
}
return $this->success('更新成功', [], 1, 1);
}
@ -110,9 +105,6 @@ class StoreBranchProductController extends BaseAdminController
{
$params = (new StoreProductValidate())->post()->goCheck('delete');
StoreBranchProductLogic::delete($params);
if(StoreBranchProductLogic::hasError()){
return $this->fail(StoreBranchProductLogic::getError());
}
return $this->success('删除成功', [], 1, 1);
}

View File

@ -7,15 +7,22 @@ use app\admin\controller\BaseAdminController;
use app\admin\lists\store_order\StoreOrderLists;
use app\admin\lists\store_order\StoreRefundOrderLists;
use app\admin\logic\store_order\StoreOrderLogic;
use app\admin\logic\store_product\StoreProductLogic;
use app\admin\logic\warehouse_product\WarehouseProductLogic;
use app\admin\validate\store_order\StoreOrderValidate;
use app\common\enum\PayEnum;
use app\common\logic\PayNotifyLogic;
use app\common\model\delivery_service\DeliveryService;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit;
use app\common\model\warehouse_order\WarehouseOrder;
use app\common\model\warehouse_product\WarehouseProduct;
use app\common\service\xlsx\OrderDetail;
use support\exception\BusinessException;
use think\facade\Db;
/**
* 订单列表控制器
@ -117,7 +124,7 @@ class StoreOrderController extends BaseAdminController
*/
public function refund()
{
$params = (new StoreOrderValidate())->goCheck('refund');
$params = $this->request->post();
$detail = StoreOrder::where('order_id', $params['order_id'])->findOrEmpty();
if (empty($detail)) {
return $this->fail('无该订单请检查');
@ -155,23 +162,94 @@ class StoreOrderController extends BaseAdminController
$id = $this->request->post('id');
$system_store = $this->request->post('system_store');
$xlsx = new OrderDetail();
$order=StoreOrder::where('id',$id)->findOrEmpty();
$time= strtotime('+1 day', $order['pay_time']);
$order['pay_time']=date('Y-m-d H:i:s',$order['pay_time']);
$order['delivery_time']=date('Y-m-d', $time);
$order = StoreOrder::where('id', $id)->findOrEmpty();
$time = strtotime('+1 day', $order['pay_time']);
$order['pay_time'] = date('Y-m-d H:i:s', $order['pay_time']);
$order['delivery_time'] = date('Y-m-d', $time);
$data = StoreOrderCartInfo::where('oid', $id)->select();
foreach ($data as $key => &$value) {
$find=StoreProduct::where('id',$value->product_id)->find();
$value->store_name=$find['store_name']??'';
$value->store_info=$find['store_info']??'';
if(!empty($find['unit'])){
$value->unit_name=StoreProductUnit::where('id',$find['unit'])->value('name');
if(in_array($order['store_id'],[17,18])){
$find = StoreBranchProduct::where('product_id', $value->product_id)->where('store_id',$order['store_id'])->find();
}else{
$value->unit_name='';
$find = StoreProduct::where('id', $value->product_id)->find();
}
$value->store_name = $find['store_name'] ?? '';
$value->store_info = $find['store_info'] ?? '';
$value->total_price = bcmul($value['price'], $value['cart_num'], 2);
if (!empty($find['unit'])) {
$value->unit_name = StoreProductUnit::where('id', $find['unit'])->value('name');
} else {
$value->unit_name = '';
}
}
$file_path = $xlsx->export($data,$system_store,$order);
$order['total_price'] = $order['pay_price'];
$file_path = $xlsx->export($data, $system_store, $order);
return $this->success('导出成功', ['url' => $file_path]);
}
/**
* 创建出库单
*/
public function createOutboundOrder()
{
$id = $this->request->post('id');
$store_id = $this->request->post('store_id');
$warehouse_id = $this->request->post('warehouse_id');
$delivery_time = $this->request->post('delivery_time');
$mark = $this->request->post('mark');
$find = WarehouseOrder::where('oid',$id)->find();
if($find){
return $this->fail('该订单已创建出库单');
}
$product_arr=StoreOrderCartInfo::where('oid',$id)->field('oid,product_id id,price,total_price,cart_num stock')->select();
if(!$product_arr){
return $this->fail('无商品');
}
Db::startTrans();
try {
$arr = [
'oid' => $id,
'warehouse_id' => $warehouse_id,
'store_id' => $store_id,
'supplier_id' => 0,
'code' => getNewOrderId('PS'),
'admin_id' => $this->adminId,
'financial_pm' => 0,
'batch' => 0,
'mark' => $mark ?? "",
];
$arr['delivery_time'] = strtotime($delivery_time);
$res = WarehouseOrder::create($arr);
foreach ($product_arr as $key => $arr) {
$data = [
'warehouse_id' => $warehouse_id,
'product_id' => $arr['id'],
'store_id' => $store_id,
'financial_pm' => 0,
'batch' => 1,
'nums' => $arr['stock'],
'status' => 1,
'admin_id' => $this->adminId,
];
$storeProduct = StoreProduct::where('id', $arr['id'])->findOrEmpty()->toArray();
if ($arr['stock'] == 0) {
StoreProductLogic::ordinary($arr, $store_id, $this->adminId, $storeProduct);
} else {
$data['total_price'] = bcmul($arr['stock'], $storeProduct['purchase'], 2);
$data['purchase'] = $storeProduct['purchase'];
$data['oid'] = $res['id'];
$data['financial_pm'] = 0;
WarehouseProductLogic::add($data);
$finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find();
WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]);
}
}
Db::commit();
} catch (\Throwable $e) {
Db::rollback();
throw new BusinessException($e->getMessage());
}
return $this->success('已导入后台队列,请在门店入库记录中查看', [], 1, 1);
}
}

View File

@ -54,7 +54,37 @@ class StoreOrderCartInfoController extends BaseAdminController
$res=(new StoreOrderCartInfoLogic())->curve($product_id,$start_time,$end_time);
return $this->data($res);
}
/**
* @notes 追加订单商品
* @return \think\response\Json
* @author admin
* @date 2024/05/31 16:02
*/
public function add()
{
$params = $this->request->post();
$result = StoreOrderCartInfoLogic::add($params);
return $this->success('添加成功', [], 1, 1);
}
/**
* @notes 编辑订单商品
* @return \think\response\Json
* @author admin
* @date 2024/05/31 16:02
*/
public function edit()
{
$params = $this->request->post();
$result = StoreOrderCartInfoLogic::edit($params);
return $this->success('编辑成功', [], 1, 1);
}
public function del()
{
$params = $this->request->post();
$result = StoreOrderCartInfoLogic::del($params);
return $this->success('删除成功', [], 1, 1);
}
/**
* 导出配送表格
*/

View File

@ -44,9 +44,7 @@ class StoreProductController extends BaseAdminController
{
$params = (new StoreProductValidate())->post()->goCheck('add');
$result = StoreProductLogic::add($params);
if (true === $result) {
return $this->success('添加成功', [], 1, 1);
}
return $this->success('添加成功', [], 1, 1);
}
@ -62,12 +60,20 @@ class StoreProductController extends BaseAdminController
d($params);
$result = StoreProductLogic::edit($params);
if (true === $result) {
return $this->success('编辑成功', [], 1, 1);
}
return $this->fail(StoreProductLogic::getError());
return $this->success('编辑成功', [], 1, 1);
}
/**
* @notes 修改商品状态
* @return \think\response\Json
* @date 2024/05/31 10:53
*/
public function status(){
$params=$this->request->post();
StoreProduct::where('id',$params['id'])->update(['is_show'=>$params['is_show']]);
return $this->success('操作成功',[],1,1);
}
/**
* @notes 删除商品列表

View File

@ -40,35 +40,6 @@ class SystemStoreController extends BaseAdminController
{
return $this->dataLists(new SystemStoreSourceLists());
}
/**
* @notes 根据商品源获取门店列表
* @return \think\response\Json
* @author admin
* @date 2024/05/31 17:45
*/
public function source_product_update_store()
{
$addList=$this->request->post('addList');
$product_id=$this->request->post('product_id');
if($addList){
foreach ($addList as $key=>$value){
StoreProductLogic::copy($product_id,$value);
if(StoreProductLogic::hasError()){
return $this->fail(StoreProductLogic::getError());
}
}
}
$removeList=$this->request->post('removeList');
if($removeList){
foreach ($removeList as $key=>$value){
StoreProductLogic::store_del($product_id,$value);
if(StoreProductLogic::hasError()){
return $this->fail(StoreProductLogic::getError());
}
}
}
return $this->success('设置成功', [], 1, 1);
}
/**
* @notes 添加门店列表

View File

@ -58,7 +58,6 @@ class WarehouseOrderController extends BaseAdminController
if (true === $result) {
return $this->success('添加成功', [], 1, 1);
}
return $this->fail(WarehouseOrderLogic::getError());
}
/**
* @notes 添加出库单
@ -125,7 +124,6 @@ class WarehouseOrderController extends BaseAdminController
Db::commit();
} catch (\Throwable $e) {
Db::rollback();
d($e);
throw new BusinessException($e->getMessage());
}
return $this->success('已导入后台队列,请在门店入库记录中查看', [], 1, 1);
@ -146,7 +144,6 @@ class WarehouseOrderController extends BaseAdminController
if (true === $result) {
return $this->success('编辑成功', [], 1, 1);
}
return $this->fail(WarehouseOrderLogic::getError());
}
/**
@ -174,9 +171,6 @@ class WarehouseOrderController extends BaseAdminController
{
$params = (new WarehouseOrderValidate())->post()->goCheck('delete');
WarehouseOrderLogic::delete($params);
if(WarehouseOrderLogic::hasError()){
return $this->fail(WarehouseOrderLogic::getError());
}
return $this->success('删除成功', [], 1, 1);
}
@ -233,7 +227,11 @@ class WarehouseOrderController extends BaseAdminController
$order['total_num'] = 0;
$total_price=0;
foreach ($data as $key => &$value) {
$find = StoreProduct::where('id', $value->product_id)->find();
if(in_array($order['store_id'],[17,18])){
$find = StoreBranchProduct::where('product_id', $value->product_id)->where('store_id',$order['store_id'])->find();
}else{
$find = StoreProduct::where('id', $value->product_id)->find();
}
$value->store_name = $find['store_name'] ?? '';
$value->store_info = $find['store_info'] ?? '';
if($type==2){

View File

@ -61,12 +61,8 @@ class WarehouseProductController extends BaseAdminController
}
WarehouseProductLogic::add($data);
}
if (WarehouseProductLogic::hasError()) {
return $this->fail(WarehouseProductLogic::getError());
} else {
return $this->success('添加成功', [], 1, 1);
}
return $this->success('添加成功', [], 1, 1);
}
@ -95,11 +91,8 @@ class WarehouseProductController extends BaseAdminController
{
$params = (new WarehouseProductValidate())->post()->goCheck('delete');
WarehouseProductLogic::delete($params);
if (WarehouseProductLogic::hasError()) {
return $this->fail(WarehouseProductLogic::getError());
} else {
return $this->success('删除成功', [], 1, 1);
}
return $this->success('删除成功', [], 1, 1);
}
@ -116,6 +109,17 @@ class WarehouseProductController extends BaseAdminController
return $this->data($result);
}
/**
* @notes 结算
* @return \think\response\Json
* @author admin
* @date 2024/07/31 16:55
*/
public function settlement(){
$id=$this->request->post('id');
$result = WarehouseProductLogic::settlement($id);
return $this->success('结算成功', [], 1, 1);
}
/**
* 确认操作
*/

View File

@ -80,21 +80,46 @@ class StoreProductLists extends BaseAdminDataLists implements ListsSearchInterfa
$list = StoreProduct::where($this->searchWhere)
->alias('p') // 为 StoreProduct 表设置别名
->limit($this->limitOffset, $this->limitLength)
->field('p.id, p.store_name, p.image,p.stock as total_stock,
->field('p.id, p.store_name, p.image,p.stock as total_stock,p.unit,p.total_price,
(SELECT SUM(c.cart_num) FROM `la_store_order_cart_info` c WHERE c.product_id=p.id AND c.is_pay=1 AND c.delete_time IS NULL) AS sales,
(SELECT SUM(b.stock) FROM `la_store_branch_product` b WHERE b.product_id=p.id AND b.delete_time IS NULL) AS store_stock,
(SELECT SUM(w.nums) FROM `la_warehouse_product_storege` w WHERE w.product_id=p.id AND w.delete_time IS NULL) AS warehouse_stock,
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.delete_time IS NULL) AS total_purchase,
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.is_pay=1 AND wp.delete_time IS NULL) AS total_completed_amount,
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.is_pay=0 AND wp.delete_time IS NULL) AS total_outstanding_amount')
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.financial_pm=1 AND wp.delete_time IS NULL) AS total_purchase,
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.financial_pm=1 AND wp.is_pay=1 AND wp.delete_time IS NULL) AS total_completed_amount,
(SELECT SUM(wp.total_price) FROM `la_warehouse_product` wp WHERE wp.product_id=p.id AND wp.financial_pm=1 AND wp.is_pay=0 AND wp.delete_time IS NULL) AS total_outstanding_amount')
->order($this->sortOrder)
->select()
->each(function ($item) {
// 计算总库存
$item->total_completed_amount=$item->total_completed_amount??0;
$item->warehouse_stock=$item->warehouse_stock??0;
$item->total_outstanding_amount=$item->total_outstanding_amount??0;
$item->total_purchase=$item->total_purchase??0;
$unit_name=StoreProductUnit::where('id',$item->unit)->value('name');
if($item->total_stock){
$item->total_stock=bcadd($item->total_stock??0,$item->warehouse_stock??0,2).'|'.$unit_name;
}else{
$item->total_stock='';
}
$item->sales=$item->sales.'|'.$unit_name;
$item->store_stock=$item->store_stock.'|'.$unit_name;
$item->warehouse_stock=$item->warehouse_stock.'|'.$unit_name;
if($item->total_completed_amount){
$item->total_completed_amount=$item->total_completed_amount.'元';
}else{
$item->total_completed_amount='0元';
}
if($item->total_outstanding_amount){
$item->total_outstanding_amount=$item->total_outstanding_amount.'元';
}else{
$item->total_outstanding_amount='0元';
}
if($item->total_purchase){
$item->total_purchase=$item->total_purchase.'元';
}else{
$item->total_purchase='0元';
}
if($item->total_price){
$item->total_price=$item->total_price.'元';
}else{
$item->total_price='0元';
}
})
->toArray();
return $list;

View File

@ -12,6 +12,7 @@ use app\common\lists\ListsSearchInterface;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\lists\ListsExcelInterface;
use app\common\lists\ListsSortInterface;
use app\common\model\store_product\StoreProduct;
/**
* 门店商品辅助表
@ -65,6 +66,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI
public function lists(): array
{
$class_all = $this->request->get('class_all');
$export=$this->request->get('export');
$where = [];
if ($class_all) {
$arr = Cate::where('pid', $class_all)->column('id');
@ -81,17 +83,20 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI
$this->searchWhere[] = $where;
}
return StoreBranchProduct::where($this->searchWhere)
->field(['id', 'store_id', 'product_id', 'image', 'store_name', 'store_info', 'cate_id', 'price', 'sales', 'stock', 'unit', 'cost', 'purchase', 'status', 'batch', 'vip_price','bar_code', 'manufacturer_information'])
->field(['id', 'store_id', 'product_id', 'image', 'store_name', 'store_info', 'cate_id', 'price', 'sales', 'stock', 'unit', 'cost', 'purchase', 'status', 'batch', 'vip_price','bar_code', 'manufacturer_information','total_price'])
->when(!empty($this->adminInfo['store_id']), function ($query) {
$query->where('store_id', $this->adminInfo['store_id']);
})
->limit($this->limitOffset, $this->limitLength)
->order($this->sortOrder)
->select()
->each(function ($item) {
->each(function ($item) use($export) {
$item['system_store_name'] = SystemStore::where('id', $item['store_id'])->value('name');
$item['unit_name'] = StoreProductUnit::where('id', $item['unit'])->value('name');
$item['cate_name'] = StoreCategory::where('id', $item['cate_id'])->value('name');
if($export==2){
$item['total_price'] = bcmul($item['purchase'],$item['stock'],2);
}
return $item;
})
->toArray();
@ -138,6 +143,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI
public function setExcelFields(): array
{
$data = [
'product_id' => '商品ID',
'store_name' => '商品名称',
'store_info' => '规格',
'unit_name' => '单位',
@ -149,6 +155,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI
'vip_price' => '会员价',
'price' => '零售价',
'bar_code' => '条码',
'total_price' => '价值',
];
return $data;
}

View File

@ -11,13 +11,14 @@ use app\common\lists\ListsSearchInterface;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\user\User;
use app\common\lists\ListsExcelInterface;
/**
* 订单列表列表
* Class StoreOrderLists
* @package app\admin\listsstore_order
*/
class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface
{
@ -30,7 +31,7 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
public function setSearch(): array
{
return [
'=' => ['order_id','store_id', 'pay_type', 'staff_id', 'shipping_type', 'delivery_id','paid', 'status', 'is_writeoff','is_merge'],
'=' => ['order_id','store_id', 'pay_type', 'staff_id', 'shipping_type', 'delivery_id','paid', 'status', 'is_writeoff','is_merge','uid'],
'between_time' => 'create_time'
];
}
@ -62,7 +63,7 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
$query->whereIn('status', $status);
}
})
->field(['id', 'store_id', 'staff_id', 'order_id', 'paid', 'pay_price','total_price', 'pay_time', 'pay_type', 'status', 'uid','refund_status','create_time','delivery_name','delivery_id'])
->field(['id', 'store_id', 'staff_id', 'order_id', 'paid', 'pay_price','total_price', 'pay_time', 'pay_type', 'status', 'uid','refund_status','create_time','delivery_name','delivery_id','refund_price'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()->each(function ($item) {
@ -119,4 +120,38 @@ class StoreOrderLists extends BaseAdminDataLists implements ListsSearchInterface
})
->count();
}
/**
* @notes 导出文件名
* @return string
* @author 乔峰
* @date 2022/11/24 16:17
*/
public function setFileName(): string
{
return '订单列表';
}
/**
* @notes 导出字段
* @return string[]
* @author 乔峰
* @date 2022/11/24 16:17
*/
public function setExcelFields(): array
{
$data = [
'id' => 'ID',
'order_id'=>'订单号',
'store_name'=>'门店',
'nickname' => '用户',
'total_price' => '总金额',
'pay_price' => '实际支付',
'status_name' => '状态',
'refund_price' => '退款金额',
'pay_time' => '支付时间',
];
return $data;
}
}

View File

@ -13,6 +13,8 @@ use app\common\lists\ListsExcelInterface;
use app\common\model\store_category\StoreCategory;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_product_unit\StoreProductUnit;
use app\common\model\system_store\SystemStore;
use app\common\model\user\User;
/**
* 订单购物详情列表
@ -49,21 +51,41 @@ class StoreOrderCartInfoLists extends BaseAdminDataLists implements ListsSearchI
public function lists(): array
{
return StoreOrderCartInfo::where($this->searchWhere)
->field('oid,cart_info,product_id,store_id,cart_num,price,total_price,create_time')->limit($this->limitOffset, $this->limitLength)
->field('id,oid,uid,product_id,store_id,cart_num,price,total_price,create_time')->limit($this->limitOffset, $this->limitLength)
->select()->each(function ($item) {
$find=StoreProduct::where('id',$item['product_id'])->field('image,unit,store_name,store_info')->find();
if($find){
if($item['uid']>0){
$user=User::where('id',$item['uid'])->field('real_name,mobile')->find();
if($user){
if($user['real_name']!=''){
$item['nickname']=$user['real_name'];
}else{
$item['nickname']=$user['mobile'];
}
}else{
$item['nickname']='无';
}
}else{
$item['nickname']='无';
}
$item['image']=$find['image'];//商品图片
$item['system_store']=SystemStore::where('id',$item['store_id'])->value('name')??"";
$item['store_name']=$find['store_name'];//商品名称
$item['store_info']=$find['store_info'];//商品规格
$item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name')??"";
$item['cate_name'] = StoreCategory::where('id', $find['cate_id'])->value('name')??"";
$item['pay_price'] =$item['total_price'];
$item['cart_info'] = $item->toArray()??[];
}else{
$item['image']='';//商品图片
$item['unit_name']='';//商品图片
$item['cate_name']='';//商品图片
$item['store_name']='';//商品名称
$item['store_info']='';//商品规格-(数据库叫商品简介)
$item['nickname']='';
$item['system_store']='';
$item['cart_info']=[];
}
return $item; //返回处理后的数据。
})
@ -108,12 +130,15 @@ class StoreOrderCartInfoLists extends BaseAdminDataLists implements ListsSearchI
{
$data=[
'store_name' => '商品名称',
'system_store' => '门店',
'nickname' => '用户',
'store_info' => '规格',
'unit_name' => '单位',
'cate_name' => '分类',
'cart_num' => '数量',
'price' => '单价',
'total_price' => '总价',
'create_time' => '时间',
];
return $data;
}

View File

@ -63,31 +63,36 @@ class StoreOrderCartInfoTwoLists extends BaseAdminDataLists implements ListsSear
if ($this->request->get('start_time') == '') {
$this->searchWhere[] = ['create_time', 'between', [strtotime(date('Y-m-d 00:00:00')), strtotime(date('Y-m-d 23:59:59'))]];
}
$this->searchWhere[]=['is_pay','=',1];
$this->searchWhere[]=['status','>=',0];
$is_group=$this->request->get('is_group');
$this->searchWhere[] = ['is_pay', '=', 1];
$this->searchWhere[] = ['status', '>=', 0];
$query = StoreOrderCartInfo::where($this->searchWhere);
if ($this->request->get('is_group') == 1) {
if ($is_group == 1) {
$query->field('store_id,product_id,price,SUM(total_price) as total_price,SUM(cart_num) as cart_num')->group(['store_id', 'product_id']);
} else {
$query->field('store_id,product_id,price,total_price,cart_num');
$query->field('store_id,product_id,price,total_price,cart_num,create_time');
}
return $query->limit($this->limitOffset, $this->limitLength)
->select()->each(function ($item) {
->select()->each(function ($item) use($is_group){
$find = StoreProduct::where('id', $item['product_id'])->field('image,unit,cate_id,store_name,store_info')->find();
if ($find) {
$item['image'] = $find['image']; //商品图片
$item['store_name'] = $find['store_name']; //商品名称
if($is_group==1){
$item['store_name'] = $find['store_name'].'-'.$item['create_time']; //商品名称
}else{
$item['store_name'] = $find['store_name']; //商品名称
}
$item['store_info'] = $find['store_info']; //商品规格
$item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name')??'';
$item['cate_name'] = StoreCategory::where('id', $find['cate_id'])->value('name')??'';
$item['system_store'] = SystemStore::where('id', $item['store_id'])->value('name')??'';
}else{
$item['image']='';//商品图片
$item['store_name']='';//商品名称
$item['store_info']='';//商品规格-(数据库叫商品简介)
$item['unit_name']='';//
$item['cate_name']='';//
$item['system_store']='';//
$item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name') ?? '';
$item['cate_name'] = StoreCategory::where('id', $find['cate_id'])->value('name') ?? '';
$item['system_store'] = SystemStore::where('id', $item['store_id'])->value('name') ?? '';
} else {
$item['image'] = ''; //商品图片
$item['store_name'] = ''; //商品名称
$item['store_info'] = ''; //商品规格-(数据库叫商品简介)
$item['unit_name'] = ''; //
$item['cate_name'] = ''; //
$item['system_store'] = ''; //
}
return $item; //返回处理后的数据。
})
@ -130,16 +135,31 @@ class StoreOrderCartInfoTwoLists extends BaseAdminDataLists implements ListsSear
*/
public function setExcelFields(): array
{
$data = [
'system_store' => '门店',
'store_name' => '商品名称',
'store_info' => '规格',
'unit_name' => '单位',
'cate_name' => '分类',
'cart_num' => '数量',
'price' => '单价',
'total_price' => '总价',
];
if ($this->request->get('is_group') == 1) {
$data = [
'system_store' => '门店',
'store_name' => '商品名称',
'store_info' => '规格',
'unit_name' => '单位',
'cate_name' => '分类',
'cart_num' => '数量',
'price' => '单价',
'total_price' => '总价',
];
} else {
$data = [
'system_store' => '门店',
'store_name' => '商品名称',
'store_info' => '规格',
'unit_name' => '单位',
'cate_name' => '分类',
'cart_num' => '数量',
'price' => '单价',
'total_price' => '总价',
'create_time' => '时间',
];
}
return $data;
}
}

View File

@ -62,15 +62,50 @@ class StoreProductLists extends BaseAdminDataLists implements ListsSearchInterfa
}
}
return StoreProduct::where($this->searchWhere)
->field(['id', 'image', 'store_name', 'swap', 'product_type', 'cate_id', 'batch', 'price', 'vip_price', 'sales', 'stock', 'is_show', 'unit', 'cost', 'rose', 'purchase', 'bar_code', 'manufacturer_information'])
->field(['id', 'image', 'store_info', 'store_name', 'top_cate_id', 'two_cate_id', 'swap', 'product_type', 'cate_id', 'batch', 'price', 'vip_price', 'sales', 'stock', 'is_show', 'unit', 'cost', 'rose', 'purchase', 'bar_code', 'manufacturer_information'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()->each(function ($item) {
$item['bar_code_two'] = '';
if (in_array($item['unit'], [2, 21])) {
$item['bar_code_two'] = $item['bar_code'];
if ($item['bar_code'] == 0) {
$item['bar_code_two'] = '';
}
$item['bar_code'] = '';
$item['unit_names'] = '称重商品';
} else {
if (strlen($item['bar_code']) < 10) {
$item['bar_code_two'] = $item['bar_code'];
if ($item['bar_code'] == 0) {
$item['bar_code_two'] = '';
}
$item['bar_code'] = '';
}
$item['unit_names'] = '标准商品';
}
$item['unit_name'] = StoreProductUnit::where('id', $item['unit'])->value('name');
$nums = WarehouseProductStorege::where('product_id', $item['id'])->sum('nums');
$stock = StoreBranchProduct::where('store_id', '<>', '4')->where('product_id', $item['id'])->sum('stock');
$item['stock'] = bcadd($nums, $stock);
$item['cate_name'] = StoreCategory::where('id', $item['cate_id'])->value('name');
$cate_name = '';
$category_top = StoreCategory::where('id', $item['top_cate_id'])->value('name');
if ($category_top != '') {
$cate_name = '/' . $category_top;
}
if (!$category_top) {
$category_two = StoreCategory::where('id', $item['two_cate_id'])->value('name');
if ($category_two != '') {
$cate_name = $cate_name . '/' . $category_two;
}
}
$category_three = StoreCategory::where('id', $item['cate_id'])->value('name');
if ($category_three) {
$cate_name = $cate_name . '/' . $category_three;
}
$item['cate_name'] = $cate_name;
// $item['cate_name'] = StoreCategory::where('id', $item['cate_id'])->value('name');
return $item;
})?->toArray();
}
@ -84,8 +119,8 @@ class StoreProductLists extends BaseAdminDataLists implements ListsSearchInterfa
*/
public function count(): int
{
$export=$this->request->get('export');
if($export==1){
$export = $this->request->get('export');
if ($export == 1) {
$class_all = $this->request->get('class_all');
if ($class_all) {
//查3级别的
@ -122,14 +157,18 @@ class StoreProductLists extends BaseAdminDataLists implements ListsSearchInterfa
public function setExcelFields(): array
{
$data = [
'id' => '商品id',
'unit_names' => '计价方式',
'store_name' => '商品名称',
'cate_name'=>'分类',
'unit_name'=>'单位',
'cate_name' => '分类',
'unit_name' => '单位',
'store_info' => '规格',
'stock' => '库存',
'purchase' => '采购价',
'cost' => '商户',
'price' => '零售',
'bar_code' => '条码',
'bar_code_two' => '自编码',
];
return $data;
}

View File

@ -6,7 +6,7 @@ namespace app\admin\lists\supplier;
use app\admin\lists\BaseAdminDataLists;
use app\common\model\supplier\Supplier;
use app\common\lists\ListsSearchInterface;
use app\common\model\warehouse_product\WarehouseProduct;
/**
* 供应链列表
@ -47,7 +47,10 @@ class SupplierLists extends BaseAdminDataLists implements ListsSearchInterface
->field(['id', 'category_id', 'mer_name', 'phone', 'settle_cycle', 'address', 'mark'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()
->select()->each(function ($item) {
$item->total_completed_amount=WarehouseProduct::where('supplier_id',$item['id'])->where('financial_pm',1)->where('is_pay',1)->sum('total_price');
$item->total_outstanding_amount=WarehouseProduct::where('supplier_id',$item['id'])->where('financial_pm',1)->where('is_pay',0)->sum('total_price');
})
->toArray();
}

View File

@ -29,6 +29,7 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface,ListsS
'=' => ['store_id','user_ship','is_disable'],
'%like%' => ['account','mobile'],
'%pipe_like%' => ['nickname'=>'nickname|real_name'],
'between_time' => 'vip_time'
];
}

View File

@ -7,13 +7,14 @@ use app\admin\lists\BaseAdminDataLists;
use app\common\model\user_recharge\UserRecharge;
use app\common\lists\ListsSearchInterface;
use app\common\model\user\User;
use app\common\lists\ListsExcelInterface;
/**
* 充值记录列表
* Class UserRechargeLists
* @package app\admin\listsuser_recharge
*/
class UserRechargeLists extends BaseAdminDataLists implements ListsSearchInterface
class UserRechargeLists extends BaseAdminDataLists implements ListsSearchInterface,ListsExcelInterface
{
@ -88,4 +89,34 @@ class UserRechargeLists extends BaseAdminDataLists implements ListsSearchInterfa
return UserRecharge::where($this->searchWhere)->count();
}
/**
* @notes 导出文件名
* @return string
* @author 乔峰
* @date 2022/11/24 16:17
*/
public function setFileName(): string
{
return '订单列表';
}
/**
* @notes 导出字段
* @return string[]
* @author 乔峰
* @date 2022/11/24 16:17
*/
public function setExcelFields(): array
{
$data = [
'id' => 'ID',
'order_id'=>'订单号',
'nickname' => '用户',
'price' => '实际支付',
'paid_name' => '状态',
'pay_time' => '支付时间',
];
return $data;
}
}

View File

@ -29,7 +29,8 @@ class WarehouseOrderLists extends BaseAdminDataLists implements ListsSearchInter
public function setSearch(): array
{
return [
'='=>['financial_pm']
'='=>['financial_pm','supplier_id','warehouse_id','store_id'],
'between_time' => 'create_time'
];
}

View File

@ -33,7 +33,7 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt
public function setSearch(): array
{
return [
'=' => ['warehouse_id', 'financial_pm', 'store_id','oid','supplier_id'],
'=' => ['warehouse_id', 'financial_pm', 'store_id','oid','supplier_id','is_pay'],
'between_time' => 'create_time'
];
}
@ -71,7 +71,7 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt
}
}
return WarehouseProduct::where($this->searchWhere)
->field(['id', 'oid','admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time'])
->field(['id', 'oid','admin_id','supplier_id', 'store_id', 'warehouse_id', 'product_id', 'financial_pm', 'batch', 'nums', 'price', 'purchase', 'cost', 'total_price', 'manufacture', 'expiration_date', 'status', 'mark', 'create_time','is_pay'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()->each(function ($item) {
@ -106,6 +106,8 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt
}
} else {
$item->store_name = '';
$item->image = '';
$item->price = '';
}
if ($item->warehouse_id) {
$item->warehouse_name = Warehouse::where('id', $item->warehouse_id)->value('name');
@ -114,6 +116,8 @@ class WarehouseProductLists extends BaseAdminDataLists implements ListsSearchInt
}
if ($item->supplier_id) {
$item->supplier_name = Supplier::where('id', $item->supplier_id)->value('mer_name');
}else{
$item->supplier_name = '';
}
$item->expiration_date = $item->expiration_date ? date('Y-m-d', $item->expiration_date) : '';
$item->manufacture = $item->manufacture ? date('Y-m-d', $item->manufacture) : '';

View File

@ -18,6 +18,7 @@ use app\common\logic\BaseLogic;
use app\common\model\Config;
use app\common\model\dict\DictData;
use app\common\service\{FileService, ConfigService};
use support\exception\BusinessException;
use think\facade\Db;
/**
@ -46,10 +47,9 @@ class ConfigLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -73,10 +73,9 @@ class ConfigLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\app_update;
use app\common\model\app_update\AppUpdate;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -40,10 +41,9 @@ class AppUpdateLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -71,10 +71,9 @@ class AppUpdateLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -24,6 +24,7 @@ use app\common\model\auth\AdminRole;
use app\common\model\auth\AdminSession;
use app\common\cache\AdminTokenCache;
use app\common\service\FileService;
use support\exception\BusinessException;
use Webman\Config;
use think\facade\Db;
@ -70,10 +71,9 @@ class AdminLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -138,10 +138,9 @@ class AdminLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -177,10 +176,9 @@ class AdminLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -20,6 +20,7 @@ use app\common\{
logic\BaseLogic,
model\auth\SystemRoleMenu
};
use support\exception\BusinessException;
use think\facade\Db;
@ -66,8 +67,7 @@ class RoleLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -110,8 +110,7 @@ class RoleLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\delivery_service;
use app\common\model\delivery_service\DeliveryService;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -37,10 +38,9 @@ class DeliveryServiceLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -65,10 +65,9 @@ class DeliveryServiceLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -17,7 +17,7 @@ namespace app\admin\logic\dept;
use app\common\enum\YesNoEnum;
use app\common\logic\BaseLogic;
use app\common\model\dept\Dept;
use support\exception\BusinessException;
/**
* 部门管理逻辑
@ -147,9 +147,8 @@ class DeptLogic extends BaseLogic
'sort' => $params['sort'] ?? 0
]);
return true;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
}

View File

@ -17,7 +17,7 @@ namespace app\admin\logic\dept;
use app\common\enum\YesNoEnum;
use app\common\logic\BaseLogic;
use app\common\model\dept\Jobs;
use support\exception\BusinessException;
/**
* 岗位管理逻辑
@ -65,9 +65,8 @@ class JobsLogic extends BaseLogic
'remark' => $params['remark'] ?? '',
]);
return true;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
}

View File

@ -6,6 +6,7 @@ namespace app\admin\logic\financial_transfers;
use app\common\model\financial_transfers\FinancialTransfers;
use app\common\logic\BaseLogic;
use app\common\model\store_cash_finance_flow\StoreCashFinanceFlow;
use support\exception\BusinessException;
use think\facade\Db;
@ -43,10 +44,9 @@ class FinancialTransfersLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -76,10 +76,9 @@ class FinancialTransfersLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -123,10 +122,9 @@ class FinancialTransfersLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -138,7 +136,7 @@ class FinancialTransfersLogic extends BaseLogic
$date = date('Y-m-d', $time); //获取一个月前的日期
$receivable = StoreCashFinanceFlow::whereMonth('create_time', $date)->where('status', 0)->sum('receivable');
if($receivable==0){
self::setError('暂无法确认,还有未收取的现金');
throw new BusinessException('暂无法确认,还有未收取的现金');
}
Db::startTrans();
try {
@ -149,10 +147,9 @@ class FinancialTransfersLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
}

View File

@ -7,6 +7,7 @@ use app\common\model\inventory_transfer\InventoryTransfer;
use app\common\logic\BaseLogic;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\warehouse_product_storege\WarehouseProductStorege;
use support\exception\BusinessException;
use think\facade\Db;
@ -35,8 +36,7 @@ class InventoryTransferLogic extends BaseLogic
if($params['one_type']==1){
$stock = StoreBranchProduct::where('product_id', $params['product_id'])->where('store_id', $params['one_id'])->value('stock');
if ($stock < $params['nums']) {
self::setError('调拨数量不能大于当前门店库存');
return false;
throw new BusinessException('调拨数量不能大于当前门店库存');
}
if($params['two_type']==1){
$stock_two = StoreBranchProduct::where('product_id', $params['product_id'])->where('store_id', $params['two_id'])->value('stock');
@ -51,8 +51,7 @@ class InventoryTransferLogic extends BaseLogic
}elseif($params['one_type']==2){
$stock = WarehouseProductStorege::where('product_id', $params['product_id'])->where('warehouse_id', $params['one_id'])->value('nums');
if ($stock < $params['nums']) {
self::setError('调拨数量不能大于当前仓库库存');
return false;
throw new BusinessException('调拨数量不能大于当前仓库库存');
}
if($params['two_type']==1){
$stock_two = StoreBranchProduct::where('product_id', $params['product_id'])->where('store_id', $params['two_id'])->value('stock');
@ -65,8 +64,7 @@ class InventoryTransferLogic extends BaseLogic
$two_before_nums = $stock_two;
$two_after_nums = bcadd($stock_two, $params['nums']);
}else{
self::setError('调拨类型错误');
return false;
throw new BusinessException('调拨类型错误');
}
Db::startTrans();
@ -97,8 +95,7 @@ class InventoryTransferLogic extends BaseLogic
return true;
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -127,8 +124,7 @@ class InventoryTransferLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -11,6 +11,7 @@ use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\system_store\SystemStore;
use support\exception\BusinessException;
use think\facade\Db;
@ -181,8 +182,7 @@ class PurchaseOrderLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -231,8 +231,7 @@ class PurchaseOrderLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -6,6 +6,7 @@ use app\common\logic\BaseLogic;
use app\common\model\purchase_order_info\PurchaseOrderInfo;
use app\common\model\purchase_product_offer\PurchaseProductOffer;
use app\common\model\store_product\StoreProduct;
use support\exception\BusinessException;
use think\facade\Db;
class PurchaseOrderInfoLogic extends BaseLogic
@ -37,8 +38,7 @@ class PurchaseOrderInfoLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
}

View File

@ -6,6 +6,7 @@ namespace app\admin\logic\purchase_product_offer;
use app\common\model\purchase_product_offer\PurchaseProductOffer;
use app\common\logic\BaseLogic;
use app\common\model\delivery_service\DeliveryService;
use support\exception\BusinessException;
use think\facade\Db;
@ -53,8 +54,7 @@ class PurchaseProductOfferLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -94,8 +94,7 @@ class PurchaseProductOfferLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -106,8 +105,7 @@ class PurchaseProductOfferLogic extends BaseLogic
{
if($params['is_buyer']==1){
if($params['buyer_id']==''){
self::setError('采购人不能为空');
return false;
throw new BusinessException('采购人不能为空');
}
$data['buyer_id']=$params['buyer_id'];
$data['buyer_nums']=$params['buyer_nums'];
@ -120,8 +118,7 @@ class PurchaseProductOfferLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
/**

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\setting;
use app\common\model\setting\Category;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -43,8 +44,7 @@ class CategoryLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -75,8 +75,7 @@ class CategoryLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -4,6 +4,7 @@ namespace app\admin\logic\statistic;
use app\common\logic\BaseLogic;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_finance_flow\StoreFinanceFlow;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
@ -48,12 +49,33 @@ class WarehouseLogic extends BaseLogic
'value' => [],
'type' => 1,
];
$toreProduct = StoreProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find();
$pay_price=StoreOrder::where('paid',1)->where('refund_status',0)->sum('pay_price');
// $refund_price=StoreOrder::where('paid',1)->sum('refund_price');
$topData[] = [
'title' => '交易金额',
'desc' => '平台发生交易的金额',
'total_money' =>$pay_price,
'value' => [],
'type' => 1,
];
$number=StoreFinanceFlow::where('financial_type',3)->where('financial_pm',1)->sum('number');
$topData[] = [
'title' => '获得利润',
'desc' => '平台订单产生的手续费',
'total_money' =>$number,
'value' => [],
'type' => 1,
];
// $toreProduct = StoreProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find();
$warehouseProductStorege = WarehouseProductStorege::where('nums', '>', 0)->field('sum(nums) as nums,sum(total_price) as total_price')->find();
$storeBranchProduct = StoreBranchProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find();
$topData[] = [
'title' => '总商品库存',
'desc' => '平台统计商品总库存、含门店仓库',
'total_money' => $toreProduct['stock'],
'cash_title' => $toreProduct['total_price'],
'total_money' => bcadd($warehouseProductStorege['nums'], $storeBranchProduct['stock'], 2),
'cash_title' => bcadd($warehouseProductStorege['total_price'], $storeBranchProduct['total_price'], 2),
'value' => [],
'type' => 1,
];
@ -84,7 +106,6 @@ class WarehouseLogic extends BaseLogic
'value' => [],
'type' => 1,
];
$storeBranchProduct = StoreBranchProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find();
$topData[] = [
'title' => '总门店库存',
'desc' => '平台统计门店库存',
@ -190,14 +211,14 @@ class WarehouseLogic extends BaseLogic
$list = StoreProduct::where('stock', '<', 0)->page($parmas['page_no'], 15)->select()->toArray();
$count = StoreProduct::where('stock', '<', 0)->count();
} elseif ($parmas['type'] == 2) {
$where[]=['stock','<',0];
if(isset($parmas['store_id']) && $parmas['store_id'] > 0){
$where[]=['store_id','=',$parmas['store_id']];
$where[] = ['stock', '<', 0];
if (isset($parmas['store_id']) && $parmas['store_id'] > 0) {
$where[] = ['store_id', '=', $parmas['store_id']];
}
$store_arr=getenv('NO_STORE_STATISTICS');
if($store_arr){
$store_arr=explode(',',$store_arr);
$where[]=['store_id','not in',$store_arr];
$store_arr = getenv('NO_STORE_STATISTICS');
if ($store_arr) {
$store_arr = explode(',', $store_arr);
$where[] = ['store_id', 'not in', $store_arr];
}
$list = StoreBranchProduct::where($where)->page($parmas['page_no'], 15)->select()
->each(function ($item) {
@ -217,19 +238,55 @@ class WarehouseLogic extends BaseLogic
$count = WarehouseProductStorege::where('nums', '<', 0)->count();
}
return ['lists' => $list, 'count' => $count];
}
}
/**
* 负库存更新归0
*/
public static function updateNegativeZero($parmas)
{
if ($parmas['type'] == 1) {
$res = StoreProduct::where('id',$parmas['id'])->update(['stock'=>0]);
$res = StoreProduct::where('id', $parmas['id'])->update(['stock' => 0]);
} elseif ($parmas['type'] == 2) {
$res=StoreBranchProduct::where('id',$parmas['id'])->update(['stock'=>0]);
$res = StoreBranchProduct::where('id', $parmas['id'])->update(['stock' => 0]);
} elseif ($parmas['type'] == 3) {
$res = WarehouseProductStorege::where('id',$parmas['id'])->update(['nums'=>0]);
$res = WarehouseProductStorege::where('id', $parmas['id'])->update(['nums' => 0]);
}
return $res;
}
public static function stockProductPrice($parmas)
{
$arr1 = WarehouseProductStorege::where('nums', '>', 0)->select();
foreach ($arr1 as $k => $v) {
$find = StoreProduct::where('id', $v['product_id'])->find();
if ($find && $find['price'] > 0) {
$total_price = bcmul($find['price'], $v['nums'], 2);
$price = $find['price'];
} else {
$total_price = 0;
$price = 0;
}
WarehouseProductStorege::where('id', $v['id'])->update(['price' => $price, 'total_price' => $total_price]);
}
$arr2 = StoreBranchProduct::where('stock', '>', 0)->select();
foreach ($arr2 as $k => $v) {
if ($v['price'] > 0) {
$total_price = bcmul($v['price'], $v['stock'], 2);
} else {
$total_price = 0;
}
StoreBranchProduct::where('id', $v['id'])->update(['total_price' => $total_price]);
}
$arr3 = StoreProduct::where('stock', '>=', 0)->select();
foreach ($arr3 as $k => $v) {
$stock = StoreBranchProduct::where('product_id', $v['id'])->where('stock', '>', 0)->sum('stock');
$nums = WarehouseProductStorege::where('nums', '>', 0)->where('product_id', $v['id'])->sum('nums');
$stock2 = bcadd($stock, $nums, 2);
bcmul($v['purchase'], $stock2, 2);
StoreProduct::where('id', $v['id'])->update(['stock' => $stock2, 'total_price' => $v]);
}
return true;
}
}

View File

@ -36,8 +36,7 @@ class StoreBranchProductLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -52,8 +51,7 @@ class StoreBranchProductLogic extends BaseLogic
{
$StoreProduct = StoreBranchProduct::where('id', $params['id'])->find();
if ($params['status'] == 1 && $StoreProduct['price'] == 0) {
self::setError('商品价格不能为0,无法上架');
return false;
throw new BusinessException('商品价格不能为0,无法上架');
}
Db::startTrans();
try {
@ -67,10 +65,9 @@ class StoreBranchProductLogic extends BaseLogic
StoreBranchProduct::where('id', $params['id'])->update($data);
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException('商品编辑失败:',$e->getMessage());
}
}
/**
@ -84,19 +81,22 @@ class StoreBranchProductLogic extends BaseLogic
{
Db::startTrans();
try {
$find = StoreProduct::where('id', $params['product_id'])->find();
$storeBranchProduct = StoreBranchProduct::where('id', $params['id'])->find();
$find = StoreProduct::where('id', $params['product_id'])->find()->toArray();
$storeBranchProduct = StoreBranchProduct::where('id', $params['id'])->find()->toArray();
if ($type == 1) {
$stock = bcadd($find['stock'], $params['nums'], 2);
$branchStock = bcadd($storeBranchProduct['stock'], $params['nums'], 2);
StoreBranchProduct::where('id', $params['id'])->update(['stock' => $branchStock, 'total_price' => bcmul($branchStock, $find['purchase'], 2)]);
StoreProduct::where('id', $params['product_id'])->update(['stock' => $stock, 'total_price' => bcmul($stock, $find['purchase'], 2)]);
StoreBranchProduct::update(['stock' => $branchStock, 'total_price' => bcmul($branchStock, $find['purchase'], 2)],['id'=> $params['id']]);
StoreProduct::update(['stock' => $stock, 'total_price' => bcmul($stock, $find['purchase'], 2)],['id'=> $params['product_id']]);
} else {
$branchStock = bcsub($storeBranchProduct['stock'], $params['nums'], 2);
$stock = bcsub($find['stock'], $params['nums'], 2);
StoreBranchProduct::where('id', $params['id'])->update(['stock' => $branchStock, 'total_price' => bcmul($branchStock, $find['purchase'], 2)]);
StoreProduct::where('id', $params['product_id'])->update(['stock' => $stock, 'total_price' => bcmul($stock, $find['purchase'], 2)]);
StoreBranchProduct::where('id', $params['id'])->update(['stock' => $branchStock, 'total_price' => bcmul($branchStock, $find['purchase'], 2)],['id'=>$params['id']]);
StoreProduct::where('id', $params['product_id'])->update(['stock' => $stock, 'total_price' => bcmul($stock, $find['purchase'], 2)],['id'=>$params['product_id']]);
}
Db::commit();
return true;
@ -116,8 +116,7 @@ class StoreBranchProductLogic extends BaseLogic
{
$stock = StoreBranchProduct::where('id', $params['id'])->value('stock');
if ($stock > 0) {
self::setError('商品库存不为0,无法删除');
return false;
throw new BusinessException('商品库存不为0,无法删除');
}
StoreBranchProduct::destroy($params['id']);
return true;

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_cash_finance_flow;
use app\common\model\store_cash_finance_flow\StoreCashFinanceFlow;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class StoreCashFinanceFlowLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -64,8 +64,7 @@ class StoreCashFinanceFlowLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_category;
use app\common\model\store_category\StoreCategory;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -40,8 +41,7 @@ class StoreCategoryLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -69,8 +69,7 @@ class StoreCategoryLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_extract;
use app\common\model\store_extract\StoreExtract;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class StoreExtractLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +61,7 @@ class StoreExtractLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_finance_flow;
use app\common\model\store_finance_flow\StoreFinanceFlow;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class StoreFinanceFlowLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +61,7 @@ class StoreFinanceFlowLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -9,13 +9,17 @@ use app\api\logic\order\OrderLogic;
use app\common\enum\PayEnum;
use app\common\model\store_order\StoreOrder;
use app\common\logic\BaseLogic;
use app\common\logic\CommissionnLogic;
use app\common\logic\PayNotifyLogic;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_finance_flow\StoreFinanceFlow;
use app\common\model\store_finance_flow_product\StoreFinanceFlowProduct;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\user\User;
use app\common\model\warehouse_order\WarehouseOrder;
use app\common\model\warehouse_product\WarehouseProduct;
use support\exception\BusinessException;
use think\facade\Db;
@ -42,17 +46,19 @@ class StoreOrderLogic extends BaseLogic
$v['uid'] = $params['user_id'];
$v['store_id'] = $params['store_id'];
$v['cart_num'] = $v['stock'];
StoreBranchProduct::where('id',$v['id'])->update(['price'=>$v['price'],'vip_price'=>$v['price'],'cost'=>$v['price'],'purchase'=>$v['price']]);
if(in_array($params['store_id'],[17,18])){
StoreBranchProduct::where('id', $v['id'])->update(['price' => $v['price'], 'vip_price' => $v['price'], 'cost' => $v['price'], 'purchase' => $v['price']]);
}
unset($v['id']);
$res = CartLogic::add($v);
$cartId[] = $res['id'];
}
$user = User::where('id', $params['user_id'])->find();
$params['shipping_type']=2;
$params['shipping_type'] = 2;
$params['pay_type'] = 7;
$params['source'] =2;//后台下单
$order = OrderLogic::createOrder($cartId, null, $user, $params);
return true;
}
@ -73,8 +79,7 @@ class StoreOrderLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -112,35 +117,122 @@ class StoreOrderLogic extends BaseLogic
public static function refund($detail, $params)
{
//微信支付
if (in_array($detail['pay_type'], [PayEnum::WECHAT_PAY_MINI, PayEnum::WECHAT_PAY_BARCODE])) {
$money = (int)bcmul($detail['pay_price'], 100);
$refund = (new \app\common\logic\store_order\StoreOrderLogic())
->refund($params['order_id'], $money, $money);
if ($refund) {
StoreOrderCartInfo::where('oid',$detail['id'])->update(['is_pay'=>-1]);
if (isset($params['product_arr']) && count($params['product_arr']) > 0) {
//微信支付
if (in_array($detail['pay_type'], [PayEnum::WECHAT_PAY_MINI, PayEnum::WECHAT_PAY_BARCODE])) {
$money = (int)bcmul($params['refund_price'], 100);
$pay_price = (int)bcmul($detail['pay_price'], 100);
$refund = (new \app\common\logic\store_order\StoreOrderLogic())
->refund($params['order_id'], $money, $pay_price);
if ($refund) {
$refund_price = $params['refund_price'];
$refund_num = 0;
foreach ($params['product_arr'] as $k => $v) {
$find = StoreOrderCartInfo::where('oid', $detail['id'])->where('product_id', $v['product_id'])->find();
if ($find) {
$refund_num += $v['cart_num'];
$cart_num = bcsub($find['cart_num'], $v['cart_num']);
$total_price = bcmul($find['price'], $cart_num);
$data = ['cart_num' => $cart_num, 'total_price' => $total_price];
StoreOrderCartInfo::where('id', $find['id'])->update($data);
$arr = StoreFinanceFlowProduct::where('oid', $detail['id'])->where('product_id', $v['product_id'])->select()->toArray();
foreach ($arr as $key => $value) {
$value['cart_num'] = $cart_num;
$value['total_price'] = bcmul($cart_num, $value['price'], 2);
$value['number'] = bcmul($value['total_price'], $value['rate'], 2);
StoreFinanceFlowProduct::where('id', $value['id'])->update(['delete_time' => time()]);
unset($value['id']);
$value['create_time'] = strtotime($value['create_time']);
$value['update_time'] = strtotime($value['update_time']);
StoreFinanceFlowProduct::create($value);
}
}
}
$village_uid = StoreFinanceFlow::where('order_id', $detail['id'])->where('financial_type', 14)->value('other_uid');
$brigade_uid = StoreFinanceFlow::where('order_id', $detail['id'])->where('financial_type', 15)->value('other_uid');
$transaction_id = StoreFinanceFlow::where('order_id', $detail['id'])->value('transaction_id');
StoreFinanceFlow::where('order_id', $detail['id'])->update(['delete_time' => time()]);
$detail['refund_price']=$refund_price;
CommissionnLogic::setStore($detail, $village_uid, $brigade_uid, $transaction_id);
StoreOrder::where('id', $detail['oid'])->update(['refund_price' => $refund_price, 'refund_num' => $refund_num]);
return '退款成功';
}
}
//余额支付 采购款支付
if (in_array($detail['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
PayNotifyLogic::balance_purchase_refund($detail,0,$params['refund_price']);
return '退款成功';
}
//现金支付
if ($detail['pay_type'] = PayEnum::CASH_PAY) {
PayNotifyLogic::cash_refund($params['order_id']);
return '退款成功';
}
return false;
} else {
//微信支付
if (in_array($detail['pay_type'], [PayEnum::WECHAT_PAY_MINI, PayEnum::WECHAT_PAY_BARCODE])) {
$money = (int)bcmul($detail['pay_price'], 100);
$refund = (new \app\common\logic\store_order\StoreOrderLogic())
->refund($params['order_id'], $money, $money);
if ($refund) {
StoreOrderCartInfo::where('oid', $detail['id'])->update(['is_pay' => -1]);
return '退款成功';
}
}
//余额支付 采购款支付
if (in_array($detail['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
PayNotifyLogic::balance_purchase_refund($detail);
StoreOrderCartInfo::where('oid', $detail['id'])->update(['is_pay' => -1]);
return '退款成功';
}
//现金支付
if ($detail['pay_type'] = PayEnum::CASH_PAY) {
PayNotifyLogic::cash_refund($params['order_id']);
StoreOrderCartInfo::where('oid', $detail['id'])->update(['is_pay' => -1]);
return '退款成功';
}
return false;
//todo 支付包支付
}
//余额支付 采购款支付
if (in_array($detail['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
$money = bcmul($detail['pay_price'], 100);
$arr = [
'amount' => [
'refund' => $money
]
];
PayNotifyLogic::refund($params['order_id'], $arr);
StoreOrderCartInfo::where('oid',$detail['id'])->update(['is_pay'=>-1]);
return '退款成功';
}
public function refundProduct($detail, $params)
{
$refund_price = $params['refund_price'];
$refund_num = 0;
foreach ($params['product_arr'] as $k => $v) {
$find = StoreOrderCartInfo::where('oid', $detail['id'])->where('product_id', $v['product_id'])->find();
if ($find) {
$refund_num += $v['cart_num'];
$cart_num = bcsub($find['cart_num'], $v['cart_num']);
$total_price = bcmul($find['price'], $cart_num);
$data = ['cart_num' => $cart_num, 'total_price' => $total_price];
StoreOrderCartInfo::where('id', $find['id'])->update($data);
$arr = StoreFinanceFlowProduct::where('oid', $detail['id'])->where('product_id', $v['product_id'])->select()->toArray();
foreach ($arr as $key => $value) {
$value['cart_num'] = $cart_num;
$value['total_price'] = bcmul($cart_num, $value['price'], 2);
$value['number'] = bcmul($value['total_price'], $value['rate'], 2);
StoreFinanceFlowProduct::where('id', $value['id'])->update(['delete_time' => time()]);
unset($value['id']);
$value['create_time'] = strtotime($value['create_time']);
$value['update_time'] = strtotime($value['update_time']);
StoreFinanceFlowProduct::create($value);
}
}
}
//现金支付
if ($detail['pay_type'] = PayEnum::CASH_PAY) {
PayNotifyLogic::cash_refund($params['order_id']);
StoreOrderCartInfo::where('oid',$detail['id'])->update(['is_pay'=>-1]);
return '退款成功';
}
return false;
//todo 支付包支付
$village_uid = StoreFinanceFlow::where('order_id', $detail['id'])->where('financial_type', 14)->value('other_uid');
$brigade_uid = StoreFinanceFlow::where('order_id', $detail['id'])->where('financial_type', 15)->value('other_uid');
$transaction_id = StoreFinanceFlow::where('order_id', $detail['id'])->value('transaction_id');
StoreFinanceFlow::where('order_id', $detail['id'])->update(['delete_time' => time()]);
CommissionnLogic::setStore($detail, $village_uid, $brigade_uid, $transaction_id);
StoreOrder::where('id', $detail['oid'])->update(['refund_price' => $refund_price, 'refund_num' => $refund_num]);
StoreOrderCartInfo::where('oid', $detail['id'])->update(['is_pay' => -1]);
}
}

View File

@ -4,7 +4,13 @@ namespace app\admin\logic\store_order_cart_info;
use app\admin\logic\statistic\TradeStatisticLogic;
use app\common\logic\BaseLogic;
use app\common\model\dict\DictData;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit;
use support\exception\BusinessException;
use think\facade\Db;
/**
* 订单购物详情表逻辑
@ -13,6 +19,151 @@ use app\common\model\store_order_cart_info\StoreOrderCartInfo;
*/
class StoreOrderCartInfoLogic extends BaseLogic
{
/**
* @notes 编辑商品列表
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/31 10:53
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
$cart_info = StoreOrderCartInfo::where('oid', $params['oid'])->find();
if($cart_info['is_pay']==1){
throw new BusinessException('已支付订单无法追加');
}
$value=DictData::where('type_value','vendors_store')->column('value');
if(!$value){
throw new BusinessException('请先配置店铺');
}
if(!in_array($cart_info['store_id'],$value)){
throw new BusinessException('该订单不属于可设置店铺');
}
foreach($params['product_arr'] as $k=>$v){
$find=StoreProduct::where('id',$v['product_id'])->find();
$cart_select['total_price'] = bcmul($v['cart_num'], $v['price'], 2); //订单总价
$cart_select['price'] = $v['price'];
$cart_select['cost'] = $v['price'];
$cart_select['vip'] = 0;
$cart_select['unit_name'] = StoreProductUnit::where(['id' => $find['unit']])->value('name') ?? ''; //单位名称
$cart_select['purchase'] = bcmul($v['cart_num'], $v['price'], 2) ?? 0; //成本
$cart_select['pay_price'] = bcmul($v['cart_num'], $v['price'], 2); //订单支付金额
$cart_select['store_price'] = bcmul($v['cart_num'], $v['price'], 2) ?? 0; //商户价
$cart_select['vip_price'] = 0; //vip售价
$cart_select['product_id'] = $find['id'];
$cart_select['old_cart_id'] = 0;
$cart_select['cart_num'] = $v['cart_num'];
$cart_select['verify_code'] =$cart_info['verify_code'];
$cart_select['vip_frozen_price'] = 0;
$cart_select['store_info'] = $find['store_info'];
$cart_select['rose'] = $find['rose'];
$cart_select['name'] = $find['store_name'];
$cart_select['image'] = $find['image'];
$aa[$k]['cart_info'] = json_encode($cart_select);
$aa[$k]['oid'] = $cart_info['oid'];
$aa[$k]['uid']=$cart_info['uid'];
$aa[$k]['product_id']=$find['id'];
$aa[$k]['verify_code']=$cart_info['verify_code'];
$aa[$k]['price']=$v['price'];
$aa[$k]['cart_num']=$v['cart_num'];
$aa[$k]['total_price']=$cart_select['pay_price'];
}
(new StoreOrderCartInfo())->saveAll($aa);
$total_price = StoreOrderCartInfo::where('oid', $params['oid'])->sum('total_price');
$total_count = StoreOrderCartInfo::where('oid', $params['oid'])->count();
StoreOrder::where('id', $params['oid'])->update(['total_price' => $total_price, 'pay_price' => $total_price, 'cost' => $total_price, 'total_num' => $total_count]);
Db::commit();
return true;
} catch (\Throwable $e) {
Db::rollback();
d($e);
throw new BusinessException('编辑商品失败' . $e->getMessage());
}
}
/**
* @notes 编辑商品列表
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/31 10:53
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
$find = StoreOrderCartInfo::where('id', $params['id'])->find();
if ($find) {
if($find['is_pay']==1){
throw new BusinessException('已支付订单无法编辑');
}
$value=DictData::where('type_value','vendors_store')->column('value');
if(!$value){
throw new BusinessException('请先配置店铺');
}
if(!in_array($find['store_id'],$value)){
throw new BusinessException('该订单不属于可设置店铺');
}
$find->cart_num = $params['cart_num'];
$find->total_price = bcmul($params['cart_num'], $find->price, 2);
$find->save();
$total_price = StoreOrderCartInfo::where('oid', $find['oid'])->sum('total_price');
$total_count = StoreOrderCartInfo::where('oid', $find['oid'])->count();
StoreOrder::where('id', $find['oid'])->update(['total_price' => $total_price, 'pay_price' => $total_price, 'cost' => $total_price, 'total_num' => $total_count]);
}
Db::commit();
return true;
} catch (\Throwable $e) {
Db::rollback();
throw new BusinessException('编辑商品失败' . $e->getMessage());
}
}
/**
* @notes 删除商品
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/31 10:53
*/
public static function del(array $params): bool
{
Db::startTrans();
try {
$find = StoreOrderCartInfo::where('id', $params['id'])->find();
if ($find) {
if($find['is_pay']==1){
throw new BusinessException('已支付订单无法删除');
}
$value=DictData::where('type_value','vendors_store')->column('value');
if(!$value){
throw new BusinessException('请先配置店铺');
}
if(!in_array($find['store_id'],$value)){
throw new BusinessException('该订单不属于可设置店铺');
}
$find->delete_time=time();
$find->save();
$total_price = StoreOrderCartInfo::where('oid', $find['oid'])->sum('total_price');
$total_count = StoreOrderCartInfo::where('oid', $find['oid'])->count();
StoreOrder::where('id', $find['oid'])->update(['total_price' => $total_price, 'pay_price' => $total_price, 'cost' => $total_price, 'total_num' => $total_count]);
}
Db::commit();
return true;
} catch (\Throwable $e) {
Db::rollback();
throw new BusinessException('删除商品失败' . $e->getMessage());
}
}
public function curve($product_id, $start_time, $end_time)
{
$store_order_cart_info = new StoreOrderCartInfo();
@ -29,13 +180,13 @@ class StoreOrderCartInfoLogic extends BaseLogic
$totalCartNum2 = $store_order_cart_info->getCurveData($where, $time, 'sum(total_price)');
$totalCartNum2 = $tradeStatisticLogic->trendYdata((array)$totalCartNum2, $timeKey);
$value1=[];
$value2=[];
foreach($totalCartNum1['y'] as $k=>$v){
$value1[]=$v;
$value1 = [];
$value2 = [];
foreach ($totalCartNum1['y'] as $k => $v) {
$value1[] = $v;
}
foreach($totalCartNum2['y'] as $k=>$v){
$value2[]=$v;
foreach ($totalCartNum2['y'] as $k => $v) {
$value2[] = $v;
}
$data = [];
$data['xAxis'] = $totalCartNum1['x'] ?? [];
@ -45,9 +196,9 @@ class StoreOrderCartInfoLogic extends BaseLogic
'smooth' => 'true',
'type' => 'line',
'yAxisIndex' => 1,
'value' =>$value1
]
,[
'value' => $value1
],
[
'name' => '金额',
'smooth' => 'true',
'type' => 'line',

View File

@ -36,13 +36,25 @@ class StoreProductLogic extends BaseLogic
*/
public static function add(array $params): bool
{
$count=count($params['cate_arr']);
$top_cate_id=0;
$two_cate_id=0;
if($count==3){
$top_cate_id=$params['cate_arr'][0];
$two_cate_id=$params['cate_arr'][1];
}elseif($count==2){
$top_cate_id=$params['cate_arr'][0];
$two_cate_id=$params['cate_arr'][0];
}
Db::startTrans();
try {
$data = [
'store_name' => $params['store_name'],
'image' => $params['image'],
'store_info' => $params['store_info'] ?? '',
'bar_code' =>$params['product_arr'][0]['bar_code'] ?? '',
'bar_code' => $params['bar_code'] ?? '',
'top_cate_id' => $top_cate_id,
'two_cate_id' => $two_cate_id,
'cate_id' => $params['cate_id'],
'unit' => $params['product_arr'][0]['unit'],
'stock' => 0,
@ -57,8 +69,14 @@ class StoreProductLogic extends BaseLogic
'batch' => $params['batch'] ?? 0,
'store_batch' => $params['store_batch'] ?? 1,
'product_type' => $params['product_type'] ?? 0,
'spec_type' => $params['spec_type'] ?? 0,
'is_show' => $params['is_show'] ?? 0,
];
// if ($params['rose'] > 0) {
// $rose_price = bcmul($params['cost'], $params['rose'], 2);
// $data['price'] = bcadd($params['cost'], $rose_price, 2);
// } else {
// $data['price'] = 0;
// }
$res = StoreProduct::create($data);
$arr=[];
foreach($params['product_arr'] as $k=>$v){
@ -76,8 +94,7 @@ class StoreProductLogic extends BaseLogic
return true;
} catch (\Throwable $e) {
Db::rollback();
d($e);
throw new BusinessException($e->getMessage());
throw new BusinessException('添加商品失败'.$e->getMessage());
}
}
@ -146,11 +163,23 @@ class StoreProductLogic extends BaseLogic
{
Db::startTrans();
try {
$count=count($params['cate_arr']);
$top_cate_id=0;
$two_cate_id=0;
if($count==3){
$top_cate_id=$params['cate_arr'][0];
$two_cate_id=$params['cate_arr'][1];
}elseif($count==2){
$top_cate_id=$params['cate_arr'][0];
$two_cate_id=$params['cate_arr'][0];
}
$data = [
'store_name' => $params['store_name'],
'image' => $params['image'],
'bar_code' => $params['bar_code'] ?? '',
'store_info' => $params['store_info'] ?? '',
'top_cate_id' => $top_cate_id,
'two_cate_id' => $two_cate_id,
'cate_id' => $params['cate_id'],
'unit' => $params['unit'],
'stock' => $params['stock'],
@ -164,14 +193,14 @@ class StoreProductLogic extends BaseLogic
'store_batch' => $params['store_batch'] ?? 1,
'manufacturer_information' => $params['manufacturer_information'] ?? '',
'swap' => $params['swap'] ?? 0,
'rose' => $params['rose'] ?? 0,
'is_show' => $params['is_show'] ?? 0,
];
StoreProduct::where('id', $params['id'])->update($data);
StoreProduct::update($data,['id'=>$params['id']]);
$dealCate = self::dealChangeCate($params['cate_id']);
// $dealCate = self::dealChangeCate($params['cate_id']);
//修改
StoreBranchProduct::where('product_id', $params['id'])->update([
StoreBranchProduct::where('product_id', $params['id'])->whereNotIn('store_id',[17,18])->update([
'price' => $params['price'],
'vip_price' => $params['vip_price'],
'cost' => $params['cost'],
@ -181,11 +210,13 @@ class StoreProductLogic extends BaseLogic
'manufacturer_information' => $params['manufacturer_information'] ?? '',
'store_info' => $params['store_info'] ?? '',
'cate_id' => $params['cate_id'],
'top_cate_id' => $dealCate['top_cate_id'],
'two_cate_id' => $dealCate['two_cate_id'],
'top_cate_id' => $top_cate_id,
'two_cate_id' => $two_cate_id,
'cate_id' => $params['cate_id'],
'bar_code' => $params['bar_code'],
'purchase' => $params['purchase'],
'rose' => $params['rose'] ?? 0,
'status' => $params['is_show'] ?? 0,
'image' => $params['image'],
'store_batch' => $params['store_batch'] ?? 1,
@ -193,10 +224,10 @@ class StoreProductLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException('编辑商品失败'.$e->getMessage());
}
}
@ -255,8 +286,8 @@ class StoreProductLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException('删除失败'.$e->getMessage());
}
}
@ -264,6 +295,10 @@ class StoreProductLogic extends BaseLogic
/**普通 */
public static function ordinary($product_arr, $store_id, $admin_id, $find)
{
$res=StoreBranchProduct::where('store_id',$store_id)->where('product_id',$find['id'])->find();
if($res){
return $res;
}
$dealCate = self::dealChangeCate($find['cate_id']);
$product = [
'product_id' => $find['id'],
@ -331,8 +366,7 @@ class StoreProductLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
Log::error('store-storage队列消费失败: ' . $e->getMessage() . ',line:' . $e->getLine() . ',file:' . $e->getFile());
return false;
throw new BusinessException('添加兑换商品失败'.$e->getMessage());
}
}
// else {

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_product_attr_value;
use app\common\model\store_product_attr_value\StoreProductAttrValue;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class StoreProductAttrValueLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +61,7 @@ class StoreProductAttrValueLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\store_product_unit;
use app\common\model\store_product_unit\StoreProductUnit;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -40,8 +41,7 @@ class StoreProductUnitLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -69,8 +69,7 @@ class StoreProductUnitLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\supplier;
use app\common\model\supplier\Supplier;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -41,8 +42,7 @@ class SupplierLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -71,8 +71,7 @@ class SupplierLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -6,6 +6,7 @@ namespace app\admin\logic\system_store;
use app\common\model\system_store\SystemStore;
use app\common\logic\BaseLogic;
use app\common\model\system_store\SystemStoreStaff;
use support\exception\BusinessException;
use think\facade\Db;
use Webman\Config;
@ -70,8 +71,8 @@ class SystemStoreLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -137,8 +138,8 @@ class SystemStoreLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -10,6 +10,7 @@ use app\common\logic\BaseLogic;
use app\common\model\store_product\StoreProduct;
use app\common\model\warehouse_product\WarehouseProduct;
use app\common\model\warehouse_product_storege\WarehouseProductStorege;
use support\exception\BusinessException;
use think\facade\Db;
@ -44,10 +45,9 @@ class SystemStoreStorageLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -74,8 +74,8 @@ class SystemStoreStorageLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -21,6 +21,7 @@ use app\common\model\tools\GenerateTable;
use app\common\service\generator\GenerateService;
use support\Cache;
use support\Container;
use support\exception\BusinessException;
use think\facade\Db;
@ -78,8 +79,7 @@ class GeneratorLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -134,8 +134,7 @@ class GeneratorLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -157,8 +156,7 @@ class GeneratorLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -187,8 +185,7 @@ class GeneratorLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -228,8 +225,7 @@ class GeneratorLogic extends BaseLogic
return ['file' => $zipFile];
} catch (\Exception $e) {
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}
@ -252,8 +248,7 @@ class GeneratorLogic extends BaseLogic
return Container::get(GenerateService::class)->preview($table);
} catch (\Exception $e) {
self::$error = $e->getMessage();
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\user;
use app\common\logic\BaseLogic;
use app\common\model\user\UserFeedback;
use support\exception\BusinessException;
use think\facade\Db;
@ -40,8 +41,7 @@ class UserFeedbackLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -69,8 +69,7 @@ class UserFeedbackLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -31,6 +31,7 @@ use app\common\model\user_sign\UserSign;
use app\common\model\vip_flow\VipFlow;
use think\facade\Db;
use app\common\service\FileService;
use support\exception\BusinessException;
use Webman\Config;
/**
@ -69,10 +70,9 @@ class UserLogic extends BaseLogic
Db::commit();
return $res;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -81,23 +81,19 @@ class UserLogic extends BaseLogic
$user_ship=$params['user_ship']??0;
if($user_ship==2){
if(!isset($params['village'])){
self::setError('请设置村参数');
return false;
throw new BusinessException('请设置村参数');
}
$arr=User::where('user_ship',$user_ship)->alias('user')->join('user_address address','user.id=address.uid and village='.$params['village'])->find();
if ($arr) {
self::setError('该区域已有村长请重新选择');
return false;
throw new BusinessException('该区域已有村长请重新选择');
}
}elseif($user_ship==3){
if(!isset($params['brigade'])){
self::setError('请设置队参数');
return false;
throw new BusinessException('请设置队参数');
}
$arr=User::where('user_ship',$user_ship)->alias('user')->join('user_address address','user.id=address.uid and village='.$params['village'] .' and brigade='.$params['brigade'])->find();
if($arr){
self::setError('该区域已有队长请重新选择');
return false;
throw new BusinessException('该区域已有队长请重新选择');
}
}
return true;
@ -148,8 +144,7 @@ class UserLogic extends BaseLogic
return $res;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
/**
@ -179,8 +174,7 @@ class UserLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\user_bill;
use app\common\model\user_bill\UserBill;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class UserBillLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +61,7 @@ class UserBillLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\user_label;
use app\common\model\user_label\UserLabel;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,7 @@ class UserLabelLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +61,8 @@ class UserLabelLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\user_recharge;
use app\common\model\user_recharge\UserRecharge;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -36,8 +37,8 @@ class UserRechargeLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -61,8 +62,8 @@ class UserRechargeLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -7,6 +7,7 @@ use app\common\model\user_ship\UserShip;
use app\common\logic\BaseLogic;
use app\common\model\user\User;
use app\common\model\user\UserAddress;
use support\exception\BusinessException;
use think\facade\Db;
@ -40,8 +41,8 @@ class UserShipLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -67,8 +68,8 @@ class UserShipLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -106,8 +107,7 @@ class UserShipLogic extends BaseLogic
$user_ship=$params['user_ship']??0;
if($user_ship==2){
if(!isset($params['village'])){
self::setError('请设置村参数');
return false;
throw new BusinessException('请设置村参数');
}
$arr=User::where('user_ship',$user_ship)->column('id');
if($arr){
@ -116,14 +116,12 @@ class UserShipLogic extends BaseLogic
if($params['uid']==$find['uid']){
return true;
}
self::setError('该区域已有村长请重新选择');
return false;
throw new BusinessException('该区域已有村长请重新选择');
}
}
}elseif($user_ship==3){
if(!isset($params['brigade'])){
self::setError('请设置队参数');
return false;
throw new BusinessException('请设置队参数');
}
$arr=User::where('user_ship',$user_ship)->column('id');
if($arr){
@ -132,8 +130,7 @@ class UserShipLogic extends BaseLogic
if($params['uid']==$find['uid']){
return true;
}
self::setError('该区域已有队长请重新选择');
return false;
throw new BusinessException('该区域已有队长请重新选择');
}
}
}

View File

@ -5,6 +5,7 @@ namespace app\admin\logic\warehouse;
use app\common\model\warehouse\Warehouse;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;
@ -42,8 +43,8 @@ class WarehouseLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -73,8 +74,8 @@ class WarehouseLogic extends BaseLogic
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -6,6 +6,7 @@ use app\admin\logic\warehouse_product\WarehouseProductLogic;
use app\common\model\warehouse_order\WarehouseOrder;
use app\common\logic\BaseLogic;
use app\common\model\warehouse_product\WarehouseProduct;
use support\exception\BusinessException;
use think\facade\Db;
/**
@ -69,10 +70,9 @@ class WarehouseOrderLogic extends BaseLogic
}
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -88,8 +88,7 @@ class WarehouseOrderLogic extends BaseLogic
{
$find = WarehouseOrder::where('id', $params['id'])->find();
if (!$find) {
self::setError('订单不存在');
return false;
throw new BusinessException('订单不存在');
}
Db::startTrans();
try {
@ -128,8 +127,7 @@ class WarehouseOrderLogic extends BaseLogic
return true;
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -145,8 +143,7 @@ class WarehouseOrderLogic extends BaseLogic
{
$count = WarehouseProduct::where('oid', $params['id'])->count();
if ($count >= 1) {
self::setError('该订单下还有商品没有删除,请先删除商品');
return false;
throw new BusinessException('该订单下还有商品没有删除,请先删除商品');
}
WarehouseOrder::destroy($params['id']);
$find = WarehouseProduct::where('oid', $params['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find();

View File

@ -42,15 +42,22 @@ class WarehouseProductLogic extends BaseLogic
$storege = WarehouseProductStorege::where('warehouse_id', $params['warehouse_id'])->where('product_id', $params['product_id'])->find();
if ($storege) {
if ($params['financial_pm'] == 0) {
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty();
if (!$storeProduct) {
throw new BusinessException('商品不存在');
}
$after_nums = $storege['nums'] - $params['nums'];
$total_price = bcmul($after_nums, $storeProduct['purchase'], 2);
// if ($after_nums < 0) {
// throw new BusinessException('库存不足,warehouse_id:'.$params['warehouse_id'].'product_id:'.$params['product_id']);
// }
WarehouseProductStorege::where('id', $storege['id'])->dec('nums', $params['nums'])->update();
WarehouseProductStorege::update(['nums'=>$after_nums, 'total_price' => $total_price],['id'=> $storege['id']]);
//门店加库存
$storeBranchProduct = StoreBranchProduct::where('product_id', $params['product_id'])->where('store_id', $params['store_id'])->find();
if (!$storeBranchProduct) {
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty()->toArray();
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty();
if (!$storeProduct) {
throw new BusinessException('商品不存在');
}
@ -62,28 +69,32 @@ class WarehouseProductLogic extends BaseLogic
} else {
$after_nums = $storege['nums'] + $params['nums'];
if ($type == 1) {
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty()->toArray();
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty();
if (!$storeProduct) {
throw new BusinessException('商品不存在');
}
$total_price = bcmul($after_nums, $storeProduct['purchase'], 2);
WarehouseProductStorege::where('id', $storege['id'])->update(['nums' => $after_nums, 'total_price' => $total_price]);
WarehouseProductStorege::update(['nums' => $after_nums, 'total_price' => $total_price],['id'=>$storege['id']]);
}
}
$before_nums = $storege['nums'];
} else {
$after_nums = $params['nums'];
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty()->toArray();
$storeProduct = StoreProduct::where('id', $params['product_id'])->findOrEmpty();
if (!$storeProduct) {
throw new BusinessException('商品不存在');
}
$total_price = bcmul($after_nums, $storeProduct['purchase'], 2);
WarehouseProductStorege::create([
$data=[
'warehouse_id' => $params['warehouse_id'],
'product_id' => $params['product_id'],
'nums' => $params['nums'],
'total_price'=>$total_price
]);
];
if($params['financial_pm']==0){
$data['nums']=-$params['nums'];
}
$storege=WarehouseProductStorege::create($data);
}
$batch_count = WarehouseProduct::where(['product_id' => $params['product_id'], 'warehouse_id' => $params['warehouse_id'], 'financial_pm' => $params['financial_pm'], 'store_id' => $params['store_id']])->count();
$data = [
@ -208,8 +219,7 @@ class WarehouseProductLogic extends BaseLogic
} elseif ($res['financial_pm'] == 0) {
$stock = StoreBranchProduct::where(['store_id' => $res['store_id'], 'product_id' => $res['product_id']])->value('stock');
if ($stock < $res['nums']) {
self::setError('商品库存不足,无法退回');
return false;
throw new BusinessException('商品库存不足,无法退回');
}
StoreBranchProduct::where(['store_id' => $res['store_id'], 'product_id' => $res['product_id']])->dec('stock', $res['nums'])->update();
WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->inc('nums', $res['nums'])->update();
@ -223,9 +233,30 @@ class WarehouseProductLogic extends BaseLogic
}
return true;
}
return false;
throw new BusinessException('没有查到出入库信息');
}
/**
* * @notes 结算
* @param $id
* @return void
*/
public static function settlement($id){
Db::startTrans();
try {
$find=WarehouseProduct::where(['id'=>$id,'financial_pm'=>1,'is_pay'=>0])->find();
if($find){
$find->is_pay=1;
$find->save();
} else{
throw new BusinessException('没有查到出入库信息');
}
Db::commit();
} catch (\Throwable $th) {
Db::rollback();
throw new BusinessException($th->getMessage());
}
}
/**
* @notes 获取商品仓储信息详情
* @param $params

View File

@ -52,7 +52,7 @@ class SupplierValidate extends BaseValidate
*/
public function sceneAdd()
{
return $this->only(['mer_name','phone','settle_cycle','address','mark','status']);
return $this->only(['mer_name','phone','settle_cycle','address']);
}
@ -64,7 +64,7 @@ class SupplierValidate extends BaseValidate
*/
public function sceneEdit()
{
return $this->only(['id','mer_name','phone','settle_cycle','address','mark','status']);
return $this->only(['id','mer_name','phone','settle_cycle','address']);
}

View File

@ -44,9 +44,20 @@ class IndexController extends BaseApiController
public function index()
{
return json([1]);
return json(1);
$financeFlow = new StoreFinanceFlow();
$financeFlowLogic = new StoreFinanceFlowLogic();
$select_1 = $financeFlow->where('id',16197)->select();
foreach ($select_1 as $k => $v) {
if ($v['other_uid'] > 0) {
$financeFlowLogic->updateStatusUser($v['id'], $v['other_uid'], $v['number'], $v['order_id']);
}
}
}
/**
* @notes 下载文件
*/
@ -135,9 +146,8 @@ class IndexController extends BaseApiController
$latitude = $params['lat'];
$longitude = $params['long'];
// 计算距离的SQL表达式
$distanceSql = "SQRT(POW(69.1 * (latitude - {$latitude}), 2) +
POW(69.1 * ({$longitude} - longitude) * COS(latitude / 57.3), 2))";
$find = SystemStore::field("id, name,abbreviation, {$distanceSql} AS distance")
$distanceExpr = "6371 * 2 * ASIN(SQRT(POWER(SIN(({$latitude} - abs(latitude)) * pi()/180 / 2), 2) + COS({$latitude} * pi()/180) * COS(abs(latitude) * pi()/180) * POWER(SIN(({$longitude} - longitude) * pi()/180 / 2), 2)))";
$find = SystemStore::field("id, name,abbreviation, {$distanceExpr} AS distance")
->where('is_show', '=', 1)
->where('latitude', '<>', '')
->where('longitude', '<>', '')

View File

@ -19,9 +19,6 @@ class LoginController extends BaseApiController
{
$params = (new LoginAccountValidate())->post()->goCheck();
$result = LoginLogic::login($params);
if (false === $result) {
return $this->fail(LoginLogic::getError());
}
return $this->success('', $result);
}
/**
@ -44,9 +41,6 @@ class LoginController extends BaseApiController
{
$params = (new WechatLoginValidate())->post()->goCheck('mnpLogin');
$res = LoginLogic::mnpLogin($params);
if (false === $res) {
return $this->fail(LoginLogic::getError());
}
$res = LoginLogic::dealStaff($res);
return $this->success('', $res);
}
@ -63,9 +57,6 @@ class LoginController extends BaseApiController
$params = (new WechatLoginValidate())->post()->goCheck("wechatAuth");
$params['user_id'] = $this->userId;
$result = LoginLogic::mnpAuthLogin($params);
if ($result === false) {
return $this->fail(LoginLogic::getError());
}
return $this->success('绑定成功', [], 1, 1);
}
@ -79,9 +70,6 @@ class LoginController extends BaseApiController
{
$params = $this->request->post();
$result = LoginLogic::updateUser($params, $this->userId);
if ($result === false) {
return $this->fail(LoginLogic::getError());
}
return $this->success('操作成功', [], 1, 0);
}

View File

@ -6,8 +6,9 @@ use app\api\logic\order\CartLogic;
use app\api\validate\CartValidate;
use app\api\controller\BaseApiController;
use app\api\lists\order\CartList;
use app\api\lists\order\CartWholesaleList;
use app\common\model\order\Cart;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit;
class CartController extends BaseApiController
@ -16,7 +17,13 @@ class CartController extends BaseApiController
{
return $this->dataLists(new CartList());
}
/**
* 批发商品列表
*/
public function wholesale_lists(){
return $this->dataLists(new CartWholesaleList());
}
/**
* @notes 添加购物车
*/
@ -25,18 +32,16 @@ class CartController extends BaseApiController
$params = (new CartValidate())->post()->goCheck('add');
$params['uid'] = $this->request->userId;
$result = Cart::where(['uid' => $params['uid'], 'store_id' => $params['store_id'], 'product_id' => $params['product_id'], 'is_fail' => 0, 'is_pay' => 0, 'delete_time' => null])->find();
$params['cart_num']=bcadd($params['cart_num'],0,2);
//判断起批发价
$branchProduct = StoreBranchProduct::where(
$branchProduct = StoreProduct::where(
[
'product_id' => $params['product_id'],
'store_id' => $params['store_id']
'id' => $params['product_id'],
]
)->find();
if (!$branchProduct) {
return $this->fail('商品不存在');
}
$params['cart_num']=intval($params['cart_num']);
if ($params['cart_num'] < $branchProduct['batch']) {
return $this->fail('起批发量低于最低值' . $branchProduct['batch']);
}
@ -85,12 +90,23 @@ class CartController extends BaseApiController
{
$params = (new CartValidate())->post()->goCheck('change');
$params['uid'] = $this->request->userId;
$params['cart_num']=intval($params['cart_num']);
$params['cart_num']=bcadd($params['cart_num'],0,2);
if (convertNumber($params['cart_num']) === false) {
$branchProduct = StoreProduct::where(
[
'id' => $params['product_id'],
]
)->find();
$is_bulk = StoreProductUnit::where('id', $branchProduct['unit'])->value('is_bulk');
if ($is_bulk == 0) {
return $this->fail('非计量商品,不能有小数,请编辑购物车');
}
}
$res = CartLogic::edit($params, 'dec');
if ($res) {
return $this->success('修改成功');
} else {
return $this->fail(CartLogic::getError());
return $this->fail('修改失败');
}
}
@ -105,7 +121,7 @@ class CartController extends BaseApiController
if ($res) {
return $this->success('删除成功');
} else {
return $this->fail(CartLogic::getError());
return $this->fail('删除失败');
}
}
}

View File

@ -105,13 +105,6 @@ class OrderController extends BaseApiController
$params = $this->request->post();
$user = User::where('id', $this->userId)->find();
$res = OrderLogic::cartIdByOrderInfo($cartId, $addressId, $user, $params);
if ($res == false) {
$msg = OrderLogic::getError();
if ($msg == '购物车为空') {
return $this->data([]);
}
return $this->fail(OrderLogic::getError());
}
return $this->data($res);
}
@ -119,13 +112,6 @@ class OrderController extends BaseApiController
{
$params = (new OrderValidate())->post()->goCheck('cart');
$res = OrderLogic::checkLeft($params, $this->userId);
if (!$res) {
$msg = OrderLogic::getError();
if ($msg == '购物车为空') {
return $this->data([]);
}
return $this->fail(OrderLogic::getError());
}
return $this->data($res);
}
@ -230,8 +216,6 @@ class OrderController extends BaseApiController
return $this->fail('支付方式错误');
}
// return $this->data(['order_id' => $order->id]);
} else {
return $this->fail(OrderLogic::getError());
}
}
@ -306,17 +290,11 @@ class OrderController extends BaseApiController
}
}
$result = PaymentLogic::pay($pay_type, 'wechat_common', $order, $this->userInfo['terminal'] ?? 1, $redirectUrl);
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError());
}
return $this->success('', $result);
break;
case PayEnum::WECHAT_PAY_BARCODE:
//微信条码支付
$result = PaymentLogic::codepay($auth_code, $order);
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError(), $params);
}
if (isset($result['trade_state_desc']) && $result['trade_state_desc'] == '支付成功') {
PayNotifyLogic::handle('StoreOrder', $result['out_trade_no'], $result);
} else {
@ -336,9 +314,6 @@ class OrderController extends BaseApiController
case PayEnum::ALIPAY_BARCODE:
//支付宝条码支付
$result = PaymentLogic::ali_auth_code($auth_code, $order);
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError(), $params);
}
if ($result['msg'] !== 'Success') {
return $this->success('用户支付中');
}
@ -388,11 +363,8 @@ class OrderController extends BaseApiController
{
$params = $this->request->get();
$res = OrderLogic::frequentlyPurchase($params);
if (OrderLogic::hasError()) {
return $this->fail(OrderLogic::getError());
} else {
return $this->data($res);
}
return $this->data($res);
}
/**
@ -466,7 +438,7 @@ class OrderController extends BaseApiController
if ($res) {
return $this->success('核销成功');
}
return $this->fail('核销失败' . OrderLogic::getError());
return $this->fail('核销失败');
}
@ -476,7 +448,7 @@ class OrderController extends BaseApiController
$date = $this->request->get('date', date('Y-m-d'));
$store_id = SystemStoreStaff::where('phone', $this->userInfo['mobile'])->value('store_id');
if (empty($store_id)) {
throw new \Exception('该用户未绑定店铺');
return $this->fail('该用户未绑定店铺');
}
$where[] = ['store_id', '=', $store_id];
$where[] = ['paid', '=', 1];

View File

@ -3,11 +3,14 @@
namespace app\api\controller\product;
use app\api\controller\BaseApiController;
use app\api\lists\product\ProductLists;
use app\api\lists\product\ProductWholesaleLists;
use app\api\lists\product\StoreProductLists;
use app\common\model\system_store\SystemStoreStaff;
class ProductController extends BaseApiController{
public $notNeedLogin = ['lists'];
/**
* 商品列表
*/
@ -16,6 +19,13 @@ class ProductController extends BaseApiController{
return $this->dataLists(new ProductLists());
}
/**
* 批发商品列表
*/
public function wholesale_lists(){
return $this->dataLists(new ProductWholesaleLists());
}
/**
* 商品列表
*/

View File

@ -89,20 +89,11 @@ class StoreController extends BaseApiController
$params['create_uid']=$this->userId;
if(isset($params['user_ship']) && in_array($params['user_ship'],[2,3])){
UserUserLogic::checkAddress($params);
if(UserUserLogic::hasError()){
return $this->fail(UserUserLogic::getError());
}
}
$find=UserUserLogic::StoreAdd($params);
if(UserUserLogic::hasError()){
return $this->fail(UserUserLogic::getError());
}
}else{
if($find['user_ship']!=$params['user_ship'] && in_array($params['user_ship'],[2,3])){
UserUserLogic::checkAddress($params);
if(UserUserLogic::hasError()){
return $this->fail(UserUserLogic::getError());
}
}
$find['real_name']=$params['real_name'];
$find['label_id']=$params['label_id']??0;
@ -144,9 +135,6 @@ class StoreController extends BaseApiController
$order['pay_price']=$order['price'];
$order['attach']='recharge';
$result = PaymentLogic::codepay($auth_code, $order,'条码支付');
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError());
}
if (isset($result['trade_state_desc']) && $result['trade_state_desc'] == '支付成功') {
Cache::set('trade_state' . time(), json_encode($result));
PayNotifyLogic::handle('recharge', $result['out_trade_no'], $result);
@ -181,9 +169,6 @@ class StoreController extends BaseApiController
$order['pay_price']=$order['price'];
$order['attach']='recharge';
$result = PaymentLogic::codepay($auth_code, $order,'条码支付');
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError());
}
if (isset($result['trade_state_desc']) && $result['trade_state_desc'] == '支付成功') {
PayNotifyLogic::handle('recharge', $result['out_trade_no'], $result);
} else {

View File

@ -23,11 +23,8 @@ class AddressController extends BaseApiController
$params = (new UserAddressValidate())->post()->goCheck('add');
$params['uid'] = $this->request->userId;
$res=AddressLogic::add($params);
if(AddressLogic::hasError()){
return $this->fail(AddressLogic::getError());
}else{
return $this->success('添加成功');
}
return $this->success('添加成功');
}
/**
* 商户给用户添加地址
@ -62,9 +59,8 @@ class AddressController extends BaseApiController
$params['uid'] = $this->request->userId;
if(AddressLogic::edit($params)){
return $this->success('编辑成功');
}else{
return $this->fail(AddressLogic::getError());
}
return $this->fail('编辑失败');
}

View File

@ -42,9 +42,7 @@ class UserController extends BaseApiController
$params = (new UserValidate())->post()->goCheck('getMobileByMnp');
$params['user_id'] = $this->userId;
$result = UserLogic::getMobileByMnp($params);
if ($result === false) {
return $this->fail(UserLogic::getError());
}
if ($result && is_numeric($result)) {
$data = UserLogic::info($result);
$userInfo = UserTokenService::setToken($result, 1);
@ -104,9 +102,6 @@ class UserController extends BaseApiController
$order = UserLogic::recharge($params);
$redirectUrl = $params['redirect'] ?? '/pages/payment/payment';
$result = PaymentLogic::pay(PayEnum::WECHAT_PAY_MINI, 'recharge', $order, $this->userInfo['terminal'], $redirectUrl);
if (PaymentLogic::hasError()) {
return $this->fail(PaymentLogic::getError(), $params);
}
return $this->success('', $result);
}

View File

@ -30,6 +30,6 @@
if (true === $result) {
return $this->success('添加成功', [], 1, 1);
}
return $this->fail(UserFeedbackLogic::getError());
return $this->fail('添加失败');
}
}

View File

@ -30,8 +30,6 @@ class UserVisitController extends BaseApiController
if (true === $result) {
return $this->success('ok');
}
return $this->fail(UserVisitLogic::getError());
}
@ -54,7 +52,6 @@ class UserVisitController extends BaseApiController
if (true === $result) {
return $this->success('添加成功', [], 1, 1);
}
return $this->fail(UserVisitLogic::getError());
}

View File

@ -38,9 +38,6 @@ class UserProductStorageController extends BaseApiController
$store_id=$params['store_id'];
$times=$params['times'];
UserProductStorageLogic::supply($info,$uid,$store_id,0,$times);
if(UserProductStorageLogic::hasError()){
return $this->fail(UserProductStorageLogic::getError());
}
return $this->success('操作成功');
}
}

View File

@ -31,10 +31,7 @@ class UserShipController extends BaseApiController
public function is_user_ship(){
$data=$this->request->post();
UserShipLogic::user_ship($data);
if(UserShipLogic::hasError()){
return $this->fail(UserShipLogic::getError());
}else{
return $this->success('ok');
}
return $this->success('ok');
}
}

View File

@ -6,7 +6,7 @@ namespace app\api\lists\cate;
use app\admin\lists\BaseAdminDataLists;
use app\common\model\cate\Cate;
use app\common\lists\ListsSearchInterface;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_product\StoreProduct;
use app\Request;
use think\facade\Db;
@ -28,7 +28,7 @@ class CateLists extends BaseAdminDataLists implements ListsSearchInterface
public function setSearch(): array
{
return [
'=' => ['name', 'data', 'store_id', 'sort'],
'=' => ['name', 'data', 'sort'],
];
}
@ -45,19 +45,23 @@ class CateLists extends BaseAdminDataLists implements ListsSearchInterface
public function lists(): array
{
$level = Request()->get('level', 1);
$source = Request()->get('source');
$pid = $this->request->get('pid',0);
// $this->searchWhere[] = ['stock', '>', 0];
$this->searchWhere[] = ['status', '=', 1];
$this->searchWhere[] = ['is_show', '=', 1];
if($source && $source==4){
$this->searchWhere[] = ['product_type', '=', 5];
}
if($pid && $level ==2){
$this->searchWhere[] = ['top_cate_id','=',$pid];
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('two_cate_id');
}elseif($pid && $level ==3){
$this->searchWhere[] = ['two_cate_id','=',$pid];
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('cate_id');
}else{
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('top_cate_id');
}
$lists = [];
@ -85,14 +89,14 @@ class CateLists extends BaseAdminDataLists implements ListsSearchInterface
$pid = $this->request->get('pid',0);
if($pid && $level ==2){
$this->searchWhere[] = ['top_cate_id','=',$pid];
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('two_cate_id');
}elseif($pid && $level ==3){
$this->searchWhere[] = ['two_cate_id','=',$pid];
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('cate_id');
}else{
$cate_arr = StoreBranchProduct::where($this->searchWhere)->distinct()
$cate_arr = StoreProduct::where($this->searchWhere)->distinct()
->column('top_cate_id');
}
return Cate::where('id', 'in', $cate_arr)->count();

View File

@ -9,7 +9,7 @@ use app\common\model\order\Cart;
use app\common\lists\ListsExtendInterface;
use app\common\model\Config;
use app\common\model\dict\DictType;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_attr_value\StoreProductAttrValue;
use app\common\model\store_product_unit\StoreProductUnit;
use app\common\model\user\User;
@ -65,14 +65,14 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists
->toArray();
$off_activity = Config::where('name', 'off_activity')->value('value');
$user_ship = User::where('id', $userId)->value('user_ship');
$field = 'product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id';
$field = 'id,id product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id,batch';
if (in_array($user_ship, [4, 6, 7])) {
$field = 'product_id,image,cost price,cost,store_name,unit,delete_time,vip_price,top_cate_id';
$field = 'id,id product_id,image,cost price,cost,store_name,unit,delete_time,vip_price,top_cate_id,batch';
}
$this->user_ship = $user_ship;
$this->off_activity = $off_activity;
foreach ($list as $key => &$item) {
$find = StoreBranchProduct::where(['product_id' => $item['product_id'], 'store_id' => $item['store_id']])
$find = StoreProduct::where(['id' => $item['product_id']])
->field($field)
->find();
if ($find) {
@ -84,6 +84,7 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists
}
$item['goods_total_price'] = bcmul($item['cart_num'], $find['price'], 2);
$this->total_price = bcadd($this->total_price, $item['goods_total_price'], 2);
$item['batch'] = $find['batch'];
$item['imgs'] = $find['image'];
$item['price'] = $find['price'];
$item['cost'] = $find['cost'];

View File

@ -0,0 +1,109 @@
<?php
namespace app\api\lists\order;
use app\admin\lists\BaseAdminDataLists;
use app\common\lists\ListsSearchInterface;
use app\common\model\order\Cart;
use app\common\lists\ListsExtendInterface;
use app\common\model\Config;
use app\common\model\dict\DictType;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_attr_value\StoreProductAttrValue;
use app\common\model\store_product_unit\StoreProductUnit;
use app\common\model\user\User;
/**
* 购物车列表
* Class RetailOrderList
* @package app\api\order
*/
class CartWholesaleList extends BaseAdminDataLists implements ListsSearchInterface, ListsExtendInterface
{
protected $total_price = 0;
protected $activity_price = 0;
protected $off_activity = 0;
protected $user_ship = 0;
/**
* @notes 设置搜索条件
* @return \string[][]
* @author likeadmin
*/
public function setSearch(): array
{
return ['='=>['store_id','source']];
}
/**
* @notes 购物车列表
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @date 2024/04/27 11:26
*/
public function lists($where = []): array
{
$userId = $this->request->userId;
if (!$userId) return [];
$where = [
'uid' => $userId,
'is_pay' => 0
];
$list = Cart::where($this->searchWhere)->where($where)
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()
->toArray();
$field = 'id,id product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id,batch';
foreach ($list as $key => &$item) {
$find = StoreProduct::where(['id' => $item['product_id']])
->field($field)
->find();
if ($find) {
$item['goods_total_price'] = bcmul($item['cart_num'], $find['price'], 2);
$this->total_price = bcadd($this->total_price, $item['goods_total_price'], 2);
$item['batch'] = $find['batch'];
$item['imgs'] = $find['image'];
$item['price'] = $find['price'];
$item['cost'] = $find['cost'];
$item['goods_name'] = $find['store_name'];
$item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name');
}
}
return $list;
}
/**
* @notes 购物车数量
* @return int
* @date 2024/04/27 11:26
*/
public function count(): int
{
$userId = $this->request->userId;
if (!$userId) return 0;
$where = [
'uid' => $userId,
'is_pay' => 0
];
return Cart::where($this->searchWhere)->where($where)->count();
}
public function extend()
{
$data = [
'off_activity' => $this->off_activity,
'total_price' => $this->total_price,
'msg' => '',
'pay_price' => $this->total_price
];
return $data;
}
}

View File

@ -5,11 +5,8 @@ namespace app\api\lists\order;
use app\admin\lists\BaseAdminDataLists;
use app\common\lists\ListsSearchInterface;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit;
use Picqer\Barcode\BarcodeGeneratorPNG;
/**

View File

@ -6,11 +6,8 @@ namespace app\api\lists\product;
use app\api\lists\BaseApiDataLists;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSortInterface;
use app\common\model\dict\DictType;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_product\StoreProduct;
use app\common\lists\ListsSearchInterface;
use app\common\model\cate\Cate;
use app\common\model\Config;
use app\common\model\user\User;
//use app\common\model\goods\GoodsLabel;
@ -35,7 +32,7 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
public function setSearch(): array
{
return [
'=' => ['store_id', 'cate_id', 'top_cate_id', 'two_cate_id'],
'=' => [ 'cate_id', 'top_cate_id', 'two_cate_id'],
'%pipe_like%' => ['store_name' => 'store_name|bar_code'],
];
}
@ -58,7 +55,7 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
*/
public function setDefaultOrder(): array
{
return ['price' => 'asc', 'id' => 'desc'];
return ['sort'=>'desc','price' => 'asc', 'id' => 'desc'];
}
/**
@ -72,6 +69,17 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
*/
public function lists(): array
{
$store_name=$this->request->get('store_name');
if($store_name && $store_name!=''){
if (preg_match('/^1234-/',$store_name)) {
foreach($this->searchWhere as $k=>$v){
if($v[0]=='store_name|bar_code'){
unset($this->searchWhere[$k]);
$this->searchWhere[$k]=['bar_code','=',$store_name];
}
}
}
}
$order = $this->request->get('order', '');
$field = $this->request->get('field', '');
if (empty($order) || empty($field)) {
@ -79,7 +87,7 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
} else {
$order = [$field => $order];
}
$fields = 'id,product_id,top_cate_id,cate_id,store_name,cost,store_id,vip_price,purchase,price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$fields = 'id,id product_id,top_cate_id,cate_id,store_name,cost,vip_price,purchase,price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock,is_lack';
$off_activity = Config::where('name', 'off_activity')->value('value');
if ($off_activity == 1) {
$tag = '赠10%品牌礼品券';
@ -96,13 +104,13 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
if ($uid > 0) {
$user_ship = User::where('id', $uid)->value('user_ship');
if (in_array($user_ship, [4, 6, 7])) {
$fields = 'id,product_id,top_cate_id,cate_id,store_name,cost,store_id,vip_price,purchase,cost price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$fields = 'id,id product_id,top_cate_id,cate_id,store_name,cost,vip_price,purchase,cost price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock,is_lack';
}
}
$this->off_activity = $off_activity;
$this->searchWhere[] = ['status', '=', 1];
$this->searchWhere[] = ['is_show', '=', 1];
// $this->searchWhere[] = ['stock', '>', 0];
return StoreBranchProduct::where($this->searchWhere)
return StoreProduct::where($this->searchWhere)
->field($fields)
->with(['className', 'unitName'])
->limit($this->limitOffset, $this->limitLength)
@ -111,6 +119,9 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
if ($off_activity == 0 && $user_ship == 5 && $item['top_cate_id'] == 15189) {
$item['price'] = $item['cost'];
}
if($item['is_lack']==1){
$tag='缺货';
}
$item['tag'] = $tag;
return $item;
})
@ -126,7 +137,7 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
*/
public function count(): int
{
return StoreBranchProduct::where($this->searchWhere)
return StoreProduct::where($this->searchWhere)
->count();
}
public function extend()

View File

@ -0,0 +1,117 @@
<?php
namespace app\api\lists\product;
use app\api\lists\BaseApiDataLists;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSortInterface;
use app\common\model\store_product\StoreProduct;
use app\common\lists\ListsSearchInterface;
use app\common\model\Config;
use app\common\model\user\User;
//use app\common\model\goods\GoodsLabel;
use think\facade\Db;
/**
* 商品列表列表
* Class goods
* @package app\api\goods
*/
class ProductWholesaleLists extends BaseApiDataLists implements ListsSearchInterface, ListsSortInterface, ListsExtendInterface
{
protected $off_activity = 0;
protected $user_ship = 0;
/**
* @notes 设置搜索条件
* @return \string[][]
* @author likeadmin
* @date 2024/04/23 11:28
*/
public function setSearch(): array
{
return [
'=' => [ 'cate_id', 'top_cate_id', 'two_cate_id'],
'%pipe_like%' => ['store_name' => 'store_name|bar_code'],
];
}
/**
* @notes 设置支持排序字段
* @return string[]
* @date 2021/12/29 10:07
* @remark 格式: ['前端传过来的字段名' => '数据库中的字段名'];
*/
public function setSortFields(): array
{
return ['sell' => 'price', 'sales' => 'sales',];
}
/**
* @notes 设置默认排序
* @return string[]
* @date 2021/12/29 10:06
*/
public function setDefaultOrder(): array
{
return ['price' => 'asc', 'id' => 'desc'];
}
/**
* @notes 获取商品列表列表
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author likeadmin
* @date 2024/04/23 11:28
*/
public function lists(): array
{
$order = $this->request->get('order', '');
$field = $this->request->get('field', '');
if (empty($order) || empty($field)) {
$order = $this->sortOrder;
} else {
$order = [$field => $order];
}
$fields = 'id,id product_id,top_cate_id,cate_id,store_name,cost,vip_price,purchase,price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$this->searchWhere[] = ['is_show', '=', 1];
$this->searchWhere[] = ['product_type', '=', 5];
// $this->searchWhere[] = ['stock', '>', 0];
return StoreProduct::where($this->searchWhere)
->field($fields)
->with(['className', 'unitName'])
->limit($this->limitOffset, $this->limitLength)
->order($order)
->select()
->toArray();
}
/**
* @notes 获取商品列表数量
* @return int
* @author likeadmin
* @date 2024/04/23 11:28
*/
public function count(): int
{
return StoreProduct::where($this->searchWhere)
->count();
}
public function extend()
{
$price = 'price';
$op_price = 'price';
$data = [
'off_activity' => $this->off_activity,
'price' => $price,
'op_price' => $op_price,
];
return $data;
}
}

View File

@ -7,7 +7,6 @@ use app\api\lists\BaseApiDataLists;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSortInterface;
use app\common\model\dict\DictType;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_product\StoreProduct;
use app\common\lists\ListsSearchInterface;
use app\common\model\cate\Cate;
@ -72,22 +71,17 @@ class StoreProductLists extends BaseApiDataLists implements ListsSearchInterface
*/
public function lists(): array
{
$store_id= $this->request->__get('store_id');
if($store_id){
$this->searchWhere[] = ['store_id', '=', $store_id];
}
$fields = 'id,product_id,cate_id,store_name,cost,store_id,vip_price,purchase,price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$fields = 'id,id product_id,cate_id,store_name,cost,store_id,vip_price,purchase,price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$type=$this->request->get('type',0);
if($type==1){
$fields = 'id,product_id,cate_id,store_name,cost,store_id,vip_price,purchase,cost price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$fields = 'id,id product_id,cate_id,store_name,cost,store_id,vip_price,purchase,cost price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
}elseif($type==2){
$fields = 'id,product_id,cate_id,store_name,cost,store_id,vip_price,purchase,purchase price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
$fields = 'id,id product_id,cate_id,store_name,cost,store_id,vip_price,purchase,purchase price,bar_code,image,sales,store_info,delete_time,unit,batch,top_cate_id,two_cate_id,stock';
}
$this->searchWhere[] = ['status', '=', 1];
// $this->searchWhere[] = ['stock', '>', 0];
return StoreBranchProduct::where($this->searchWhere)
return StoreProduct::where($this->searchWhere)
->field($fields)
->with(['className', 'unitName'])
->limit($this->limitOffset, $this->limitLength)
@ -105,7 +99,7 @@ class StoreProductLists extends BaseApiDataLists implements ListsSearchInterface
*/
public function count(): int
{
return StoreBranchProduct::where($this->searchWhere)
return StoreProduct::where($this->searchWhere)
->count();
}
}

View File

@ -48,62 +48,76 @@ class SystemStoreLists extends BaseAdminDataLists implements ListsSearchInterfac
*/
public function lists(): array
{
$latitude = $this->request->get('latitude','');
$longitude = $this->request->get('longitude','');
$cart_id = $this->request->get('cart_id','');
// if(empty($longitude) || empty($latitude)){
// throw new Exception('缺失经纬度');
// }
$where[]=['is_show','=',YesNoEnum::YES];
$latitude = $this->request->get('latitude', '');
$longitude = $this->request->get('longitude', '');
$cart_id = $this->request->get('cart_id', '');
// if(empty($longitude) || empty($latitude)){
// throw new Exception('缺失经纬度');
// }
$where[] = ['is_show', '=', YesNoEnum::YES];
$data = SystemStore::where($this->searchWhere)->where($where)
->field(['id', 'name', 'phone', 'detailed_address', 'image', 'is_show',
'day_time','is_store','latitude','longitude','day_start','day_end','is_store'
,'is_send','abbreviation'
->field([
'id',
'name',
'phone',
'detailed_address',
'image',
'is_show',
'day_time',
'is_store',
'latitude',
'longitude',
'day_start',
'day_end',
'is_store',
'is_send',
'abbreviation'
])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()
->toArray();
if($cart_id){
if($latitude && $longitude){
$cart_id = explode(',',$cart_id);
$cart_select = Cart::whereIn('id', $cart_id)
->field('id,product_id,cart_num,store_id')->select()->toArray();
foreach ($cart_select as $v) {
foreach ($data as &$values){
$store = StoreBranchProduct::where([
'store_id'=>$values['id'],
'product_id'=>$v['product_id'],
])->field('id,store_name,stock')->withTrashed()->find();
if(empty($store)){
$store['stock'] =0;
}
$values['reservation'] = 0;
if($store['stock'] < $v['cart_num']){
$values['reservation'] = 1;
}
$values['distance'] = haversineDistance($values['latitude'],$values['longitude'],$latitude,$longitude);
}
if ($cart_id) {
if ($latitude && $longitude) {
foreach ($data as &$values) {
$values['distance'] = haversineDistance($values['latitude'], $values['longitude'], $latitude, $longitude);
$values['reservation'] = 1;
}
}else{
foreach ($data as &$values){
// $cart_id = explode(',',$cart_id);
// $cart_select = Cart::whereIn('id', $cart_id)
// ->field('id,product_id,cart_num,store_id')->select()->toArray();
// foreach ($cart_select as $v) {
// foreach ($data as &$values){
// $store = StoreBranchProduct::where([
// 'store_id'=>$values['id'],
// 'product_id'=>$v['product_id'],
// ])->field('id,store_name,stock')->withTrashed()->find();
// if(empty($store)){
// $store['stock'] =0;
// }
// $values['reservation'] = 0;
// if($store['stock'] < $v['cart_num']){
// }
// }
// }
} else {
foreach ($data as &$values) {
$values['distance'] = 0;
}
}
}else{
if($latitude && $longitude){
foreach ($data as &$value){
$value['distance'] = haversineDistance($value['latitude'],$value['longitude'],$latitude,$longitude);
} else {
if ($latitude && $longitude) {
foreach ($data as &$value) {
$value['distance'] = haversineDistance($value['latitude'], $value['longitude'], $latitude, $longitude);
}
}else{
foreach ($data as &$values){
} else {
foreach ($data as &$values) {
$values['distance'] = 0;
}
}
}
usort($data, function ($a, $b) {
@ -121,8 +135,7 @@ class SystemStoreLists extends BaseAdminDataLists implements ListsSearchInterfac
*/
public function count(): int
{
$where[]=['is_show','=',YesNoEnum::YES];
$where[] = ['is_show', '=', YesNoEnum::YES];
return SystemStore::where($this->searchWhere)->where($where)->count();
}
}
}

View File

@ -27,7 +27,7 @@ use app\common\service\{
};
use app\common\model\user\{User, UserAuth};
use app\common\service\wechat\WeChatMnpService;
use support\exception\BusinessException;
use Webman\Config;
/**
@ -63,8 +63,7 @@ class LoginLogic extends BaseLogic
return true;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -88,7 +87,7 @@ class LoginLogic extends BaseLogic
$user = User::where($where)->findOrEmpty();
if ($user->isEmpty()) {
throw new \Exception('用户不存在');
throw new BusinessException('用户不存在');
}
//更新登录信息
@ -121,8 +120,7 @@ class LoginLogic extends BaseLogic
'share_name' => $share_name.'No.'.preg_replace('/4/','*', $user['id']),
];
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -214,9 +212,8 @@ class LoginLogic extends BaseLogic
}
return $userInfo;
} catch (\Exception $e) {
self::$error = $e->getMessage();
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
}
@ -242,9 +239,8 @@ class LoginLogic extends BaseLogic
// Db::commit();
return $userInfo;
} catch (\Exception $e) {
throw new BusinessException($e->getMessage());
// Db::rollback();
self::$error = $e->getMessage();
return false;
}
}
@ -260,7 +256,7 @@ class LoginLogic extends BaseLogic
{
$user = User::findOrEmpty($userId);
if ($user->isEmpty()) {
throw new \Exception('用户不存在');
throw new BusinessException('用户不存在');
}
$time = time();
@ -348,7 +344,7 @@ class LoginLogic extends BaseLogic
//先检查openid是否有记录
$isAuth = UserAuth::where('openid', '=', $response['openid'])->findOrEmpty();
if (!$isAuth->isEmpty()) {
throw new \Exception('该微信已被绑定');
throw new BusinessException('该微信已被绑定');
}
if (isset($response['unionid']) && !empty($response['unionid'])) {
@ -356,7 +352,7 @@ class LoginLogic extends BaseLogic
$userAuth = UserAuth::where(['unionid' => $response['unionid']])
->findOrEmpty();
if (!$userAuth->isEmpty() && $userAuth->user_id != $response['user_id']) {
throw new \Exception('该微信已被绑定');
throw new BusinessException('该微信已被绑定');
}
}
@ -456,8 +452,7 @@ class LoginLogic extends BaseLogic
if($find){
$auth=UserAuth::where(['user_id'=>$find['id']])->find();//别人的
if($auth){
self::$error ='该手机号已绑定';
return false;
throw new BusinessException('该手机号已绑定');
}else{
UserAuth::where(['user_id'=>$userId])->update(['user_id'=>$find['id']]);
}

View File

@ -6,6 +6,7 @@ namespace app\api\logic\order;
use app\common\model\order\Cart;
use app\common\logic\BaseLogic;
use app\common\model\store_product_log\StoreProductLog;
use support\exception\BusinessException;
use think\facade\Db;
@ -27,10 +28,10 @@ class CartLogic extends BaseLogic
*/
public static function add(array $params)
{
if ($params['store_id'] <= 0) {
self::setError('门店ID不能为空');
return false;
if ($params['store_id'] < 0) {
throw new BusinessException('门店ID不能为空');
}
$source=$params['source'] ?? 0;
Db::startTrans();
try {
//check
@ -38,7 +39,8 @@ class CartLogic extends BaseLogic
'uid' => $params['uid'],
'store_id' => $params['store_id'],
'product_id' => $params['product_id'],
'is_pay' => 0
'is_pay' => 0,
'source' => $source,
])->field('id')->find();
if ($check) {
Cart::where('id', $check['id'])->inc('cart_num', $params['cart_num'])
@ -53,6 +55,7 @@ class CartLogic extends BaseLogic
'staff_id' => $params['staff_id'] ?? 0,
'cart_num' => $params['cart_num'],
'is_new' => $params['is_new'] ?? 0,
'source' =>$source,
]);
}
StoreProductLog::create([
@ -66,10 +69,9 @@ class CartLogic extends BaseLogic
]);
Db::commit();
return $cart;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -85,18 +87,24 @@ class CartLogic extends BaseLogic
{
Db::startTrans();
try {
Cart::where([
'uid' => $params['uid'],
'store_id' => $params['store_id'],
'product_id' => $params['product_id']
])
->update(['cart_num' => $params['cart_num']]);
if(isset($params['type']) && $params['type']=='inc'){
Cart::where([
'uid' => $params['uid'],
'store_id' => $params['store_id'],
'product_id' => $params['product_id']
])->inc('cart_num')->update();
}else{
Cart::where([
'uid' => $params['uid'],
'store_id' => $params['store_id'],
'product_id' => $params['product_id']
])->update(['cart_num' => $params['cart_num']]);
}
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -66,16 +66,17 @@ class OrderLogic extends BaseLogic
*/
static public function cartIdByOrderInfo($cartId, $addressId, $user = null, $params = [], $createOrder = 0)
{
if(empty($params['store_id']) || $params['store_id'] <= 0){
self::setError('请选择门店');
return false;
if (empty($params['store_id']) || $params['store_id'] <= 0) {
throw new BusinessException('请选择门店');
}
$source=0;
if (isset($params['source']) && $params['source'] >0) {
$source=$params['source'];
}
$where = ['is_pay' => 0];
$cart_select = Cart::whereIn('id', $cartId)->where($where)->field('id,product_id,cart_num')->select()->toArray();
$cart_select = Cart::whereIn('id', $cartId)->where($where)->field('id,product_id,cart_num,source')->select()->toArray();
if (empty($cart_select)) {
self::setError('购物车为空');
return false;
throw new BusinessException('购物车为空');
}
try {
self::$total_price = 0;
@ -89,18 +90,21 @@ class OrderLogic extends BaseLogic
self::$fresh_price = 0; //生鲜金额
/** 计算价格 */
$off_activity = Config::where('name', 'off_activity')->value('value');
$field = 'product_id id,store_name,image,unit,price,vip_price,cost,purchase,cate_id,store_info,rose';
$field = 'id,store_name,image,unit,price,vip_price,cost,purchase,cate_id,store_info,rose';
foreach ($cart_select as $k => $v) {
$find = StoreBranchProduct::where(['product_id' => $v['product_id'],'store_id'=>$params['store_id']])->field($field)->find();
if ($source == 2) {
$field = 'product_id,product_id id,store_name,image,unit,price,vip_price,cost,purchase,cate_id,store_info,rose';
$find = StoreBranchProduct::where(['product_id' => $v['product_id'], 'store_id' => $params['store_id']])->field($field)->find();
} else {
$find = StoreProduct::where(['id' => $v['product_id']])->field($field)->find();
}
if (!$find) {
self::setError('商品不存在');
return false;
throw new BusinessException('商品不存在');
}
if (convertNumber($v['cart_num']) == false) {
$is_bulk = StoreProductUnit::where('id', $find['unit'])->value('is_bulk');
if ($is_bulk == 0) {
self::setError('非计量商品,不能有小数,请编辑购物车');
return false;
throw new BusinessException('非计量商品,不能有小数,请编辑购物车');
}
}
$StoreCategory = StoreCategory::where('id', $find['cate_id'])->find();
@ -115,21 +119,26 @@ class OrderLogic extends BaseLogic
}
unset($cart_select[$k]['id']);
$cart_select[$k]['total_price'] = bcmul($v['cart_num'], $find['price'], 2); //订单总价
if ($off_activity == 1 || ($user != null && in_array($user['user_ship'], [4, 6, 7]))) {
$price = $find['cost'];
} else {
$price = $find['price'];
//单门店活动判断
if ($params['store_id'] == getenv('ACTIVITY_STORE_ID')) {
$storeBranchPrice = StoreBranchProduct::where('store_id', getenv('ACTIVITY_STORE_ID'))->where('product_id', $v['product_id'])->value('price');
if ($storeBranchPrice) {
$price = $storeBranchPrice;
if ($v['source'] != 4) {
if ($off_activity == 1 || ($user != null && in_array($user['user_ship'], [4, 6, 7]))) {
$price = $find['cost'];
} else {
$price = $find['price'];
//单门店活动判断
if ($params['store_id'] == getenv('ACTIVITY_STORE_ID')) {
$storeBranchPrice = StoreBranchProduct::where('store_id', getenv('ACTIVITY_STORE_ID'))->where('product_id', $v['product_id'])->value('price');
if ($storeBranchPrice) {
$price = $storeBranchPrice;
}
}
}
if ($off_activity == 0 && $find['top_cate_id'] == 15189 && $user && $user['user_ship'] == 5) {
$price = $find['cost'];
}
} else {
$price = $find['price'];
}
if ($off_activity == 0 && $find['top_cate_id'] == 15189 && $user && $user['user_ship'] == 5) {
$price = $find['cost'];
}
$cart_select[$k]['price'] = $price;
$cart_select[$k]['cost'] = $find['cost'];
$cart_select[$k]['vip'] = 0;
@ -172,6 +181,7 @@ class OrderLogic extends BaseLogic
$cart_select[$k]['imgs'] = $find['image'];
$cart_select[$k]['store_id'] = $params['store_id'] ?? 0;
$cart_select[$k]['unit_name'] = StoreProductUnit::where(['id' => $find['unit']])->value('name');
$cart_select[$k]['total_price'] = $cart_select[$k]['pay_price'];
self::$total_price = bcadd(self::$total_price, $cart_select[$k]['total_price'], 2);
self::$pay_price = bcadd(self::$pay_price, $cart_select[$k]['pay_price'], 2);
self::$cost = bcadd(self::$cost, $cart_select[$k]['purchase'], 2);
@ -193,12 +203,11 @@ class OrderLogic extends BaseLogic
$pay_price = self::$pay_price; // bcsub(self::$pay_price, self::$activity_price, 2); //减去活动优惠金额
//判断生鲜是否大于200
if ($createOrder == 1 && self::$fresh_price > 0) {
if (self::$pay_price < 200) {
self::setError('订单包含生鲜产品订单金额必须大于200元才能下单');
return false;
}
}
// if ($createOrder == 1 && self::$fresh_price > 0 &&$source!=2) {
// if (self::$pay_price < 200) {
// throw new BusinessException('订单包含生鲜产品订单金额必须大于200元才能下单');
// }
// }
if (isset($params['store_id']) && $params['store_id'] == getenv('ACTIVITY_STORE_ID')) {
$off_activity = 1;
}
@ -222,7 +231,7 @@ class OrderLogic extends BaseLogic
'activities' => $off_activity,
'deduction_price' => self::$deduction_price, //抵扣金额
'frozen_money' => 0, //self::$frozen_money, //返还金额(活动关闭得时候有)
'source' => 0,
'source' => $source,
'is_storage' => $params['is_storage'] ?? 0,
'address_id' => 0,
];
@ -230,9 +239,6 @@ class OrderLogic extends BaseLogic
if ($params['store_id']) {
$order['default_delivery'] = SystemStore::where('id', $params['store_id'])->value('is_send');
}
if (isset($params['source']) && $params['source'] > 0) {
$order['source'] = $params['source'];
}
if (isset($params['store_id']) && $params['store_id'] > 0) {
$store_id = $params['store_id'];
@ -256,10 +262,8 @@ class OrderLogic extends BaseLogic
$currentDate = date('Y-m-d');
$alert = '当前时间超过配送截止时间16:00,若下单,物品送达时间为' . date('Y-m-d', strtotime($currentDate . '+2 days'));
}
} catch (\Exception $e) {
d($e);
self::setError($e->getMessage());
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store'], 'alert' => $alert];
}
@ -276,17 +280,10 @@ class OrderLogic extends BaseLogic
$params['order_id'] = $order_id;
$params['verify_code'] = $verify_code;
$orderInfo = self::cartIdByOrderInfo($cartId, $addressId, $user, $params, 1);
if ($orderInfo == false) {
self::setError(self::getError());
return false;
}
if (!$orderInfo) {
return false;
}
$uid = $user['id'] ?? 0;
$_order = $orderInfo['order'];
if ($_order['pay_price'] == 0) {
throw new \Exception('支付金额不能为0');
throw new BusinessException('支付金额不能为0');
}
$_order['uid'] = $uid;
$_order['spread_uid'] = $params['spread_uid'] ?? 0;
@ -305,8 +302,6 @@ class OrderLogic extends BaseLogic
if ($uid > 0) {
$address = UserAddress::where(['uid' => $uid])->find();
if ($address) {
$_order['real_name'] = $address['real_name'];
$_order['user_phone'] = $address['phone'];
if ($address['area']) {
$_order['user_address'] = Db::name('geo_area')->where('area_code', $address['area'])->value('area_name') ?? '';
}
@ -327,7 +322,7 @@ class OrderLogic extends BaseLogic
$_order['status'] = 1;
}
if ($_order['pay_type'] == PayEnum::BALANCE_PAY && $user != null && $user['now_money'] < $_order['pay_price']) {
throw new \Exception('余额不足');
throw new BusinessException('余额不足');
}
//生成核销码
// $generator = new BarcodeGeneratorPNG();
@ -341,7 +336,7 @@ class OrderLogic extends BaseLogic
$order = StoreOrder::create($_order);
$goods_list = $orderInfo['cart_list'];
foreach ($goods_list as $k => $v) {
$goods_list[$k]['oid'] = $order->id;
$goods_list[$k]['uid'] = $uid;
@ -356,8 +351,7 @@ class OrderLogic extends BaseLogic
return $order;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -378,8 +372,7 @@ class OrderLogic extends BaseLogic
$cart_select = Cart::whereIn('id', $params['cart_id'])
->where($where)->field('id,product_id,cart_num,store_id')->select()->toArray();
if (empty($cart_select)) {
self::setError('购物车为空');
return false;
throw new BusinessException('购物车为空');
}
$newArr = [];
//检查购物车对比店铺得商品数量差异
@ -447,12 +440,11 @@ class OrderLogic extends BaseLogic
// 提交事务
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
// 回滚事务
Db::rollback();
Log::error('支付失败' . $e->getMessage() . '。like:' . $e->getLine());
self::setError('支付失败' . $e->getMessage());
return false;
throw new BusinessException('支付失败' . $e->getMessage());
}
}
@ -467,11 +459,10 @@ class OrderLogic extends BaseLogic
return [];
}
$goods_arr = array_unique($goods_id);
$select = StoreBranchProduct::where('product_id', 'in', $goods_arr)->with('unitName')->field('id,store_name,price,image,unit')->select();
$select = StoreProduct::where('id', 'in', $goods_arr)->with('unitName')->field('id,store_name,price,image,unit')->select();
return $select->toArray();
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
}
@ -487,9 +478,6 @@ class OrderLogic extends BaseLogic
$data[$k]['store_id'] = $v['store_id'];
$data[$k]['staff_id'] = $v['staff_id'];
$data[$k]['combination_id'] = 0;
$data[$k]['seckill_id'] = 0;
$data[$k]['bargain_id'] = 0;
$data[$k]['discount_id'] = 0;
$data[$k]['status'] = 1;
$data[$k]['staff_id'] = 0;
$data[$k]['is_new'] = 0;
@ -511,10 +499,8 @@ class OrderLogic extends BaseLogic
$find['goods_list'] = StoreOrderCartInfo::where('oid', $find['id'])
->field('product_id,cart_num nums,store_id')->select()->each(function ($item) use ($find) {
$find = StoreBranchProduct::where('product_id', $item['product_id'])->where('store_id', $find['store_id'])->find();
if (empty($find)) {
$find = StoreProduct::where('id', $item['product_id'])->withTrashed()->find();
}
$find = StoreProduct::where('id', $item['product_id'])->withTrashed()->find();
$item['store_name'] = $find['store_name'];
$item['nums'] = floatval($item['nums']);
$item['image'] = $find['image'];
@ -584,8 +570,7 @@ class OrderLogic extends BaseLogic
'verify_code' => $params['verify_code']
])->find();
if (empty($order)) {
self::setError('订单不存在');
return false;
throw new BusinessException('订单不存在');
}
Db::startTrans();
try {
@ -631,10 +616,9 @@ class OrderLogic extends BaseLogic
}
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -643,7 +627,7 @@ class OrderLogic extends BaseLogic
{
$store_id = SystemStoreStaff::where('phone', $info['mobile'])->value('store_id');
if (empty($store_id)) {
throw new \Exception('该用户未绑定店铺请查看');
throw new BusinessException('该用户未绑定店铺请查看');
}
$query = StoreOrderCartInfo::alias('o')
->leftJoin('store_branch_product p', 'p.id = o.product_id')
@ -693,7 +677,7 @@ class OrderLogic extends BaseLogic
$store_id = SystemStoreStaff::where('phone', $info['mobile'])->value('store_id');
if (empty($store_id)) {
throw new \Exception('该用户未绑定店铺请查看');
throw new BusinessException('该用户未绑定店铺请查看');
}
//先查商品相似
@ -785,7 +769,7 @@ class OrderLogic extends BaseLogic
self::dealChangeCartInfo($refundOrder);
// d($leftOrder,$refundOrder);
Db::commit();
} catch (\Exception $e) {
} catch (\Throwable $e) {
// 回滚事务
Db::rollback();
throw new BusinessException($e->getMessage());

View File

@ -4,6 +4,7 @@ namespace app\api\logic\user;
use app\common\logic\BaseLogic;
use app\common\model\user\UserAddress;
use support\exception\BusinessException;
use think\facade\Db;
/**
@ -48,10 +49,9 @@ class AddressLogic extends BaseLogic
]);
Db::commit();
return $id;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -95,10 +95,9 @@ class AddressLogic extends BaseLogic
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}

View File

@ -4,7 +4,8 @@
use app\common\logic\BaseLogic;
use app\common\model\user\UserFeedback;
use think\facade\Db;
use support\exception\BusinessException;
use think\facade\Db;
class UserFeedbackLogic extends BaseLogic
{
@ -29,10 +30,10 @@
]);
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
}

View File

@ -24,6 +24,7 @@ use app\common\{logic\BaseLogic,
use app\common\logic\UserSignLogic;
use app\common\model\user_label\UserLabel;
use support\Cache;
use support\exception\BusinessException;
use think\facade\Db;
@ -49,7 +50,7 @@ class UserLogic extends BaseLogic
$response = (new WeChatMnpService())->getUserPhoneNumber($params['code']);
$phoneNumber = $response['phone_info']['purePhoneNumber'] ?? '';
if (empty($phoneNumber)) {
throw new \Exception('获取手机号码失败');
throw new BusinessException('获取手机号码失败');
}
$user = User::where([
@ -75,9 +76,8 @@ class UserLogic extends BaseLogic
]);
return true;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
} catch (\Throwable $e) {
throw new BusinessException($e->getMessage());
}
}
@ -211,7 +211,7 @@ class UserLogic extends BaseLogic
$code = generateRandomCode();
$phone = User::where('id',$uid)->value('mobile');
if(empty($phone)){
throw new \Exception('用户未设置手机号');
throw new BusinessException('用户未设置手机号');
}
$template = getenv('SMS_TEMPLATE');
$check =(new SmsService())->client($phone,$template,$code);

View File

@ -5,7 +5,8 @@
use app\common\logic\BaseLogic;
use app\common\model\store_visit\StoreVisit;
use app\common\model\user\UserVisit;
use think\facade\Db;
use support\Log;
use think\facade\Db;
class UserVisitLogic extends BaseLogic
{
@ -39,10 +40,9 @@
}
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
Log::error('添加商品浏览失败:'.$e->getMessage());
}
}
@ -70,10 +70,9 @@
}
Db::commit();
return true;
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
Log::error('添加用户访问失败:'.$e->getMessage());
}

View File

@ -13,6 +13,7 @@ use app\common\service\sms\SmsDriver;
use app\common\validate\BaseValidate;
use app\common\model\user\User;
use support\Cache;
use support\exception\BusinessException;
use think\Exception;
use Webman\Config;
/**
@ -92,7 +93,7 @@ class LoginAccountValidate extends BaseValidate
//账号安全机制,连续输错后锁定,防止账号密码暴力破解
$userAccountSafeCache = new UserAccountSafeCache();
if (!$userAccountSafeCache->isSafe()) {
return '密码连续' . $userAccountSafeCache->count . '次输入错误,请' . $userAccountSafeCache->minute . '分钟后重试';
throw new BusinessException( '密码连续' . $userAccountSafeCache->count . '次输入错误,请' . $userAccountSafeCache->minute . '分钟后重试');
}
$where = [];
@ -106,22 +107,22 @@ class LoginAccountValidate extends BaseValidate
->findOrEmpty();
if ($userInfo->isEmpty()) {
return '用户不存在';
throw new BusinessException( '用户不存在');
}
if ($userInfo['is_disable'] === YesNoEnum::YES) {
return '用户已禁用';
throw new BusinessException( '用户已禁用');
}
if (empty($userInfo['password'])) {
$userAccountSafeCache->record();
return '用户不存在';
throw new BusinessException( '用户不存在');
}
$passwordSalt = Config::get('project.unique_identification');
if ($userInfo['password'] !== create_password($password, $passwordSalt)) {
$userAccountSafeCache->record();
return '密码错误';
throw new BusinessException( '密码错误');
}
$userAccountSafeCache->relieve();
@ -147,10 +148,10 @@ class LoginAccountValidate extends BaseValidate
}
$code = Cache::get($remark);
if(empty($code)){
return '验证码不存在';
throw new BusinessException( '验证码不存在');
}
if (isset($data['code']) && $code != $data['code']) {
return '验证码错误';
throw new BusinessException( '验证码错误');
}
return true;

View File

@ -100,7 +100,7 @@ class CapitalFlowLogic extends BaseLogic
* @param $mark
* @return mixed
*/
public function storeIncome($category, $linkType, $linkId, $amount, $mark = '')
public function storeIncome($category, $linkType, $linkId, $amount, $mark = '',$key='')
{
$model = new CapitalFlow();
$model->store_id = $this->store['id'];
@ -108,8 +108,8 @@ class CapitalFlowLogic extends BaseLogic
$model->link_type = $linkType;
$model->link_id = $linkId;
$model->amount = $amount;
$model->before_balance = $this->store['balance'];
$model->balance = bcadd($this->store['balance'], $amount, 2);
$model->before_balance = $this->store[$key]??0;
$model->balance = bcadd($this->store[$key]??0, $amount, 2);
$model->create_time = date('Y-m-d H:i:s');
$model->type = 'in';
$model->title = $this->getTitle($category, $amount);
@ -129,7 +129,7 @@ class CapitalFlowLogic extends BaseLogic
* @param $mark
* @return mixed
*/
public function storeExpense($category, $linkType, $linkId, $amount, $mark = '')
public function storeExpense($category, $linkType, $linkId, $amount, $mark = '',$key='')
{
$model = new CapitalFlow();
$model->store_id = $this->store['store_id'];
@ -138,8 +138,8 @@ class CapitalFlowLogic extends BaseLogic
$model->link_type = $linkType;
$model->link_id = $linkId;
$model->amount = $amount;
$model->before_balance = $this->store['balance'];
$model->balance = bcsub($this->store['balance'], $amount, 2);
$model->before_balance = $this->store[$key]??0;
$model->balance = bcsub($this->store[$key], $amount, 2);
$model->create_time = date('Y-m-d H:i:s');
$model->type = 'out';
$model->title = $this->getTitle($category, $amount);
@ -166,6 +166,7 @@ class CapitalFlowLogic extends BaseLogic
case 'store_order_refund':
return "店铺订单退款{$amount}";
case 'store_margin_refund':
case 'store_paid_deposit_refund':
return "店铺退还保证金{$amount}";
case 'user_order_promotion':
return "订单推广佣金{$amount}";
@ -181,6 +182,12 @@ class CapitalFlowLogic extends BaseLogic
return "用户减少{$amount}";
case 'user_withdrawal':
return "用户提现{$amount}";
case 'now_money_refund':
return "订单退回到余额{$amount}";
case 'purchase_refund':
return "订单退回到采购款{$amount}";
case 'store_paid_deposit_add':
return "门店增加保证金{$amount}";
default:
return "订单支付{$amount}";
}

View File

@ -7,7 +7,9 @@ use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_finance_flow_product\StoreFinanceFlowProduct;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\user\User;
use PDO;
use support\Log;
/**
* 产品佣金计算
@ -21,20 +23,26 @@ class CommissionProductLogic extends BaseLogic
*/
function calculate_product_flow($find, $order, $village_uid = 0, $brigade_uid = 0, $user_ship = 0, $spread_user_ship = 0)
{
$product = StoreBranchProduct::where('id', $find['product_id'])->where('store_id', $order['store_id'])->find();
if (!$product) {
$product = StoreProduct::where('id', $find['product_id'])->find();
}
$product = StoreProduct::where('id', $find['product_id'])->find();
if ($product) {
if ($user_ship == 5) {
$top_cate_id = StoreBranchProduct::where('product_id', $find['product_id'])->value('top_cate_id');
if ($top_cate_id == 15189) {
$this->b($find, $order, $product);
return true;
}
if ($product['product_type'] == 4) {
$this->c($find, $order, $village_uid, $brigade_uid, $user_ship, $product);
return true;
} else {
$this->a($find, $order, $village_uid, $brigade_uid, $user_ship, $product);
if ($user_ship == 5) {
$top_cate_id = $product['top_cate_id'];
if ($top_cate_id == 15189) {
$this->b($find, $order, $product, $user_ship);
return true;
}
} elseif ($user_ship == 0) {
$this->b($find, $order, $product, $user_ship);
return true;
} else {
$this->a($find, $order, $village_uid, $brigade_uid, $user_ship, $product);
}
}
return true;
}
}
@ -44,82 +52,273 @@ class CommissionProductLogic extends BaseLogic
*/
public function a($find, $order, $village_uid, $brigade_uid, $user_ship, $product)
{
// $rose = bcdiv($product['rose'], 100, 2);
$total_price = bcmul($product['price'], $find['cart_num']);
// $Distribution = Distribution::where('rate', $rose)->find();
//门店
$data[] = [
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'number' => bcmul($total_price, 0.05, 2),
'oid' => $order['id'],
'type' => 1,
'status' => 1,
];
//平台
$data[] = [
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'number' => bcmul($total_price, 0.02, 2),
'oid' => $order['id'],
'type' => 2,
'status' => 1,
];
//村长
$data[] = [
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $village_uid,
'number' => bcmul($total_price, 0.01, 2),
'oid' => $order['id'],
'type' => 3,
'status' => 1,
];
$total_price = bcmul($product['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['purchase'];
$brigade_number = bcmul($purchase_price, 0.02, 2); //队长
$village_number = bcmul($brigade_number, 0.1, 2); //村长
$platform_number = bcmul($purchase_price, 0.02, 2); //平台
$attrition_number = bcmul($purchase_price, 0.01, 2); //损耗
$number1 = bcadd($brigade_number, $village_number, 2);
$number2 = bcadd($number1, $platform_number, 2);
//零售-供货价
$number3 = bcsub($total_price, $purchase_price, 2);
$number4 = bcadd($attrition_number, $number2, 2);
//会员
$uid = 0;
if ($order['spread_uid'] > 0) {
$uid = $order['spread_uid'];
}
if ($order['uid'] > 0) {
$uid = $order['uid'];
}
$user = User::where('id', $uid)->find();
$delete_time=null;
$nickname='会员';
if ($user) {
$moeny = bcsub($user['total_recharge_amount'], $user['purchase_funds'], 2);
if ($moeny < $user['first_purchase_funds']) {
$delete_time=1;
$nickname='首充没用完,会员不分配';
}
}
if (in_array($user_ship, [2, 3])) {
$vip_number = bcmul($purchase_price, 0.05, 2); //会员利润
$data[] = [
'nickname' => $nickname,
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'price' => $price,
'other_uid' => $uid,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.05,
'number' => $vip_number,
'oid' => $order['id'],
'type' => 0,
'status' => 1,
'delete_time'=>$delete_time
];
$number4 = bcadd($number4, $vip_number, 2);
} else {
$vip_number = bcmul($purchase_price, 0.07, 2); //会员利润
$data[] = [
'nickname' => $nickname,
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $uid,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.07,
'number' => $vip_number,
'oid' => $order['id'],
'type' => 0,
'status' => 1,
'delete_time'=>$delete_time
];
$number4 = bcadd($number4, $vip_number, 2);
}
//门店利润
if ($number3 <= 0) {
$store_number = 0;
} else {
$store_number = bcsub($number3, $number4, 2);
}
//队长
$data[] = [
'nickname' => '零售队长',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $brigade_uid,
'number' => bcmul($total_price, 0.01, 2),
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $brigade_number,
'oid' => $order['id'],
'type' => 4,
'status' => 1,
'is_activity' => 1,
];
//会员
if ($user_ship == 1) {
$uid = $order['spread_uid'];
} else {
$uid = 0;
}
// $data[] = [
// 'store_id' => $order['store_id'],
// 'product_id' => $find['product_id'],
// 'other_uid' => $uid,
// 'number' => bcmul($total_price, $Distribution['user'], 2),
// 'oid' => $order['id'],
// 'type' => 0,
// 'status' => 1,
// ];
//个人店铺
if ($order['spread_uid'] > 0) {
$data[] = [
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $order['spread_uid'],
'number' => bcmul($total_price, 0.07, 2),
'oid' => $order['id'],
'type' => 5,
'status' => 1,
];
}
//村长
$data[] = [
'nickname' => '零售村长',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'number' => bcmul($total_price, 0.01, 2),
'price' => $price,
'total_price' => $brigade_number,
'cart_num' => 0,
'rate' => 0.01,
'number' => $village_number,
'oid' => $order['id'],
'type' => 3,
'status' => 1,
'is_activity' => 1,
];
//门店
$data[] = [
'nickname' => '零售门店',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $total_price,
'cart_num' => $find['cart_num'],
'rate' => 0,
'number' => $store_number,
'oid' => $order['id'],
'type' => 1,
'status' => 1,
'is_activity' => 1,
];
//平台
$data[] = [
'nickname' => '零售平台',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $platform_number,
'oid' => $order['id'],
'type' => 2,
'status' => 1,
'is_activity' => 1,
];
$data[] = [
'nickname' => '零售消耗',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.01,
'number' => $attrition_number,
'oid' => $order['id'],
'type' => 6,
'status' => 1,
];
(new StoreFinanceFlowProduct())->saveAll($data);
}
/**
* 商户价结算
*/
public function b($find, $order, $product, $user_ship)
{
$total_price = bcmul($product['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['purchase'];
$brigade_number = bcmul($purchase_price, 0.02, 2); //队长
$village_number = bcmul($brigade_number, 0.1, 2); //村长
$platform_number = bcmul($purchase_price, 0.02, 2); //平台
$attrition_number = bcmul($purchase_price, 0.01, 2); //损耗
$number1 = bcadd($brigade_number, $village_number, 2);
$number2 = bcadd($number1, $platform_number, 2);
//零售-供货价
$number3 = bcsub($total_price, $purchase_price, 2);
$number4 = bcadd($attrition_number, $number2, 2);
//门店利润
if ($number3 <= 0) {
$store_number = 0;
} else {
$store_number = bcsub($number3, $number4, 2);
}
//队长
$data[] = [
'nickname' => '商户价队长预留',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $brigade_number,
'oid' => $order['id'],
'type' => 4,
'status' => 1,
'is_activity' => 1,
];
//村长
$data[] = [
'nickname' => '商户价村长预留',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $brigade_number,
'cart_num' => 0,
'rate' => 0.01,
'number' => $village_number,
'oid' => $order['id'],
'type' => 3,
'status' => 1,
'is_activity' => 1,
];
//门店
$data[] = [
'nickname' => '商户价门店',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $total_price,
'cart_num' => $find['cart_num'],
'rate' => 0,
'number' => $store_number,
'oid' => $order['id'],
'type' => 1,
'status' => 1,
'is_activity' => 1,
];
//平台
$data[] = [
'nickname' => '商户价平台',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $platform_number,
'oid' => $order['id'],
'type' => 2,
'status' => 1,
'is_activity' => 1,
];
$data[] = [
'nickname' => '商户价消耗',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'price' => $price,
'total_price' => $purchase_price,
'cart_num' => $find['cart_num'],
'rate' => 0.01,
'number' => $attrition_number,
'oid' => $order['id'],
'type' => 6,
'status' => 1,
@ -127,32 +326,93 @@ class CommissionProductLogic extends BaseLogic
(new StoreFinanceFlowProduct())->saveAll($data);
}
/**
* 商户价结算
*/
public function b($find, $order, $product)
//活动商品结算
public function c($find, $order, $village_uid, $brigade_uid, $user_ship, $product)
{
// $rose = bcdiv($product['rose'], 100, 2);
$total_price = bcmul($product['purchase'], $find['cart_num']);
$total_price = bcmul($product['price'], $find['cart_num'], 2);
$purchase_price = bcmul($product['purchase'], $find['cart_num'], 2);
$price = $product['price'];
$brigade_number = bcmul($total_price, 0.02, 2); //队长
$village_number = bcmul($brigade_number, 0.1, 2); //村长
$platform_number = bcmul($total_price, 0.02, 2); //平台
$number1 = bcadd($brigade_number, $village_number, 2);
$number2 = bcadd($number1, $platform_number, 2);
//零售-供货价
$number3 = bcsub($total_price, $purchase_price, 2);
//门店利润
if ($number3 <= 0) {
$store_number = 0;
} else {
$store_number = bcsub($number3, $number2, 2);
}
//队长
$data[] = [
'nickname' => '活动队长',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $brigade_uid,
'price' => $price,
'total_price' => $total_price,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $brigade_number,
'oid' => $order['id'],
'type' => 4,
'status' => 1,
'is_activity' => 1,
];
//村长
$data[] = [
'nickname' => '活动村长',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => $village_uid,
'price' => $price,
'total_price' => $brigade_number,
'cart_num' => 0,
'rate' => 0.01,
'number' => $village_number,
'oid' => $order['id'],
'type' => 3,
'status' => 1,
'is_activity' => 1,
];
//门店
$data[] = [
'nickname' => '活动门店',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'number' => bcmul($total_price, 0.05, 2),
'price' => $price,
'total_price' => $store_number,
'cart_num' => $find['cart_num'],
'rate' => 0,
'number' => $store_number,
'oid' => $order['id'],
'type' => 1,
'status' => 1,
'is_activity' => 1,
];
//平台
$data[] = [
'nickname' => '活动平台',
'store_id' => $order['store_id'],
'product_id' => $find['product_id'],
'other_uid' => 0,
'number' => bcmul($total_price, 0.02, 2),
'price' => $price,
'total_price' => $platform_number,
'cart_num' => $find['cart_num'],
'rate' => 0.02,
'number' => $platform_number,
'oid' => $order['id'],
'type' => 2,
'status' => 1,
'is_activity' => 1,
];
(new StoreFinanceFlowProduct())->saveAll($data);
}

View File

@ -106,7 +106,7 @@ class CommissionnLogic extends BaseLogic
$financeLogic = new StoreFinanceFlowLogic();
$financeLogic->order = $order;
$financeLogic->user['uid'] = $order['uid'];
$pay_price = $order['pay_price'];
$pay_price=bcsub($order['pay_price'],$order['refund_price'],2);
$number = StoreFinanceFlowProduct::where('oid', $order['id'])->sum('number');
$fees = bcsub($pay_price, $number, 2);
if ($fees > 0) {
@ -124,7 +124,7 @@ class CommissionnLogic extends BaseLogic
$financeLogic->user['uid'] = $order['uid'];
$financeLogic->other_arr['vip_uid'] = $uid;
$financeLogic->order = $order;
$financeLogic->in($transaction_id, $order['pay_price'], OrderEnum::USER_ORDER_PAY, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //用户订单支付
$financeLogic->in($transaction_id, bcsub($order['pay_price'],$order['refund_price'],2), OrderEnum::USER_ORDER_PAY, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //用户订单支付
//缴纳齐全了就加商户没有就加到平台
$money_limt = SystemStore::where('id', $order['store_id'])->field('paid_deposit,security_deposit')->find();

View File

@ -2,6 +2,7 @@
namespace app\common\logic;
use app\admin\logic\store_product\StoreProductLogic;
use app\admin\logic\user_ship\UserShipLogic;
use app\api\logic\order\OrderLogic;
use app\common\enum\OrderEnum;
@ -30,6 +31,7 @@ use app\common\model\user_sign\UserSign;
use app\common\model\vip_flow\VipFlow;
use app\common\service\Curl;
use app\common\service\PushService;
use support\exception\BusinessException;
use support\Log;
use think\facade\Db;
use Webman\RedisQueue\Redis;
@ -52,7 +54,7 @@ class PayNotifyLogic extends BaseLogic
} catch (\Exception $e) {
Db::rollback();
Log::error('支付回调处理失败' . $e->getMessage() . ',lien:' . $e->getLine() . ',file:' . $e->getFile());
throw new \Exception($e->getMessage());
throw new BusinessException($e->getMessage());
}
}
@ -70,13 +72,14 @@ class PayNotifyLogic extends BaseLogic
$order = StoreOrder::where('order_id', $orderSn)->findOrEmpty();
$user = User::where('id', $order['uid'])->find();
if ($user['now_money'] < $order['pay_price']) {
throw new \Exception('余额不足');
throw new BusinessException('余额不足');
}
// $order->money = $order['pay_price'];
$order->paid = 1;
$order->status = 1;
$order->pay_time = time();
if (!$order->save()) {
throw new \Exception('订单保存出错');
throw new BusinessException('订单保存出错');
}
if ($order['is_storage'] == 1) {
$order->status = 2;
@ -95,7 +98,7 @@ class PayNotifyLogic extends BaseLogic
// self::addUserSing($order);
$capitalFlowDao = new CapitalFlowLogic($user);
$capitalFlowDao->userExpense('user_order_balance_pay', 'order', $order['id'], $order['pay_price'], '', 3, $order['store_id']);
self::dealProductLog($order);
// self::dealProductLog($order);
self::afterPay($order);
if ($order['reservation'] == 1 && in_array($order['shipping_type'], [1, 2])) {
@ -105,14 +108,14 @@ class PayNotifyLogic extends BaseLogic
];
self::dealGoodsLeft($checkArr, $order['uid'], $order['id']);
}
if ($order && $order['store_id'] && $order['reservation'] != 1 && $order['source'] == 1) {
$params = [
'verify_code' => $order['verify_code'],
'store_id' => $order['store_id'],
'staff_id' => $order['staff_id']
];
OrderLogic::writeOff($params);
}
// if ($order && $order['store_id'] && $order['reservation'] != 1 && $order['source'] == 1) {
// $params = [
// 'verify_code' => $order['verify_code'],
// 'store_id' => $order['store_id'],
// 'staff_id' => $order['staff_id']
// ];
// OrderLogic::writeOff($params);
// }
if (in_array($order['shipping_type'], [1, 2])) {
PushService::push('store_merchant_' . $order['store_id'], $order['store_id'], ['type' => 'store_merchant', 'msg' => '您有一笔新的订单']);
}
@ -161,7 +164,7 @@ class PayNotifyLogic extends BaseLogic
];
UserSign::create($sing);
self::dealProductLog($order);
// self::dealProductLog($order);
}
@ -183,6 +186,7 @@ class PayNotifyLogic extends BaseLogic
}
$order->money = $order['pay_price'];
$order->paid = 1;
$order->status = 1;
$order->pay_time = time();
if (!$order->save()) {
throw new \Exception('订单保存出错');
@ -192,8 +196,7 @@ class PayNotifyLogic extends BaseLogic
UserProductStorageLogic::add($order);
}
// 减去采购款
$user->purchase_funds = bcsub($user['purchase_funds'], $order['pay_price'], 2);
$user->save();
User::update(['purchase_funds' => bcsub($user['purchase_funds'], $order['pay_price'], 2)], ['id' => $user['id']]);
$capitalFlowDao = new CapitalFlowLogic($user);
$capitalFlowDao->userExpense('user_order_purchase_pay', 'order', $order['id'], $order['pay_price'], '', 18, $order['store_id']);
@ -202,15 +205,15 @@ class PayNotifyLogic extends BaseLogic
// }
// self::addUserSing($order);
self::afterPay($order);
if ($order && $order['store_id'] && $order['reservation'] != 1 && $order['source'] == 1) {
$params = [
'verify_code' => $order['verify_code'],
'store_id' => $order['store_id'],
'staff_id' => $order['staff_id']
];
OrderLogic::writeOff($params);
}
self::dealProductLog($order);
// if ($order && $order['store_id'] && $order['reservation'] != 1 && $order['source'] == 1) {
// $params = [
// 'verify_code' => $order['verify_code'],
// 'store_id' => $order['store_id'],
// 'staff_id' => $order['staff_id']
// ];
// OrderLogic::writeOff($params);
// }
// self::dealProductLog($order);
if ($order['reservation'] == 1 && in_array($order['shipping_type'], [1, 2])) {
$checkArr = [
'cart_id' => $order['cart_id'],
@ -252,7 +255,7 @@ class PayNotifyLogic extends BaseLogic
}
$user = User::where('id', $order['uid'])->find();
if ($order->pay_type == OrderEnum::CASHIER_ORDER_PAY || $order->pay_type == OrderEnum::CASHIER_ORDER_ALI_PAY) { //收银台支付
$order->status = 2;
// $order->status = 2;
} else {
$capitalFlowDao = new CapitalFlowLogic($user);
//微信支付和用户余额无关
@ -268,7 +271,7 @@ class PayNotifyLogic extends BaseLogic
}
self::afterPay($order, $extra['transaction_id']);
// self::addUserSing($order);
self::dealProductLog($order);
// self::dealProductLog($order);
if (!empty($extra['payer']['openid']) && $order->pay_type == 7) {
Redis::send('push-delivery', ['order_id' => $order['order_id'], 'openid' => $extra['payer']['openid'], 'logistics_type' => 4]);
@ -323,34 +326,10 @@ class PayNotifyLogic extends BaseLogic
//订单购物详情
StoreOrderCartInfo::where('oid', $order['id'])->update(['status' => OrderEnum::REFUND_STATUS_FINISH]);
self::balance_purchase_refund($order);
//处理财务流水退还
(new StoreFinanceFlowLogic())->store_finance_back($orderSn, $order['store_id']);
if (in_array($order['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
if ($order['pay_type'] == PayEnum::BALANCE_PAY) { //用户余额支付
$user = User::where('id', $order['uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
$user->now_money = bcadd($user['now_money'], $order['pay_price'], 2);
$user->save();
//增加数量
self::addStock($order['id']);
//退款
$capitalFlowDao->userIncome('system_balance_add', 'system_back', $order['id'], $order['pay_price']);
}
if ($order['pay_type'] == PayEnum::PURCHASE_FUNDS) { //采购款支付
$user = User::where('id', $order['uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
$user->purchase_funds = bcadd($user['purchase_funds'], $order['pay_price'], 2);
$user->save();
//增加数量
self::addStock($order['id']);
//退款
$capitalFlowDao->userIncome('system_purchase_back', 'system_back', $order['id'], $order['pay_price']);
}
UserSignLogic::RefundOrder($order);
return true;
}
//积分
UserSignLogic::RefundOrder($order);
//微信日志 user_order_refund
@ -361,6 +340,48 @@ class PayNotifyLogic extends BaseLogic
return true;
}
/**
* 余额采购款退款
*/
public static function balance_purchase_refund($order, $type = 1, $money = 0)
{
if (in_array($order['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
if ($order['pay_type'] == PayEnum::BALANCE_PAY) { //用户余额支付
$user = User::where('id', $order['uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
if ($type == 1) {
$capitalFlowDao->userIncome('now_money_refund', 'system_back', $order['id'], $order['pay_price'], '', 0);
$user->now_money = bcadd($user['now_money'], $order['pay_price'], 2);
StoreOrder::where('id', $order['id'])->update(['refund_status' => 2]);
} else {
$capitalFlowDao->userIncome('now_money_refund', 'system_back', $order['id'], $money, '', 0);
$user->now_money = bcadd($user['now_money'], $money, 2);
}
$user->save();
//增加数量
self::addStock($order['id']);
}
if ($order['pay_type'] == PayEnum::PURCHASE_FUNDS) { //采购款支付
$user = User::where('id', $order['uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
if ($type == 1) {
$capitalFlowDao->userIncome('purchase_refund', 'system_back', $order['id'], $order['pay_price'], '', 1);
$user->purchase_funds = bcadd($user['purchase_funds'], $order['pay_price'], 2);
StoreOrder::where('id', $order['id'])->update(['refund_status' => 2]);
} else {
$capitalFlowDao->userIncome('purchase_refund', 'system_back', $order['id'], $money, '', 1);
$user->purchase_funds = bcadd($user['purchase_funds'], $money, 2);
}
$user->save();
//增加数量
self::addStock($order['id']);
}
UserSignLogic::RefundOrder($order);
return true;
}
}
/**
* 现金退款相关
* @param $orderSn
@ -487,7 +508,8 @@ class PayNotifyLogic extends BaseLogic
}
$order->paid = 1;
$order->pay_time = time();
$order->status = 2;
$order->status = 1;
// $order->status = 2;
if ($order['reservation'] == 1) {
$order->status = 1;
}
@ -500,16 +522,16 @@ class PayNotifyLogic extends BaseLogic
}
$cashFlowLogic = new CashFlowLogic();
$cashFlowLogic->insert($order['store_id'], $order['pay_price']);
self::dealProductLog($order);
// self::dealProductLog($order);
if ($order && $order['store_id'] && $order['reservation'] != 1) {
$params = [
'verify_code' => $order['verify_code'],
'store_id' => $order['store_id'],
'staff_id' => $order['staff_id']
];
OrderLogic::writeOff($params);
}
// if ($order && $order['store_id'] && $order['reservation'] != 1) {
// $params = [
// 'verify_code' => $order['verify_code'],
// 'store_id' => $order['store_id'],
// 'staff_id' => $order['staff_id']
// ];
// OrderLogic::writeOff($params);
// }
// Redis::send('push-platform-print', ['id' => $order['id']]);
@ -544,7 +566,7 @@ class PayNotifyLogic extends BaseLogic
}
$order->save();
self::afterPay($order);
self::dealProductLog($order);
// self::dealProductLog($order);
// if ($order->pay_type == 9) {
// $extra['create_time'] = $order['create_time'];
@ -554,14 +576,14 @@ class PayNotifyLogic extends BaseLogic
// else {
// PushService::push('store_merchant_' . $order['store_id'], $order['store_id'], ['type' => 'store_merchant', 'msg' => '您有一笔新的订单']);
// }
if ($order->pay_type == 13) {
$params = [
'verify_code' => $order['verify_code'],
'store_id' => $order['store_id'],
'staff_id' => $order['staff_id']
];
OrderLogic::writeOff($params);
}
// if ($order->pay_type == 13) {
// $params = [
// 'verify_code' => $order['verify_code'],
// 'store_id' => $order['store_id'],
// 'staff_id' => $order['staff_id']
// ];
// OrderLogic::writeOff($params);
// }
return true;
}
@ -574,20 +596,39 @@ class PayNotifyLogic extends BaseLogic
{
StoreOrderCartInfo::where('oid', $order['id'])->update(['is_pay' => 1]);
$arr = StoreOrderCartInfo::where('oid', $order['id'])->field('id,oid,product_id,store_id,cart_num')->select();
foreach ($arr as $k => $v) {
$branchProduct=StoreBranchProduct::where('product_id', $v['product_id'])->where('store_id',$v['store_id'])->find();
if($branchProduct){
$stock=bcsub($branchProduct['stock'],$v['cart_num'],2);
StoreProduct::where('id',$branchProduct['id'])->update(['stock'=>$stock,'total_price'=>bcmul($stock,$branchProduct['purchase'],2),
'sales'=>bcmul($branchProduct['sales'],$v['cart_num'],2)]);
}
$storeProduct=StoreProduct::where('id', $v['product_id'])->find();
if($storeProduct){
$stock=bcsub($storeProduct['stock'],$v['cart_num'],2);
StoreProduct::where('id', $v['product_id'])->update(['stock'=>$stock,'total_price'=>bcmul($stock,$storeProduct['purchase'],2),
'sales'=>bcmul($storeProduct['sales'],$v['cart_num'],2)]);
try {
foreach ($arr as $k => $v) {
$branchProduct = StoreBranchProduct::where('product_id', $v['product_id'])->where('store_id', $v['store_id'])->find();
$storeProduct = StoreProduct::where('id', $v['product_id'])->find();
if ($branchProduct) {
$stock = bcsub($branchProduct['stock'], $v['cart_num'], 2);
StoreBranchProduct::update([
'stock' => $stock,
'total_price' => bcmul($stock, $branchProduct['purchase'], 2),
'sales' => bcadd($branchProduct['sales'], $v['cart_num'], 2)
], ['id' => $branchProduct['id']]);
} else {
StoreProductLogic::ordinary(['id' => $v['product_id']], $v['store_id'], 0, $storeProduct);
StoreBranchProduct::update([
'stock' => -$v['cart_num'],
'sales' => $v['cart_num']
], ['product_id' => $v['product_id'],'store_id'=>$v['store_id']]);
}
if ($storeProduct) {
$stock = bcsub($storeProduct['stock'], $v['cart_num'], 2);
StoreProduct::update([
'stock' => $stock,
'total_price' => bcmul($stock, $storeProduct['purchase'], 2),
'sales' => bcadd($storeProduct['sales'], $v['cart_num'], 2)
], ['id' => $v['product_id']]);
}
}
} catch (\Throwable $e) {
Log::error('订单库存更新失败:' . $e->getMessage());
// 异常处理代码,例如记录日志或发送通知等。
}
$financeLogic = new StoreFinanceFlowLogic();
$off_activity = Config::where('name', 'off_activity')->value('value');
$village_uid = 0;
@ -623,108 +664,35 @@ class PayNotifyLogic extends BaseLogic
return false;
}
//如果是会员需要返回会员金额
// if ($user_ship>0 && $order['pay_type'] != PayEnum::CASH_PAY && $off_activity !=1) {
// $order['dealVipAmount']= self::dealVipAmount($order, $order['pay_type']);
// }
if ($order['spread_uid'] > 0 || $user_ship > 0) {
if ($order['spread_uid'] > 0 && $user_ship == 0) {
$user_ship = User::where('id', $order['spread_uid'])->value('user_ship');
if ($user_ship == 2) {
$village_uid = $order['spread_uid'];
$address = UserAddress::where(['uid' => $order['spread_uid'], 'is_default' => 1])->find();
if ($address) {
$arr2 = UserAddress::where(['village' => $address['village'], 'brigade' => $address['brigade'], 'is_default' => 1])->column('uid');
if ($arr2) {
$brigade_uid = User::where('id', 'in', $arr2)->where('user_ship', 3)->value('id') ?? 0;
}
}
} elseif ($user_ship == 3) {
$brigade_uid = $order['spread_uid'];
$address = UserAddress::where(['uid' => $order['spread_uid'], 'is_default' => 1])->find();
if ($address) {
$arr1 = UserAddress::where(['village' => $address['village'], 'is_default' => 1])->column('uid');
if ($arr1) {
$village_uid = User::where('id', 'in', $arr1)->where('user_ship', 2)->value('id') ?? 0;
}
}
} else {
$address = UserAddress::where(['uid' => $order['spread_uid'], 'is_default' => 1])->find();
if ($address) {
$arr1 = UserAddress::where(['village' => $address['village'], 'is_default' => 1])->column('uid');
if ($arr1) {
$village_uid = User::where('id', 'in', $arr1)->where('user_ship', 2)->value('id') ?? 0;
}
$arr2 = UserAddress::where(['village' => $address['village'], 'brigade' => $address['brigade'], 'is_default' => 1])->column('uid');
if ($arr2) {
$brigade_uid = User::where('id', 'in', $arr2)->where('user_ship', 3)->value('id') ?? 0;
}
}
if ($order['uid'] > 0) {
$address = UserAddress::where(['uid' => $order['uid'], 'is_default' => 1])->find();
if ($address) {
$arr1 = UserAddress::where(['village' => $address['village'], 'is_default' => 1])->column('uid');
if ($arr1) {
$village_uid = User::where('id', 'in', $arr1)->where('user_ship', 2)->value('id') ?? 0;
}
} else {
//查询用户对应的村长和队长
$address = UserAddress::where(['uid' => $order['uid'], 'is_default' => 1])->find();
if ($address) {
$arr1 = UserAddress::where(['village' => $address['village'], 'is_default' => 1])->column('uid');
if ($arr1) {
$village_uid = User::where('id', 'in', $arr1)->where('user_ship', 2)->value('id') ?? 0;
}
$arr2 = UserAddress::where(['village' => $address['village'], 'brigade' => $address['brigade'], 'is_default' => 1])->column('uid');
if ($arr2) {
$brigade_uid = User::where('id', 'in', $arr2)->where('user_ship', 3)->value('id') ?? 0;
}
$arr2 = UserAddress::where(['village' => $address['village'], 'brigade' => $address['brigade'], 'is_default' => 1])->column('uid');
if ($arr2) {
$brigade_uid = User::where('id', 'in', $arr2)->where('user_ship', 3)->value('id') ?? 0;
}
}
if (isset($user) && $order['store_id'] == getenv('ACTIVITY_STORE_ID') && !in_array($user['user_ship'], [4, 6, 7])) {
try {
$info = StoreOrderCartInfo::where('oid', $order['id'])->field('store_id,product_id,cart_num')->select();
$comm = new CommissionProductLogic();
foreach ($info as $k => $v) {
$comm->calculate_product_flow($v, $order, $village_uid, $brigade_uid, $user_ship);
}
CommissionnLogic::setStore($order, $village_uid, $brigade_uid, $transaction_id);
return true;
} catch (\Exception $e) {
Log::error('活动分润报错' . $e->getMessage());
return false;
}
}
switch ($user_ship) {
case 1: // 厨师
//case 4: // 商户
//case 5: // 种养殖
// case 6: // 酒店
// case 7: // 食堂
case 8: // 一条龙
CommissionLogic::setCook($order, $village_uid, $brigade_uid, $transaction_id);
break;
case 2: // 村长
CommissionLogic::setVillage($order, $village_uid, $brigade_uid, $transaction_id);
break;
case 3: // 队长
CommissionLogic::setBrigade($order, $village_uid, $brigade_uid, $transaction_id);
break;
default:
CommissionLogic::setStore($order, $transaction_id);
break;
}
} else {
if (isset($user) && $order['store_id'] == getenv('ACTIVITY_STORE_ID') && !in_array($user['user_ship'], [4, 6, 7])) {
try {
$info = StoreOrderCartInfo::where('oid', $order['id'])->field('store_id,product_id,cart_num')->select();
$comm = new CommissionProductLogic();
foreach ($info as $k => $v) {
$comm->calculate_product_flow($v, $order, $village_uid, $brigade_uid, $user_ship);
}
CommissionnLogic::setStore($order, $village_uid, $brigade_uid, $transaction_id);
return true;
} catch (\Exception $e) {
Log::error('活动分润报错' . $e->getMessage());
return false;
}
}
CommissionLogic::setStore($order, $transaction_id);
}
if ($order['spread_uid'] > 0) {
$user_ship = User::where('id', $order['spread_uid'])->value('user_ship');
}
try {
$info = StoreOrderCartInfo::where('oid', $order['id'])->field('store_id,product_id,cart_num')->select();
$comm = new CommissionProductLogic();
foreach ($info as $k => $v) {
$comm->calculate_product_flow($v, $order, $village_uid, $brigade_uid, $user_ship);
}
CommissionnLogic::setStore($order, $village_uid, $brigade_uid, $transaction_id);
} catch (\Throwable $e) {
Log::error('分润报错' . $e->getMessage());
return false;
}
return true;
}
/**

View File

@ -8,7 +8,9 @@ use app\common\enum\PayEnum;
use app\common\model\user\UserAuth;
use app\common\service\pay\PayService;
use Exception;
use support\exception\BusinessException;
use support\Log;
use Throwable;
use function DI\string;
@ -40,34 +42,33 @@ class PaymentLogic extends BaseLogic
return ['pay_way' => PayEnum::BALANCE_PAY];
}
try {
if(isset($order['price'])){
$order['pay_price'] = $order['price'];
}
switch ($payWay) {
case PayEnum::WECHAT_PAY_MINI:
$auth = UserAuth::where(['user_id' => $order['uid'], 'terminal' => $terminal])->findOrEmpty();
$order = [
'out_trade_no' => $paySn,
'description' => '商品',
'amount' => [
'total' => intval($order['pay_price'] * 100),
'currency' => 'CNY',
],
"payer" => [
"openid" => $auth['openid']
],
'attach' => $from
];
$wechat = new PayService(1);
$result = $wechat->wechat->mini($order)->toArray();
break;
default:
self::$error = '订单异常';
$result = false;
}
} catch (Exception $e) {
\support\Log::info($e->extra['message']?? $e->getMessage());
throw new \Exception($e->extra['message']?? $e->getMessage());
if (isset($order['price'])) {
$order['pay_price'] = $order['price'];
}
switch ($payWay) {
case PayEnum::WECHAT_PAY_MINI:
$auth = UserAuth::where(['user_id' => $order['uid'], 'terminal' => $terminal])->findOrEmpty();
$order = [
'out_trade_no' => $paySn,
'description' => '商品',
'amount' => [
'total' => intval($order['pay_price'] * 100),
'currency' => 'CNY',
],
"payer" => [
"openid" => $auth['openid']
],
'attach' => $from
];
$wechat = new PayService(1);
$result = $wechat->wechat->mini($order)->toArray();
break;
default:
throw new BusinessException('支付方式异常');
}
} catch (Throwable $e) {
Log::info($e->extra['message'] ?? $e->getMessage());
throw new BusinessException($e->extra['message'] ?? $e->getMessage());
}
return $result;
}
@ -75,13 +76,12 @@ class PaymentLogic extends BaseLogic
/**
* 微信条码支付
*/
public static function codepay($auth_code, $order,$description='条码商品')
public static function codepay($auth_code, $order, $description = '条码商品')
{
$pattern = '/^(10|11|12|13|14|15)\d{16}$/';
if (!preg_match($pattern, (string)$auth_code)) {
self::$error = '请使用正确的微信收付款条码';
return false;
throw new BusinessException('请使用正确的微信收付款条码');
}
$data = [
'description' => $description,
@ -94,26 +94,25 @@ class PaymentLogic extends BaseLogic
],
'scene_info' => [
"store_info" => [
'id' => (string)$order['store_id']??1
'id' => (string)$order['store_id'] ?? 1
]
],
'attach'=>'wechat_common'
'attach' => 'wechat_common'
];
if(isset($order['attach']) && $order['attach']!=''){
if (isset($order['attach']) && $order['attach'] != '') {
$data['attach'] = $order['attach'];
}
$wechat = new PayService(1);
try {
$result = $wechat->wechat->pos($data)->toArray();
} catch (Exception $e) {
Log::error('条码支付报错',['message' => $e->extra['message']?? $e->getMessage(),'code'=>$e->getCode()]);
} catch (Throwable $e) {
Log::error('条码支付报错', ['message' => $e->extra['message'] ?? $e->getMessage(), 'code' => $e->getCode()]);
if (getenv('APP_DEBUG') == true) {
self::$error = $e->extra['message'] ?? $e->getMessage();
throw new BusinessException($e->extra['message'] ?? $e->getMessage());
} else {
self::$error = $e->getMessage();
throw new BusinessException($e->getMessage());
}
return false;
}
return $result;
}
@ -126,26 +125,24 @@ class PaymentLogic extends BaseLogic
$pattern = '/^(25|26|27|28|29|30)[0-9A-Za-z]{14,23}$/';
if (!preg_match($pattern, (string)$auth_code)) {
self::$error = '请使用正确的支付宝收付款条码';
return false;
throw new BusinessException('请使用正确的支付宝收付款条码');
}
$order = [
'subject' => '条码商品',
'out_trade_no' => (string)$order['order_id'],
'auth_code' => (string)$auth_code,
'total_amount' => $order['pay_price'],
'extend_params'=>['attach'=>'alipay_cashier']
'extend_params' => ['attach' => 'alipay_cashier']
];
$wechat = new PayService();
try {
$result = $wechat->alipay->pos($order)->toArray();
} catch (Exception $e) {
} catch (Throwable $e) {
if (getenv('APP_DEBUG') == true) {
self::$error = $e->extra['message'] ?? $e->getMessage();
throw new BusinessException($e->extra['message'] ?? $e->getMessage());
} else {
self::$error = $e->getMessage();
throw new BusinessException($e->getMessage());
}
return false;
}
return $result;
}

View File

@ -151,18 +151,18 @@ class StoreFinanceFlowLogic extends BaseLogic
$store = SystemStore::where('id', $store_id)->find();
$capitalFlowDao = new CapitalFlowLogic($store, 'store');
if ($money > 0) {
$capitalFlowDao->storeIncome('store_money_add', 'order', $order_id, $money);
$capitalFlowDao->storeIncome('store_money_add', 'order', $order_id, $money,'','store_money');
SystemStore::where('id', $store_id)->inc('store_money', $money)->update();
}
if ($deposit > 0) {
$capitalFlowDao->storeIncome('store_paid_deposit_add', 'order', $order_id, $deposit);
$capitalFlowDao->storeIncome('store_paid_deposit_add', 'order', $order_id, $deposit,'','paid_deposit');
SystemStore::where('id', $store_id)->inc('paid_deposit', $deposit)->update();
}
$find = StoreFinanceFlow::where(['order_id' => $order_id, 'financial_pm' => 1, 'financial_type' => 16, 'status' => 0])->find();
StoreFinanceFlow::where(['order_id' => $order_id, 'financial_type' => 16])->update(['status' => 1]);
if ($find) {
if ($find['number'] > 0) {
$capitalFlowDao->storeIncome('store_attrition_add', 'order', $order_id, $find['number']);
$capitalFlowDao->storeIncome('store_attrition_add', 'order', $order_id, $find['number'],'','attrition');
SystemStore::where('id', $store_id)->inc('attrition', $find['number'])->update();
}
}
@ -183,39 +183,40 @@ class StoreFinanceFlowLogic extends BaseLogic
->select();
foreach ($list as $k => $value) {
//用户
switch ($value['type']) {
case 0:
if ($value['financial_type'] == 12 && $value['other_uid'] > 0) {
$user = User::where('id', $value['other_uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
$user->now_money = bcsub($user['now_money'], $value['number'], 2);
$user->save();
// Log::error('aa'.$a);
// Log::error('aa'.$user['now_money']);
// Log::error('aa'.$value['number']);
$capitalFlowDao->userExpense('user_order_promotion_refund', 'system_back', $value['order_id'], $value['number'], '', $value['pay_type']);
}
break;
//商户
case 1:
$store = SystemStore::where('id', $store_id)->find();
$capitalFlowDao = new CapitalFlowLogic($store, 'store');
if ($value['number'] > 0 && $value['financial_type'] == 2) {
SystemStore::where('id', $value['store_id'])->dec('store_money', $value['number'])->update();
$capitalFlowDao->storeExpense('store_paid_deposit_dec', 'order', $value['order_id'],$value['number']);
if($value['type']==0){
if ($value['financial_type'] == 12 && $value['other_uid'] > 0) {
$user = User::where('id', $value['other_uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user);
$user->now_money = bcsub($user['now_money'], $value['number'], 2);
$user->save();
$capitalFlowDao->userExpense('user_order_promotion_refund', 'system_back', $value['order_id'], $value['number'], '', $value['pay_type']);
}
}elseif($value['type']==1){
$store = SystemStore::where('id', $store_id)->find();
$capitalFlowDao = new CapitalFlowLogic($store, 'store');
if ($value['number'] > 0 && $value['financial_type'] == 2) {
$find=SystemStore::where('id', $value['store_id'])->find();
$find->store_money=bcsub($find['store_money'], $value['number'],2);
$find->save();
$capitalFlowDao->storeExpense('store_money_refund', 'order', $value['order_id'],$value['number'],'','store_money');
}
if ($value['number'] > 0 && $value['financial_type'] == 16) {
SystemStore::where('id', $value['store_id'])->dec('attrition', $value['number'])->update();
$capitalFlowDao->storeExpense('store_attrition_dec', 'order', $value['order_id'], $value['number']);
}
if ($value['number'] > 0 && $value['financial_type'] == 16) {
$find=SystemStore::where('id', $value['store_id'])->find();
$find->attrition=bcsub($find['attrition'], $value['number'],2);
$find->save();
$capitalFlowDao->storeExpense('store_attrition_refund', 'order', $value['order_id'], $value['number'],'','attrition');
}
break;
}
}
}
$find = StoreFinanceFlow::where('order_sn', $orderSn)->where('financial_type', 11)->where('status', 1)->find();
if ($find && $find['number'] > 0) {
SystemStore::where('id', $find['store_id'])->dec('paid_deposit', $find['number'])->update();
$find=SystemStore::where('id', $value['store_id'])->find();
$capitalFlowDao = new CapitalFlowLogic($find, 'store');
$find->paid_deposit=bcsub($find['paid_deposit'], $value['number'],2);
$find->save();
$capitalFlowDao->storeExpense('store_paid_deposit_refund', 'order', $value['order_id'],$value['number'],'','paid_deposit');
}
// $data = StoreFinanceFlow::where('order_sn', $orderSn)->select();
// foreach ($data as $k => &$value) {

View File

@ -67,7 +67,7 @@ class UserSignLogic extends BaseLogic
$write = self::write($order, $total_vip, 0, 1, 9);
self::write_log($write, $total_vip, 0, 7);
self::write_log($write, $total_vip, 0, 9, 0);
User::where('id', $order->uid)->inc('integral', $total_vip)->update();
User::where('id', $order->uid)->update(['integral'=>$total_vip,'first_purchase_funds'=>$order['price']]);
}
return true;
}

View File

@ -21,6 +21,7 @@ use Exception;
use support\Cache;
use think\facade\Db;
use app\common\model\system_store\SystemStore;
use support\exception\BusinessException;
class StoreOrderLogic extends BaseLogic
{
@ -46,8 +47,7 @@ class StoreOrderLogic extends BaseLogic
$where = ['is_pay' => 0];
$cart_select = Cart::whereIn('id', $cartId)->where($where)->field('id,product_id,cart_num')->select()->toArray();
if (empty($cart_select)) {
self::setError('购物车为空');
return false;
throw new BusinessException('购物车为空');
}
try {
self::$total_price = 0;
@ -164,8 +164,7 @@ class StoreOrderLogic extends BaseLogic
}
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
return ['order' => $order, 'cart_list' => $cart_select];
}
@ -222,8 +221,8 @@ class StoreOrderLogic extends BaseLogic
return $order;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
@ -238,7 +237,7 @@ class StoreOrderLogic extends BaseLogic
$query->field(['id', 'oid', 'product_id', 'cart_info']);
}])->where($params)->find();
if (empty($order)) {
throw new \Exception('订单不存在');
throw new BusinessException('订单不存在');
}
$order['pay_time'] = $order['pay_time'] > 0 ? date('Y-m-d H:i:s', $order['pay_time']) : '';
$order['status_name'] = OrderEnum::getOrderType($order['status']) ?? '';
@ -251,12 +250,31 @@ class StoreOrderLogic extends BaseLogic
if ($order['pay_type'] == 19){
$order['deduction_price'] = "0.00";
}
$detail =StoreOrderCartInfo::where('oid',$order['id'])->find()->toArray();
$product=StoreOrderCartInfo::where(['oid'=>$order['id']])
->field('oid,uid,product_id,store_id,cart_num,price,total_price,create_time')
->select()->each(function ($item) {
$find=StoreProduct::where('id',$item['product_id'])->field('image,unit,store_name,store_info')->find();
if($find){
$item['image']=$find['image'];//商品图片
$item['name']=$find['store_name'];//商品名称
$item['store_info']=$find['store_info'];//商品规格
$item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name')??"";
$item['pay_price'] =$item['total_price'];
$item['cart_info'] = $item->toArray()??[];
}else{
$item['image']='';//商品图片
$item['unit_name']='';//商品图片
$item['cate_name']='';//商品图片
$item['store_name']='';//商品名称
$item['store_info']='';//商品规格-(数据库叫商品简介)
$item['nickname']='';
$item['system_store']='';
$item['cart_info']=[];
}
return $item; //返回处理后的数据。
});
$order['product']=$product;
$vip =0;
if(isset($detail['cart_info']['vip']) && $detail['cart_info']['vip'] == 1){
$vip = 1;
}
$order['vip'] = $vip;
return $order->toArray();
}
@ -372,7 +390,7 @@ class StoreOrderLogic extends BaseLogic
return false;
} catch (Exception $e) {
\support\Log::info($e->extra['message'] ?? $e->getMessage());
throw new \Exception($e->extra['message'] ?? $e->getMessage());
throw new BusinessException($e->extra['message'] ?? $e->getMessage());
}
}
@ -383,7 +401,7 @@ class StoreOrderLogic extends BaseLogic
$code = generateRandomCode();
$phone = User::where('id',$param['uid'])->value('mobile');
if(empty($phone)){
throw new \Exception('用户未设置手机号');
throw new BusinessException('用户未设置手机号');
}
$template = getenv('SMS_TEMPLATE');
$check =(new SmsService())->client($phone,$template,$code);
@ -413,8 +431,7 @@ class StoreOrderLogic extends BaseLogic
$cart_select = Cart::whereIn('id', $params['cart_id'])
->where($where)->field('id,product_id,cart_num,store_id')->select()->toArray();
if (empty($cart_select)) {
self::setError('购物车为空');
return false;
throw new BusinessException('购物车为空');
}
$newArr = [];
//检查购物车对比店铺得商品数量差异

View File

@ -9,6 +9,7 @@ use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\user\User;
use app\common\model\user_product_storage\UserProductStorage;
use app\common\model\user_product_storage_log\UserProductStorageLog;
use support\exception\BusinessException;
use think\facade\Db;
/**
@ -54,9 +55,7 @@ class UserProductStorageLogic extends BaseLogic
$find=UserProductStorage::where('uid',$uid)->where('product_id',$v['product_id'])->find();
if($find){
if($find['nums']<$v['nums']){
self::setError('库存不足');
Db::commit();
return false;
throw new BusinessException("库存不足");
}
$nums=bcsub($find['nums'],$v['nums']);
$find->nums=$nums;
@ -86,17 +85,14 @@ class UserProductStorageLogic extends BaseLogic
$data_log[$k]['times']=$times;
$data_log[$k]['status']=$status;
}else{
self::setError('没有查询到该商品');
Db::commit();
return false;
throw new BusinessException("没有查询到该商品");
}
}
(new UserProductStorageLog())->saveAll($data_log);
Db::commit();
} catch (\Exception $e) {
} catch (\Throwable $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
throw new BusinessException($e->getMessage());
}
}
}

View File

@ -7,8 +7,9 @@ use app\common\model\BaseModel;
use app\common\model\store_category\StoreCategory;
use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit;
use Illuminate\Support\Facades\Log;
use think\model\concern\SoftDelete;
use Throwable;
/**
* 门店商品属性值辅助表模型
@ -36,10 +37,17 @@ class StoreBranchProduct extends BaseModel
}
public function store()
{
return $this->hasOne(StoreProduct::class,'id','product_id');
}
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'branch_product','更新前');
channelLog($data->toArray(),'branch_product','更新后');
}catch(Throwable $e){
Log::error('branch_product:'.$e->getMessage());
}
}
}

View File

@ -7,8 +7,9 @@ use app\common\model\BaseModel;
use app\common\model\system_store\SystemStore;
use app\common\model\system_store\SystemStoreStaff;
use app\common\model\user\User;
use Illuminate\Support\Facades\Log;
use think\model\concern\SoftDelete;
use Throwable;
/**
* 门店流水模型
@ -36,4 +37,12 @@ class StoreFinanceFlow extends BaseModel
return $this->hasOne(SystemStoreStaff::class, 'id', 'staff_id')->bind(['staff_name']);
}
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'store_finance_flow','更新前');
channelLog($data->toArray(),'store_finance_flow','更新后');
}catch(Throwable $e){
Log::error('store_finance_flow:'.$e->getMessage());
}
}
}

View File

@ -4,8 +4,9 @@ namespace app\common\model\store_finance_flow_product;
use app\common\model\BaseModel;
use Illuminate\Support\Facades\Log;
use think\model\concern\SoftDelete;
use Throwable;
/**
* 财务流水商品明细
@ -17,4 +18,13 @@ class StoreFinanceFlowProduct extends BaseModel
use SoftDelete;
protected $name = 'store_finance_flow_product';
protected $deleteTime = 'delete_time';
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'store_finance_flow_product','更新前');
channelLog($data->toArray(),'store_finance_flow_product','更新后');
}catch(Throwable $e){
Log::error('store_finance_flow_product:'.$e->getMessage());
}
}
}

View File

@ -9,8 +9,9 @@ use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\system_store\SystemStore;
use app\common\model\system_store\SystemStoreStaff;
use app\common\model\user\User;
use support\Log;
use think\model\concern\SoftDelete;
use Throwable;
/**
* 订单列表模型
@ -99,4 +100,13 @@ class StoreOrder extends BaseModel
})->field("FROM_UNIXTIME(create_time,'$timeType') as days,$str as num")
->group('days')->select()->toArray();
}
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'store_order','更新前');
channelLog($data->toArray(),'store_order','更新后');
}catch(Throwable $e){
Log::error('store_order:'.$e->getMessage());
}
}
}

View File

@ -4,7 +4,9 @@ namespace app\common\model\store_order_cart_info;
use app\common\model\BaseModel;
use app\common\model\store_branch_product\StoreBranchProduct;
use Illuminate\Support\Facades\Log;
use think\model\concern\SoftDelete;
use Throwable;
class StoreOrderCartInfo extends BaseModel
{
@ -18,4 +20,13 @@ class StoreOrderCartInfo extends BaseModel
{
return $this->hasOne(StoreBranchProduct::class,'id','product_id')->bind(['store_name','image','unit','price']);
}
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'store_order_cart_info','更新前');
channelLog($data->toArray(),'store_order_cart_info','更新后');
}catch(Throwable $e){
Log::error('store_order_cart_info:'.$e->getMessage());
}
}
}

View File

@ -6,8 +6,9 @@ namespace app\common\model\store_product;
use app\common\model\BaseModel;
use app\common\model\store_category\StoreCategory;
use app\common\model\store_product_unit\StoreProductUnit;
use support\Log;
use think\model\concern\SoftDelete;
use Throwable;
/**
* 商品列表模型
@ -31,8 +32,14 @@ class StoreProduct extends BaseModel
{
return $this->hasOne(StoreCategory::class,'id','cate_id')->bind(['class_name'=>'name']);
}
public static function onAfterWrite($data){
try{
channelLog($data->getOrigin(),'product','更新前');
channelLog($data->toArray(),'product','更新后');
}catch(Throwable $e){
Log::error('product:'.$e->getMessage());
}
}
}

Some files were not shown because too many files have changed in this diff Show More