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()
{
$params = (new StoreProductValidate())->post()->goCheck('delete');
StoreProductLogic::delete($params);
StoreBranchProductLogic::delete($params);
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\vip_flow\VipFlow;
use support\Db;
use app\common\lists\ListsSearchInterface;
class UserLists extends BaseAdminDataLists implements ListsExcelInterface
class UserLists extends BaseAdminDataLists implements ListsExcelInterface,ListsSearchInterface
{
/**
* @notes 搜索条件
@ -23,8 +24,11 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface
*/
public function setSearch(): array
{
$allowSearch = ['keyword', 'channel', 'create_time_start', 'create_time_end'];
return array_intersect(array_keys($this->params), $allowSearch);
return [
'=' => ['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
{
$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,
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'])
->limit($this->limitOffset, $this->limitLength)
->field($field)
->order('id desc')
->select()->each(function($data){
->select()
->each(function($data){
$data['sex_text'] = $data->sex_text;
})->toArray();
foreach ($lists as &$item) {
@ -115,21 +106,8 @@ class UserLists extends BaseAdminDataLists implements ListsExcelInterface
*/
public function count(): int
{
$params = $this->params;
$where = [];
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();
return User::where($this->searchWhere)->count();
}

View File

@ -55,6 +55,7 @@ class StoreCashFinanceFlowLogic extends BaseLogic
try {
StoreCashFinanceFlow::where('id', $params['id'])->update([
'file' => $params['file'],
'receipts' => $params['receipts']??0,
'status'=>1,
'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\validate\tools\GenerateTableValidate;
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\model\Config as ModelConfig;
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\user\User;
use app\common\service\pay\PayService;
use app\common\service\PushService;
use app\common\service\wechat\WechatTemplate;
@ -179,10 +183,10 @@ return json($a);
public function push()
{
$name=$this->request->get('name');//用户名
$uid=$this->request->get('uid');//用户id
$type=$this->request->get('type','INDUSTRYMEMBERS');//类型
$a= PushService::push($name, $uid, ['type'=>$type,'msg'=>'支付超时,订单已被取消,请重新提交订单','data'=>['id'=>5]]);
return $this->success('ok',['data'=> $a]);
$name = $this->request->get('name'); //用户名
$uid = $this->request->get('uid'); //用户id
$type = $this->request->get('type', 'INDUSTRYMEMBERS'); //类型
$a = PushService::push($name, $uid, ['type' => $type, 'msg' => '支付超时,订单已被取消,请重新提交订单', 'data' => ['id' => 5]]);
return $this->success('ok', ['data' => $a]);
}
}

View File

@ -65,20 +65,23 @@ 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');
if (in_array($user_ship, [4, 5, 6, 7])) {
$off_activity=1;
$field = 'product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id';
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->off_activity=$off_activity;
$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']])
->field('product_id,image,price,cost,store_name,unit,delete_time,vip_price')
->field($field)
->withTrashed()
->find();
if ($find) {
if($off_activity==1){
$this->activity_price = bcadd(bcmul($find['cost'],$item['cart_num'], 2), $this->activity_price, 2);
if ($off_activity == 1) {
$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);
$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()
{
$data= [
$data = [
'off_activity' => $this->off_activity,
'total_price' => $this->total_price,
'msg' => '',
'pay_price' => $this->total_price
];
if($this->user_ship==0){
$data['msg']='您已选购满500元支付成功后即可获得'.bcmul($this->total_price,0.1,2).'元品牌礼品兑换券,可到线下门店兑换礼品。';
if ($this->user_ship == 0) {
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
$data['pay_price']=$this->activity_price;
if($this->activity_price<500){
if($this->user_ship==0){
$data['msg']='还差'.bcsub(500,$this->activity_price,2).'即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。';
if ($this->off_activity == 1) { //1
$data['pay_price'] = $this->activity_price;
if ($data['pay_price'] < 500) {
if ($this->user_ship == 0) {
$data['msg'] = '还差' . bcsub(500, $this->activity_price, 2) . '即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。';
}
}else{
if($this->user_ship==0){
$data['msg']= '您已选购满500元支付成功后即可获得'.bcmul($this->activity_price,0.1,2).'元品牌礼品兑换券,可到线下门店兑换礼品。';
} else {
if ($this->user_ship == 0) {
$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_product\StoreProduct;
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']){
$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();

View File

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

View File

@ -71,7 +71,7 @@ class OrderLogic extends BaseLogic
self::setError('购物车为空');
return false;
}
try {
// try {
self::$total_price = 0;
self::$pay_price = 0;
self::$cost = 0; //成本由采购价替代原成本为门店零售价
@ -84,13 +84,13 @@ class OrderLogic extends BaseLogic
self::$fresh_price = 0; //生鲜金额
/** 计算价格 */
$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) {
$find = StoreBranchProduct::where(['product_id' => $v['product_id'], 'store_id' => $params['store_id']])->field($field)->find();
if (!$find) {
// unset($cart_select[$k]);
// 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();
if ($find) {
$cate_id = StoreCategory::where('id', $find['cate_id'])->value('pid');
@ -108,11 +108,14 @@ 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, 5, 6, 7]))) {
if ($off_activity == 1 || ($user != null && in_array($user['user_ship'], [4, 6, 7]))) {
$price = $find['cost'];
} else {
$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]['cost'] = $find['cost'];
$cart_select[$k]['vip'] = 0;
@ -133,16 +136,17 @@ class OrderLogic extends BaseLogic
$cart_select[$k]['cart_num'] = $v['cart_num'];
$cart_select[$k]['verify_code'] = $params['verify_code'] ?? '';
$cart_select[$k]['vip_frozen_price'] = 0;
$cart_select[$k]['store_info'] = $find['store_info'];
//会员待返回金额
if ($user && $off_activity == 0) {
if ($user['user_ship'] == 4) {
//商户
$cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['store_price'], 2);
} else {
//其他会员
$cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['vip_price'], 2);
}
}
// if ($user && $off_activity == 0) {
// if ($user['user_ship'] == 4) {
// //商户
// $cart_select[$k]['vip_frozen_price'] = bcsub($cart_select[$k]['pay_price'], $cart_select[$k]['store_price'], 2);
// } else {
// //其他会员
// $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'] );
$cartInfo = $cart_select[$k];
$cartInfo['name'] = $find['store_name'];
@ -159,7 +163,7 @@ class OrderLogic extends BaseLogic
self::$cost = bcadd(self::$cost, $cart_select[$k]['purchase'], 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::$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) {
self::$fresh_price = bcadd(self::$fresh_price, $cart_select[$k]['pay_price'], 2);
@ -245,10 +249,10 @@ class OrderLogic extends BaseLogic
}
}
}
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
}
// } catch (\Exception $e) {
// self::setError($e->getMessage());
// return false;
// }
return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store']];
}
@ -276,15 +280,15 @@ class OrderLogic extends BaseLogic
$_order['uid'] = $uid;
$_order['spread_uid'] = $params['spread_uid'] ?? 0;
$_order['real_name'] = $user['real_name'] ?? '';
$_order['mobile'] = $user['mobile'] ?? '';
$_order['user_phone'] = $user['mobile'] ?? '';
$_order['pay_type'] = $orderInfo['order']['pay_type'];
$_order['verify_code'] = $verify_code;
$_order['reservation_time'] = null;
$_order['reservation'] = $params['reservation'] ?? 0; //是否需要预约
if (isset($params['reservation_time']) && $params['reservation_time']) {
$_order['reservation_time'] = $params['reservation_time'];
$_order['reservation'] = YesNoEnum::YES;
}
$_order['reservation'] = 0;$params['reservation'] ?? 0; //是否需要预约
// if (isset($params['reservation_time']) && $params['reservation_time']) {
// $_order['reservation_time'] = $params['reservation_time'];
// $_order['reservation'] = YesNoEnum::YES;
// }
if ($addressId > 0 && $uid > 0) {
$address = UserAddress::where(['id' => $addressId, 'uid' => $uid])->find();
if ($address) {
@ -502,6 +506,11 @@ class OrderLogic extends BaseLogic
if ($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']) {
$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) {
case 'user_balance_recharge':
return "用户充值{$amount}";
return "用户增加{$amount}";
case 'user_order_purchase_pay':
return "用户采购款支付{$amount}";
case 'store_margin':
@ -172,7 +172,7 @@ class CapitalFlowLogic extends BaseLogic
case 'system_balance_reduce':
return "系统减少余额{$amount}";
case 'user_balance_recharge_refund':
return "用户充值退还{$amount}";
return "用户减少{$amount}";
default:
return "订单支付{$amount}";
}

View File

@ -169,29 +169,29 @@ class CommissionLogic extends BaseLogic
$fees = bcmul($pay_price, $userRate, 2);
if ($fees > 0) {
//记录用户余额收入
if ($uid) {
if(in_array($enum,[14,15])&&$userRate==0.05){
$purchase_funds=User::where('id', $uid)->value('purchase_funds');
if($purchase_funds>0){
$fees_two = bcmul($purchase_funds, $userRate, 2);
if($fees_two<$fees){
$fees=$fees_two;
}
}
}
if($enum==12&&$userRate==0.07){
$purchase_funds=User::where('id', $uid)->value('purchase_funds');
if($purchase_funds>0){
$fees_two = bcmul($purchase_funds, $userRate, 2);
if($fees_two<$fees){
$fees=$fees_two;
}
}
}
$GiveUser = User::where('id', $order['uid'])->find();
$capitalFlowDao = new CapitalFlowLogic($GiveUser);
$capitalFlowDao->userIncome('system_balance_add', 'order', $order['id'], $fees);
}
// if ($uid) {
// if(in_array($enum,[14,15])&&$userRate==0.05){
// $purchase_funds=User::where('id', $uid)->value('purchase_funds');
// if($purchase_funds>0){
// $fees_two = bcmul($purchase_funds, $userRate, 2);
// if($fees_two<$fees){
// $fees=$fees_two;
// }
// }
// }
// if($enum==12&&$userRate==0.07){
// $purchase_funds=User::where('id', $uid)->value('purchase_funds');
// if($purchase_funds>0){
// $fees_two = bcmul($purchase_funds, $userRate, 2);
// if($fees_two<$fees){
// $fees=$fees_two;
// }
// }
// }
// $GiveUser = User::where('id', $order['uid'])->find();
// $capitalFlowDao = new CapitalFlowLogic($GiveUser);
// $capitalFlowDao->userIncome('system_balance_add', 'order', $order['id'], $fees);
// }
$financeLogic->user['uid'] = $order['uid'];
$financeLogic->other_arr['vip_uid'] = $uid;
$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->userExpense('user_order_balance_pay', 'order', $order['id'], $order['pay_price'], '', 0, $order['store_id']);
self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
// self::descStock($order['id']);
}
self::afterPay($order);
if ($order['reservation'] == 1 && in_array($order['shipping_type'], [1, 2])) {
$checkArr = [
@ -278,9 +276,7 @@ class PayNotifyLogic extends BaseLogic
self::afterPay($order, $extra['transaction_id']);
// self::addUserSing($order);
self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
if (!empty($extra['payer']['openid']) && $order->pay_type == 7) {
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;
$user = User::where('id', $uid)->findOrEmpty();
//check store_id
if(empty($user->store_id)){
if($user->store_id==0){
$user->store_id = $order['store_id'];
}
@ -499,10 +495,6 @@ class PayNotifyLogic extends BaseLogic
$cashFlowLogic->insert($order['store_id'], $order['pay_price']);
self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
if ($order && $order['store_id'] && $order['reservation'] !=1) {
$params = [
'verify_code' => $order['verify_code'],
@ -546,9 +538,6 @@ class PayNotifyLogic extends BaseLogic
UserProductStorageLogic::add($order);
}
self::dealProductLog($order);
if ($order['shipping_type'] == 3) {
self::descStock($order['id']);
}
// if ($order->pay_type == 9) {
// $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

View File

@ -134,7 +134,8 @@ class StoreFinanceFlowLogic extends BaseLogic
*/
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();
$capitalFlowDao = new CapitalFlowLogic($find);
$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();
foreach( $list as $k=>$v){
if($v['name']=='level_one'){
$level_one = $v['value'];
$level_one = bcadd($v['value'],0,2);
}elseif($v['name']=='level_two'){
$level_two = $v['value'];
$level_two = bcadd($v['value'],0,2);
}elseif($v['name']=='level_three' ){
$level_three = $v['value'];
$level_three = bcadd($v['value'],0,2);
}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) {
case $level_one:
$total_vip = 249;
@ -62,7 +62,7 @@ class UserSignLogic extends BaseLogic
return false;
}
$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);
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_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\user\User;
use app\common\service\pay\PayService;
@ -207,10 +208,15 @@ class StoreOrderLogic extends BaseLogic
'stock' => $stock-$v['cart_num'],
'sales' => ['inc', $v['cart_num']]
];
$updateDataTwo[] = [
'id' => $v['product_id'],
'sales' => ['inc', $v['cart_num']]
];
}
(new StoreOrderCartInfo())->saveAll($goods_list);
$where = ['is_pay' => 0];
(new StoreBranchProduct())->saveAll($updateData);
(new StoreProduct())->saveAll($updateDataTwo);
Cart::whereIn('id', $cartId)->where($where)->update(['is_pay' => 1]);
Db::commit();
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
{
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
{
$this->searchWhere[] = ['store_id','=',$this->adminInfo['store_id']];//只显示当前门店的入库记录
if($this->request->__get('status')==-1){
$this->searchWhere[] = ['status','>=',0];
$this->searchWhere[] = ['store_id', '=', $this->adminInfo['store_id']]; //只显示当前门店的入库记录
if ($this->request->__get('status') == -1) {
$this->searchWhere[] = ['status', '>=', 0];
}
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)
->order(['status' => 'aes'])
->select()->each(function ($item) {
@ -62,9 +62,15 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
} else {
$item['staff_name'] = '无';
}
$find=StoreProduct::where('id',$item['product_id'])->field('store_name,image')->find();
$item['store_name']=$find['store_name'];
$item['image']=$find['image'];
$find = StoreProduct::where('id', $item['product_id'])->field('store_name,image')->find();
if ($find) {
$item['store_name'] = $find['store_name'];
$item['image'] = $find['image'];
} else {
$item['store_name'] = '';
$item['image'] = '';
}
return $item;
})
->toArray();
@ -81,5 +87,4 @@ class SystemStoreStorageLists extends BaseAdminDataLists implements ListsSearchI
{
return SystemStoreStorage::where($this->searchWhere)->count();
}
}

View File

@ -1,7 +1,13 @@
<?php
namespace process;
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\user_recharge\UserRecharge;
use Webman\RedisQueue\Redis;
use Workerman\Crontab\Crontab;
class Task
@ -9,14 +15,48 @@ class Task
public function onWorkerStart()
{
// 每5分钟执行一次
new Crontab('0 */10 * * * *', function(){
$where=['paid'=>0];
$where[]=['create_time','<',time() - 600];// 10分钟前创建的订单
// 每10分钟执行一次
new Crontab('0 */10 * * * *', function () {
$where = ['paid' => 0];
$where[] = ['create_time', '<', time() - 600]; // 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]);
}
});
}
}
}