Merge pull request 'dev' (#46) from dev into main

Reviewed-on: #46
This commit is contained in:
mkm 2024-07-22 17:52:48 +08:00
commit c63f218228
18 changed files with 253 additions and 1191 deletions

View File

@ -114,7 +114,7 @@ class StoreBranchProductController extends BaseAdminController
public function delete() public function delete()
{ {
$params = (new StoreProductValidate())->post()->goCheck('delete'); $params = (new StoreProductValidate())->post()->goCheck('delete');
StoreProductLogic::delete($params); StoreBranchProductLogic::delete($params);
return $this->success('删除成功', [], 1, 1); return $this->success('删除成功', [], 1, 1);
} }

View File

@ -12,8 +12,9 @@ use app\common\model\user\User;
use app\common\model\user\UserAddress; use app\common\model\user\UserAddress;
use app\common\model\vip_flow\VipFlow; use app\common\model\vip_flow\VipFlow;
use support\Db; use support\Db;
use app\common\lists\ListsSearchInterface;
class UserLists extends BaseAdminDataLists implements ListsExcelInterface class UserLists extends BaseAdminDataLists implements ListsExcelInterface,ListsSearchInterface
{ {
/** /**
* @notes 搜索条件 * @notes 搜索条件
@ -23,8 +24,11 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface
*/ */
public function setSearch(): array public function setSearch(): array
{ {
$allowSearch = ['keyword', 'channel', 'create_time_start', 'create_time_end']; return [
return array_intersect(array_keys($this->params), $allowSearch); '=' => ['store_id','user_ship','is_disable'],
'%like%' => ['account','mobile'],
'%pipe_like%' => ['nickname'=>'nickname|real_name'],
];
} }
@ -39,28 +43,15 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface
*/ */
public function lists(): array public function lists(): array
{ {
$params = $this->params;
$where = [];
if(isset($params['nickname']) && $params['nickname'] != ''){
$where[] = ['real_name|nickname','like','%'.$params['nickname'].'%'];
}
if(isset($params['account']) && $params['account'] != ''){
$where[] = ['account','like','%'.$params['account'].'%'];
}
if(isset($params['mobile']) && $params['mobile'] != ''){
$where[] = ['mobile','like','%'.$params['mobile'].'%'];
}
if(isset($params['is_disable']) && $params['is_disable'] != ''){
$where[] = ['is_disable','=', $params['is_disable']];
}
$field = "id,nickname,real_name,sex,avatar,account,mobile,channel,create_time,purchase_funds,user_ship, $field = "id,nickname,real_name,sex,avatar,account,mobile,channel,create_time,purchase_funds,user_ship,
label_id,integral,now_money,total_recharge_amount"; label_id,integral,now_money,total_recharge_amount";
$lists = User::withSearch($this->setSearch(), $this->params)->where($where) $lists = User::where($this->searchWhere)
->with(['user_ship','user_label']) ->with(['user_ship','user_label'])
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->field($field) ->field($field)
->order('id desc') ->order('id desc')
->select()->each(function($data){ ->select()
->each(function($data){
$data['sex_text'] = $data->sex_text; $data['sex_text'] = $data->sex_text;
})->toArray(); })->toArray();
foreach ($lists as &$item) { foreach ($lists as &$item) {
@ -115,21 +106,8 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface
*/ */
public function count(): int public function count(): int
{ {
$params = $this->params;
$where = []; return User::where($this->searchWhere)->count();
if(isset($params['nickname']) && $params['nickname'] != ''){
$where[] = ['nickname','like','%'.$params['nickname'].'%'];
}
if(isset($params['account']) && $params['account'] != ''){
$where[] = ['account','like','%'.$params['account'].'%'];
}
if(isset($params['mobile']) && $params['mobile'] != ''){
$where[] = ['mobile','like','%'.$params['mobile'].'%'];
}
if(isset($params['is_disable']) && $params['is_disable'] != ''){
$where[] = ['is_disable','=', $params['is_disable']];
}
return User::withSearch($this->setSearch(), $this->params)->where($where)->count();
} }

View File

@ -55,6 +55,7 @@ class StoreCashFinanceFlowLogic extends BaseLogic
try { try {
StoreCashFinanceFlow::where('id', $params['id'])->update([ StoreCashFinanceFlow::where('id', $params['id'])->update([
'file' => $params['file'], 'file' => $params['file'],
'receipts' => $params['receipts']??0,
'status'=>1, 'status'=>1,
'admin_id'=>$params['admin_id'], 'admin_id'=>$params['admin_id'],
]); ]);

View File

@ -5,10 +5,14 @@ namespace app\api\controller;
use app\admin\logic\store_product\StoreProductLogic; use app\admin\logic\store_product\StoreProductLogic;
use app\admin\validate\tools\GenerateTableValidate; use app\admin\validate\tools\GenerateTableValidate;
use app\admin\logic\tools\GeneratorLogic; use app\admin\logic\tools\GeneratorLogic;
use app\api\logic\order\OrderLogic as OrderOrderLogic;
use app\common\logic\PayNotifyLogic;
use app\common\logic\store_order\StoreOrderLogic; use app\common\logic\store_order\StoreOrderLogic;
use app\common\model\Config as ModelConfig; use app\common\model\Config as ModelConfig;
use app\common\model\store_branch_product\StoreBranchProduct; use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order\StoreOrder;
use app\common\model\system_store\SystemStore; use app\common\model\system_store\SystemStore;
use app\common\model\user\User;
use app\common\service\pay\PayService; use app\common\service\pay\PayService;
use app\common\service\PushService; use app\common\service\PushService;
use app\common\service\wechat\WechatTemplate; use app\common\service\wechat\WechatTemplate;
@ -179,10 +183,10 @@ return json($a);
public function push() public function push()
{ {
$name=$this->request->get('name');//用户名 $name = $this->request->get('name'); //用户名
$uid=$this->request->get('uid');//用户id $uid = $this->request->get('uid'); //用户id
$type=$this->request->get('type','INDUSTRYMEMBERS');//类型 $type = $this->request->get('type', 'INDUSTRYMEMBERS'); //类型
$a= PushService::push($name, $uid, ['type'=>$type,'msg'=>'支付超时,订单已被取消,请重新提交订单','data'=>['id'=>5]]); $a = PushService::push($name, $uid, ['type' => $type, 'msg' => '支付超时,订单已被取消,请重新提交订单', 'data' => ['id' => 5]]);
return $this->success('ok',['data'=> $a]); return $this->success('ok', ['data' => $a]);
} }
} }

View File

@ -65,20 +65,23 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists
->toArray(); ->toArray();
$off_activity = Config::where('name', 'off_activity')->value('value'); $off_activity = Config::where('name', 'off_activity')->value('value');
$user_ship = User::where('id', $userId)->value('user_ship'); $user_ship = User::where('id', $userId)->value('user_ship');
if (in_array($user_ship, [4, 5, 6, 7])) { $field = 'product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id';
$off_activity=1; 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';
} }
$this->user_ship=$user_ship; $this->user_ship = $user_ship;
$this->off_activity=$off_activity; $this->off_activity = $off_activity;
foreach ($list as $key => &$item) { foreach ($list as $key => &$item) {
$find = StoreBranchProduct::where(['product_id' => $item['product_id'], 'store_id' => $item['store_id']]) $find = StoreBranchProduct::where(['product_id' => $item['product_id'], 'store_id' => $item['store_id']])
->field('product_id,image,price,cost,store_name,unit,delete_time,vip_price') ->field($field)
->withTrashed() ->withTrashed()
->find(); ->find();
if ($find) { if ($find) {
if($off_activity==1){ if ($off_activity == 1) {
$this->activity_price = bcadd(bcmul($find['cost'],$item['cart_num'], 2), $this->activity_price, 2); $this->activity_price = bcadd(bcmul($find['cost'], $item['cart_num'], 2), $this->activity_price, 2);
}
if ($off_activity == 0 && $user_ship == 5 && $find['top_cate_id'] == 15189) {
$find['price'] = $find['cost'];
} }
$item['goods_total_price'] = bcmul($item['cart_num'], $find['price'], 2); $item['goods_total_price'] = bcmul($item['cart_num'], $find['price'], 2);
$this->total_price = bcadd($this->total_price, $item['goods_total_price'], 2); $this->total_price = bcadd($this->total_price, $item['goods_total_price'], 2);
@ -111,24 +114,28 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists
public function extend() public function extend()
{ {
$data= [ $data = [
'off_activity' => $this->off_activity, 'off_activity' => $this->off_activity,
'total_price' => $this->total_price, 'total_price' => $this->total_price,
'msg' => '', 'msg' => '',
'pay_price' => $this->total_price 'pay_price' => $this->total_price
]; ];
if($this->user_ship==0){ if ($this->user_ship == 0) {
$data['msg']='您已选购满500元支付成功后即可获得'.bcmul($this->total_price,0.1,2).'元品牌礼品兑换券,可到线下门店兑换礼品。'; if ($data['pay_price'] < 500) {
$data['msg'] = '还差' . bcsub(500, $data['pay_price'], 2) . '即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。';
} else {
$data['msg'] = '您已选购满500元支付成功后即可获得' . bcmul($data['pay_price'], 0.1, 2) . '元品牌礼品兑换券,可到线下门店兑换礼品。';
}
} }
if($this->off_activity==1){//1 if ($this->off_activity == 1) { //1
$data['pay_price']=$this->activity_price; $data['pay_price'] = $this->activity_price;
if($this->activity_price<500){ if ($data['pay_price'] < 500) {
if($this->user_ship==0){ if ($this->user_ship == 0) {
$data['msg']='还差'.bcsub(500,$this->activity_price,2).'即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。'; $data['msg'] = '还差' . bcsub(500, $this->activity_price, 2) . '即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。';
} }
}else{ } else {
if($this->user_ship==0){ if ($this->user_ship == 0) {
$data['msg']= '您已选购满500元支付成功后即可获得'.bcmul($this->activity_price,0.1,2).'元品牌礼品兑换券,可到线下门店兑换礼品。'; $data['msg'] = '您已选购满500元支付成功后即可获得' . bcmul($this->activity_price, 0.1, 2) . '元品牌礼品兑换券,可到线下门店兑换礼品。';
} }
} }
} }

View File

@ -10,6 +10,7 @@ use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo; use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct; use app\common\model\store_product\StoreProduct;
use app\common\model\store_product_unit\StoreProductUnit; use app\common\model\store_product_unit\StoreProductUnit;
use Picqer\Barcode\BarcodeGeneratorPNG;
/** /**
* 零售订单列表 * 零售订单列表
@ -80,6 +81,11 @@ class OrderList extends BaseAdminDataLists implements ListsSearchInterface
if($item['verify_img']){ if($item['verify_img']){
$item['verify_img'] = 'https://'.$this->request->host(true).$item['verify_img']; $item['verify_img'] = 'https://'.$this->request->host(true).$item['verify_img'];
} }
if($item['is_writeoff']==0){
$generator = new BarcodeGeneratorPNG();
$tmpFilename = $generator->getBarcode($item['verify_code'], $generator::TYPE_CODE_128);
$item['verify_base64'] ='data:image/png;base64,'.base64_encode($tmpFilename);
}
}) })
->toArray(); ->toArray();

View File

@ -79,23 +79,24 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
} else { } else {
$order = [$field => $order]; $order = [$field => $order];
} }
$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,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';
$off_activity = Config::where('name', 'off_activity')->value('value'); $off_activity = Config::where('name', 'off_activity')->value('value');
if($off_activity==1){ if ($off_activity == 1) {
$tag='赠10%品牌礼品券'; $tag = '赠10%品牌礼品券';
}else{ } else {
$tag=''; $tag = '';
} }
$uid=0; $uid = 0;
if($this->request->get('uid',0)>0){ if ($this->request->get('uid', 0) > 0) {
$uid=$this->request->get('uid',0); $uid = $this->request->get('uid', 0);
}elseif( $this->userId > 0){ } elseif ($this->userId > 0) {
$uid=$this->userId; $uid = $this->userId;
} }
if ($uid>0) { $user_ship=-1;
if ($uid > 0) {
$user_ship = User::where('id', $uid)->value('user_ship'); $user_ship = User::where('id', $uid)->value('user_ship');
if (in_array($user_ship, [4, 5, 6, 7])) { if (in_array($user_ship, [4, 6, 7])) {
$off_activity = 1; $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';
} }
} }
$this->off_activity = $off_activity; $this->off_activity = $off_activity;
@ -106,9 +107,11 @@ class ProductLists extends BaseApiDataLists implements ListsSearchInterface, Lis
->with(['className', 'unitName']) ->with(['className', 'unitName'])
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->order($order) ->order($order)
// ->page($this->limitOffset +1,$this->limitLength) ->select()->each(function ($item) use ($tag, $off_activity, $user_ship) {
->select()->each(function ($item) use($tag){ if ($off_activity == 0 && $user_ship == 5 && $item['top_cate_id'] == 15189) {
$item['tag']=$tag; $item['price'] = $item['cost'];
}
$item['tag'] = $tag;
return $item; return $item;
}) })
->toArray(); ->toArray();

View File

@ -71,7 +71,7 @@ class OrderLogic extends BaseLogic
self::setError('购物车为空'); self::setError('购物车为空');
return false; return false;
} }
try { // try {
self::$total_price = 0; self::$total_price = 0;
self::$pay_price = 0; self::$pay_price = 0;
self::$cost = 0; //成本由采购价替代原成本为门店零售价 self::$cost = 0; //成本由采购价替代原成本为门店零售价
@ -84,13 +84,13 @@ class OrderLogic extends BaseLogic
self::$fresh_price = 0; //生鲜金额 self::$fresh_price = 0; //生鲜金额
/** 计算价格 */ /** 计算价格 */
$off_activity = Config::where('name', 'off_activity')->value('value'); $off_activity = Config::where('name', 'off_activity')->value('value');
$field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase,product_id,top_cate_id'; $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase,product_id,top_cate_id,store_info';
foreach ($cart_select as $k => $v) { foreach ($cart_select as $k => $v) {
$find = StoreBranchProduct::where(['product_id' => $v['product_id'], 'store_id' => $params['store_id']])->field($field)->find(); $find = StoreBranchProduct::where(['product_id' => $v['product_id'], 'store_id' => $params['store_id']])->field($field)->find();
if (!$find) { if (!$find) {
// unset($cart_select[$k]); // unset($cart_select[$k]);
// continue; // continue;
$field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase, id product_id,cate_id'; $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase, id product_id,cate_id,store_info';
$find = StoreProduct::where(['id' => $v['product_id']])->field($field)->find(); $find = StoreProduct::where(['id' => $v['product_id']])->field($field)->find();
if ($find) { if ($find) {
$cate_id = StoreCategory::where('id', $find['cate_id'])->value('pid'); $cate_id = StoreCategory::where('id', $find['cate_id'])->value('pid');
@ -108,11 +108,14 @@ class OrderLogic extends BaseLogic
} }
unset($cart_select[$k]['id']); unset($cart_select[$k]['id']);
$cart_select[$k]['total_price'] = bcmul($v['cart_num'], $find['price'], 2); //订单总价 $cart_select[$k]['total_price'] = bcmul($v['cart_num'], $find['price'], 2); //订单总价
if ($off_activity == 1 || ($user != null && in_array($user['user_ship'], [4, 5, 6, 7]))) { if ($off_activity == 1 || ($user != null && in_array($user['user_ship'], [4, 6, 7]))) {
$price = $find['cost']; $price = $find['cost'];
} else { } else {
$price = $find['price']; $price = $find['price'];
} }
if($off_activity==0 && $user['user_ship']==5 && $find['top_cate_id']==15189){
$price=$find['cost'];
}
$cart_select[$k]['price'] = $price; $cart_select[$k]['price'] = $price;
$cart_select[$k]['cost'] = $find['cost']; $cart_select[$k]['cost'] = $find['cost'];
$cart_select[$k]['vip'] = 0; $cart_select[$k]['vip'] = 0;
@ -133,16 +136,17 @@ class OrderLogic extends BaseLogic
$cart_select[$k]['cart_num'] = $v['cart_num']; $cart_select[$k]['cart_num'] = $v['cart_num'];
$cart_select[$k]['verify_code'] = $params['verify_code'] ?? ''; $cart_select[$k]['verify_code'] = $params['verify_code'] ?? '';
$cart_select[$k]['vip_frozen_price'] = 0; $cart_select[$k]['vip_frozen_price'] = 0;
$cart_select[$k]['store_info'] = $find['store_info'];
//会员待返回金额 //会员待返回金额
if ($user && $off_activity == 0) { // if ($user && $off_activity == 0) {
if ($user['user_ship'] == 4) { // if ($user['user_ship'] == 4) {
//商户 // //商户
$cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['store_price'], 2); // $cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['store_price'], 2);
} else { // } else {
//其他会员 // //其他会员
$cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['vip_price'], 2); // $cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['vip_price'], 2);
} // }
} // }
// d($cart_select[$k]['pay_price'],$cart_select[$k]['store_price'],$cart_select[$k]['vip_price'] ); // d($cart_select[$k]['pay_price'],$cart_select[$k]['store_price'],$cart_select[$k]['vip_price'] );
$cartInfo = $cart_select[$k]; $cartInfo = $cart_select[$k];
$cartInfo['name'] = $find['store_name']; $cartInfo['name'] = $find['store_name'];
@ -159,7 +163,7 @@ class OrderLogic extends BaseLogic
self::$cost = bcadd(self::$cost, $cart_select[$k]['purchase'], 2); self::$cost = bcadd(self::$cost, $cart_select[$k]['purchase'], 2);
self::$store_price = bcadd(self::$store_price, $cart_select[$k]['store_price'], 2); //商户价 self::$store_price = bcadd(self::$store_price, $cart_select[$k]['store_price'], 2); //商户价
self::$deduction_price = bcadd(self::$deduction_price, $deduction_price, 2); //抵扣金额 self::$deduction_price = bcadd(self::$deduction_price, $deduction_price, 2); //抵扣金额
self::$frozen_money = bcadd(self::$frozen_money, $cart_select[$k]['vip_frozen_price'], 2); //返还金额 // self::$frozen_money = bcadd(self::$frozen_money, $cart_select[$k]['vip_frozen_price'], 2); //返还金额
//计算生鲜 //计算生鲜
if ($createOrder == 1 && $find['top_cate_id'] == 15201) { if ($createOrder == 1 && $find['top_cate_id'] == 15201) {
self::$fresh_price = bcadd(self::$fresh_price, $cart_select[$k]['pay_price'], 2); self::$fresh_price = bcadd(self::$fresh_price, $cart_select[$k]['pay_price'], 2);
@ -245,10 +249,10 @@ class OrderLogic extends BaseLogic
} }
} }
} }
} catch (\Exception $e) { // } catch (\Exception $e) {
self::setError($e->getMessage()); // self::setError($e->getMessage());
return false; // return false;
} // }
return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store']]; return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store']];
} }
@ -276,15 +280,15 @@ class OrderLogic extends BaseLogic
$_order['uid'] = $uid; $_order['uid'] = $uid;
$_order['spread_uid'] = $params['spread_uid'] ?? 0; $_order['spread_uid'] = $params['spread_uid'] ?? 0;
$_order['real_name'] = $user['real_name'] ?? ''; $_order['real_name'] = $user['real_name'] ?? '';
$_order['mobile'] = $user['mobile'] ?? ''; $_order['user_phone'] = $user['mobile'] ?? '';
$_order['pay_type'] = $orderInfo['order']['pay_type']; $_order['pay_type'] = $orderInfo['order']['pay_type'];
$_order['verify_code'] = $verify_code; $_order['verify_code'] = $verify_code;
$_order['reservation_time'] = null; $_order['reservation_time'] = null;
$_order['reservation'] = $params['reservation'] ?? 0; //是否需要预约 $_order['reservation'] = 0;$params['reservation'] ?? 0; //是否需要预约
if (isset($params['reservation_time']) && $params['reservation_time']) { // if (isset($params['reservation_time']) && $params['reservation_time']) {
$_order['reservation_time'] = $params['reservation_time']; // $_order['reservation_time'] = $params['reservation_time'];
$_order['reservation'] = YesNoEnum::YES; // $_order['reservation'] = YesNoEnum::YES;
} // }
if ($addressId > 0 && $uid > 0) { if ($addressId > 0 && $uid > 0) {
$address = UserAddress::where(['id' => $addressId, 'uid' => $uid])->find(); $address = UserAddress::where(['id' => $addressId, 'uid' => $uid])->find();
if ($address) { if ($address) {
@ -502,6 +506,11 @@ class OrderLogic extends BaseLogic
if ($find['verify_img']) { if ($find['verify_img']) {
$find['verify_img'] = $url . $find['verify_img']; $find['verify_img'] = $url . $find['verify_img'];
} }
if($find['is_writeoff']==0){
$generator = new BarcodeGeneratorPNG();
$tmpFilename = $generator->getBarcode($find['verify_code'], $generator::TYPE_CODE_128);
$find['verify_base64'] = 'data:image/png;base64,'.base64_encode($tmpFilename);
}
//处理返回最近的店铺 //处理返回最近的店铺
if ($param['lat'] && $param['long']) { if ($param['lat'] && $param['long']) {
$storeAll = SystemStore::field('id,name,phone,address,detailed_address,latitude,longitude')->select()->toArray(); $storeAll = SystemStore::field('id,name,phone,address,detailed_address,latitude,longitude')->select()->toArray();

View File

@ -148,7 +148,7 @@ class CapitalFlowLogic extends BaseLogic
{ {
switch ($category) { switch ($category) {
case 'user_balance_recharge': case 'user_balance_recharge':
return "用户充值{$amount}"; return "用户增加{$amount}";
case 'user_order_purchase_pay': case 'user_order_purchase_pay':
return "用户采购款支付{$amount}"; return "用户采购款支付{$amount}";
case 'store_margin': case 'store_margin':
@ -172,7 +172,7 @@ class CapitalFlowLogic extends BaseLogic
case 'system_balance_reduce': case 'system_balance_reduce':
return "系统减少余额{$amount}"; return "系统减少余额{$amount}";
case 'user_balance_recharge_refund': case 'user_balance_recharge_refund':
return "用户充值退还{$amount}"; return "用户减少{$amount}";
default: default:
return "订单支付{$amount}"; return "订单支付{$amount}";
} }

View File

@ -169,29 +169,29 @@ class CommissionLogic extends BaseLogic
$fees = bcmul($pay_price, $userRate, 2); $fees = bcmul($pay_price, $userRate, 2);
if ($fees > 0) { if ($fees > 0) {
//记录用户余额收入 //记录用户余额收入
if ($uid) { // if ($uid) {
if(in_array($enum,[14,15])&&$userRate==0.05){ // if(in_array($enum,[14,15])&&$userRate==0.05){
$purchase_funds=User::where('id', $uid)->value('purchase_funds'); // $purchase_funds=User::where('id', $uid)->value('purchase_funds');
if($purchase_funds>0){ // if($purchase_funds>0){
$fees_two = bcmul($purchase_funds, $userRate, 2); // $fees_two = bcmul($purchase_funds, $userRate, 2);
if($fees_two<$fees){ // if($fees_two<$fees){
$fees=$fees_two; // $fees=$fees_two;
} // }
} // }
} // }
if($enum==12&&$userRate==0.07){ // if($enum==12&&$userRate==0.07){
$purchase_funds=User::where('id', $uid)->value('purchase_funds'); // $purchase_funds=User::where('id', $uid)->value('purchase_funds');
if($purchase_funds>0){ // if($purchase_funds>0){
$fees_two = bcmul($purchase_funds, $userRate, 2); // $fees_two = bcmul($purchase_funds, $userRate, 2);
if($fees_two<$fees){ // if($fees_two<$fees){
$fees=$fees_two; // $fees=$fees_two;
} // }
} // }
} // }
$GiveUser = User::where('id', $order['uid'])->find(); // $GiveUser = User::where('id', $order['uid'])->find();
$capitalFlowDao = new CapitalFlowLogic($GiveUser); // $capitalFlowDao = new CapitalFlowLogic($GiveUser);
$capitalFlowDao->userIncome('system_balance_add', 'order', $order['id'], $fees); // $capitalFlowDao->userIncome('system_balance_add', 'order', $order['id'], $fees);
} // }
$financeLogic->user['uid'] = $order['uid']; $financeLogic->user['uid'] = $order['uid'];
$financeLogic->other_arr['vip_uid'] = $uid; $financeLogic->other_arr['vip_uid'] = $uid;
$financeLogic->order = $order; $financeLogic->order = $order;

File diff suppressed because it is too large Load Diff

View File

@ -95,9 +95,7 @@ class PayNotifyLogic extends BaseLogic
$capitalFlowDao = new CapitalFlowLogic($user); $capitalFlowDao = new CapitalFlowLogic($user);
$capitalFlowDao->userExpense('user_order_balance_pay', 'order', $order['id'], $order['pay_price'], '', 0, $order['store_id']); $capitalFlowDao->userExpense('user_order_balance_pay', 'order', $order['id'], $order['pay_price'], '', 0, $order['store_id']);
self::dealProductLog($order); self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
// self::descStock($order['id']);
}
self::afterPay($order); self::afterPay($order);
if ($order['reservation'] == 1 && in_array($order['shipping_type'], [1, 2])) { if ($order['reservation'] == 1 && in_array($order['shipping_type'], [1, 2])) {
$checkArr = [ $checkArr = [
@ -278,9 +276,7 @@ class PayNotifyLogic extends BaseLogic
self::afterPay($order, $extra['transaction_id']); self::afterPay($order, $extra['transaction_id']);
// self::addUserSing($order); // self::addUserSing($order);
self::dealProductLog($order); self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
if (!empty($extra['payer']['openid']) && $order->pay_type == 7) { if (!empty($extra['payer']['openid']) && $order->pay_type == 7) {
Redis::send('push-delivery', ['order_id' => $order['order_id'], 'openid' => $extra['payer']['openid']], 4); Redis::send('push-delivery', ['order_id' => $order['order_id'], 'openid' => $extra['payer']['openid']], 4);
} }
@ -438,7 +434,7 @@ class PayNotifyLogic extends BaseLogic
$uid = $order->uid; $uid = $order->uid;
$user = User::where('id', $uid)->findOrEmpty(); $user = User::where('id', $uid)->findOrEmpty();
//check store_id //check store_id
if(empty($user->store_id)){ if($user->store_id==0){
$user->store_id = $order['store_id']; $user->store_id = $order['store_id'];
} }
@ -499,10 +495,6 @@ class PayNotifyLogic extends BaseLogic
$cashFlowLogic->insert($order['store_id'], $order['pay_price']); $cashFlowLogic->insert($order['store_id'], $order['pay_price']);
self::dealProductLog($order); self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
if ($order && $order['store_id'] && $order['reservation'] !=1) { if ($order && $order['store_id'] && $order['reservation'] !=1) {
$params = [ $params = [
'verify_code' => $order['verify_code'], 'verify_code' => $order['verify_code'],
@ -546,9 +538,6 @@ class PayNotifyLogic extends BaseLogic
UserProductStorageLogic::add($order); UserProductStorageLogic::add($order);
} }
self::dealProductLog($order); self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
// if ($order->pay_type == 9) { // if ($order->pay_type == 9) {
// $extra['create_time'] = $order['create_time']; // $extra['create_time'] = $order['create_time'];
@ -811,37 +800,6 @@ class PayNotifyLogic extends BaseLogic
} }
/**
* 扣库存
* @param $oid
* @return void
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function descStock($oid)
{
$updateData = [];
$goods_list = StoreOrderCartInfo::where('oid', $oid)->select()->toArray();
foreach ($goods_list as $v) {
$StoreBranchProduct = StoreBranchProduct::where(
[
'store_id' => $v['store_id'],
'product_id' => $v['product_id'],
]
)->withTrashed()->find();
if ($StoreBranchProduct) {
$updateData[] = [
'id' => $StoreBranchProduct['id'],
'stock' => $StoreBranchProduct['stock'] - $v['cart_num'],
'sales' => ['inc', $v['cart_num']]
];
}
}
(new StoreBranchProduct())->saveAll($updateData);
}
/** /**
* 加库存 * 加库存
* @param $oid * @param $oid

View File

@ -134,7 +134,8 @@ class StoreFinanceFlowLogic extends BaseLogic
*/ */
public function updateStatusUser($id, $uid, $money, $order_id) public function updateStatusUser($id, $uid, $money, $order_id)
{ {
StoreFinanceFlow::where('id', $id)->update(['status' => 1]); $flow=StoreFinanceFlow::where('id', $id)->find();
StoreFinanceFlow::where('order_id',$order_id)->where('financial_type',$flow['financial_type'])->update(['status'=>1]);
$find = User::where('id', $uid)->find(); $find = User::where('id', $uid)->find();
$capitalFlowDao = new CapitalFlowLogic($find); $capitalFlowDao = new CapitalFlowLogic($find);
$capitalFlowDao->userIncome('system_balance_add', 'order', $order_id, $money); $capitalFlowDao->userIncome('system_balance_add', 'order', $order_id, $money);

View File

@ -32,16 +32,16 @@ class UserSignLogic extends BaseLogic
$list = DictData::where('type_value', 'recharge')->select(); $list = DictData::where('type_value', 'recharge')->select();
foreach( $list as $k=>$v){ foreach( $list as $k=>$v){
if($v['name']=='level_one'){ if($v['name']=='level_one'){
$level_one = $v['value']; $level_one = bcadd($v['value'],0,2);
}elseif($v['name']=='level_two'){ }elseif($v['name']=='level_two'){
$level_two = $v['value']; $level_two = bcadd($v['value'],0,2);
}elseif($v['name']=='level_three' ){ }elseif($v['name']=='level_three' ){
$level_three = $v['value']; $level_three = bcadd($v['value'],0,2);
}elseif($v['name']=='level_four'){ }elseif($v['name']=='level_four'){
$level_four = $v['value']; $level_four = bcadd($v['value'],0,2);
} }
} }
$price=(int)$order['price']; $price= bcadd($order['price'],0,2);
switch ($price) { switch ($price) {
case $level_one: case $level_one:
$total_vip = 249; $total_vip = 249;
@ -62,7 +62,7 @@ class UserSignLogic extends BaseLogic
return false; return false;
} }
$count = UserRecharge::where(['uid'=>$order->uid,'paid'=>YesNoEnum::YES])->count(); $count = UserRecharge::where(['uid'=>$order->uid,'paid'=>YesNoEnum::YES])->count();
if ($count ==1 && $user_ship>0) { if ($count ==1 && in_array($user_ship,[1,2,3])) {
//首充 //首充
$write = self::write($order, $total_vip, 0, 1, 9); $write = self::write($order, $total_vip, 0, 1, 9);
self::write_log($write, $total_vip, 0, 7); self::write_log($write, $total_vip, 0, 7);

View File

@ -12,6 +12,7 @@ use app\common\model\order\Cart;
use app\common\model\store_branch_product\StoreBranchProduct; use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order\StoreOrder; use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo; 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\store_product_unit\StoreProductUnit;
use app\common\model\user\User; use app\common\model\user\User;
use app\common\service\pay\PayService; use app\common\service\pay\PayService;
@ -207,10 +208,15 @@ class StoreOrderLogic extends BaseLogic
'stock' => $stock-$v['cart_num'], 'stock' => $stock-$v['cart_num'],
'sales' => ['inc', $v['cart_num']] 'sales' => ['inc', $v['cart_num']]
]; ];
$updateDataTwo[] = [
'id' => $v['product_id'],
'sales' => ['inc', $v['cart_num']]
];
} }
(new StoreOrderCartInfo())->saveAll($goods_list); (new StoreOrderCartInfo())->saveAll($goods_list);
$where = ['is_pay' => 0]; $where = ['is_pay' => 0];
(new StoreBranchProduct())->saveAll($updateData); (new StoreBranchProduct())->saveAll($updateData);
(new StoreProduct())->saveAll($updateDataTwo);
Cart::whereIn('id', $cartId)->where($where)->update(['is_pay' => 1]); Cart::whereIn('id', $cartId)->where($where)->update(['is_pay' => 1]);
Db::commit(); Db::commit();
return $order; return $order;

View File

@ -0,0 +1,44 @@
<?php
namespace app\queue\redis;
use app\common\logic\PayNotifyLogic;
use app\common\model\retail\Cashierclass;
use app\common\model\store_order\StoreOrder;
use app\common\model\user_recharge\UserRecharge;
use app\common\service\pay\PayService;
use app\common\service\PushService;
use Webman\RedisQueue\Consumer;
use support\exception\BusinessException;
/**
* 微信条码支付队列消费
*/
class TaskRechargeQuerySend implements Consumer
{
// 要消费的队列名
public $queue = 'task-recharge-query';
// 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
public $connection = 'default';
// 消费
public function consume($data)
{
$pay = new PayService();
$order = [
'out_trade_no' => $data['order_id'],
];
$res = $pay->wechat->query($order);
if ($res['trade_state'] == 'SUCCESS' && $res['trade_state_desc'] == '支付成功') {
if(isset($data['pay_type']) && $data['pay_type']=='recharge'){
PayNotifyLogic::handle('recharge', $res['out_trade_no'], $res);
}
}
}
// 消费失败时
public function onConsumeFailure(\Throwable $exception, $package)
{
return $package;
}
}

View File

@ -29,7 +29,7 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
public function setSearch(): array public function setSearch(): array
{ {
return [ return [
'=' => ['admin_id', 'staff_id', 'status','type'], '=' => ['admin_id', 'staff_id', 'status', 'type'],
]; ];
} }
@ -45,12 +45,12 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
*/ */
public function lists(): array public function lists(): array
{ {
$this->searchWhere[] = ['store_id','=',$this->adminInfo['store_id']];//只显示当前门店的入库记录 $this->searchWhere[] = ['store_id', '=', $this->adminInfo['store_id']]; //只显示当前门店的入库记录
if($this->request->__get('status')==-1){ if ($this->request->__get('status') == -1) {
$this->searchWhere[] = ['status','>=',0]; $this->searchWhere[] = ['status', '>=', 0];
} }
return SystemStoreStorage::where($this->searchWhere) return SystemStoreStorage::where($this->searchWhere)
->field(['id', 'store_id', 'admin_id', 'staff_id', 'product_id', 'nums','mark', 'status']) ->field(['id', 'store_id', 'admin_id', 'staff_id', 'product_id', 'nums', 'mark', 'status'])
->limit($this->limitOffset, $this->limitLength) ->limit($this->limitOffset, $this->limitLength)
->order(['status' => 'aes']) ->order(['status' => 'aes'])
->select()->each(function ($item) { ->select()->each(function ($item) {
@ -62,9 +62,15 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
} else { } else {
$item['staff_name'] = '无'; $item['staff_name'] = '无';
} }
$find=StoreProduct::where('id',$item['product_id'])->field('store_name,image')->find(); $find = StoreProduct::where('id', $item['product_id'])->field('store_name,image')->find();
$item['store_name']=$find['store_name']; if ($find) {
$item['image']=$find['image']; $item['store_name'] = $find['store_name'];
$item['image'] = $find['image'];
} else {
$item['store_name'] = '';
$item['image'] = '';
}
return $item; return $item;
}) })
->toArray(); ->toArray();
@ -81,5 +87,4 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
{ {
return SystemStoreStorage::where($this->searchWhere)->count(); return SystemStoreStorage::where($this->searchWhere)->count();
} }
} }

View File

@ -1,7 +1,13 @@
<?php <?php
namespace process; namespace process;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_order\StoreOrder; 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\user_recharge\UserRecharge;
use Webman\RedisQueue\Redis;
use Workerman\Crontab\Crontab; use Workerman\Crontab\Crontab;
class Task class Task
@ -9,14 +15,48 @@ class Task
public function onWorkerStart() public function onWorkerStart()
{ {
// 每5分钟执行一次 // 每10分钟执行一次
new Crontab('0 */10 * * * *', function(){ new Crontab('0 */10 * * * *', function () {
$where=['paid'=>0]; $where = ['paid' => 0];
$where[]=['create_time','<',time() - 600];// 10分钟前创建的订单 $where[] = ['create_time', '<', time() - 600]; // 10分钟前创建的订单
// 删除10分钟未支付的订单 // 删除10分钟未支付的订单
StoreOrder::where($where)->update(['delete_time'=>time()]); // 删除时间设置为当前时间,即删除 $oid = StoreOrder::where($where)->column('id'); // 删除时间设置为当前时间,即删除
if ($oid) {
StoreOrder::where('id', 'in', $oid)->update(['delete_time' => time()]);
$arr = StoreOrderCartInfo::where('oid', 'in', $oid)->field('store_id,product_id,cart_num')->select();
$updateData = [];
$updateDataTwo = [];
foreach ($arr as $v) {
$updateData[] = [
'id' => $v['branch_product_id'],
'sales' => ['dec', $v['cart_num']]
];
$updateDataTwo[] = [
'id' => $v['product_id'],
'sales' => ['dec', $v['cart_num']]
];
}
(new StoreBranchProduct())->saveAll($updateData);
(new StoreProduct())->saveAll($updateDataTwo);
}
// 获取当前时间
$now = time();
// 计算一个小时前的时间戳
$oneHourAgo = $now - 3600;
//删除未充值的订单
UserRecharge::where('paid', 0)->where('status', 1)->where('create_time', '<', $oneHourAgo)->update(['delete_time' => time()]);
}); });
new Crontab('0 */1 * * * *', function () {
$endTime = time();
// 计算10分钟前的时间戳
$startTime = $endTime - 10 * 60;
$arr = UserRecharge::where('paid', 0)->where('status', 1)->whereBetweenTime('create_time', $startTime, $endTime)->column('order_id');
foreach ($arr as $v) {
Redis::send('task-recharge-query', ['order_id' => $v]);
}
});
} }
} }