diff --git a/.htaccess b/.htaccess new file mode 100644 index 000000000..e69de29bb diff --git a/app/admin/controller/LoginController.php b/app/admin/controller/LoginController.php index 01b37fd05..89c51f54a 100644 --- a/app/admin/controller/LoginController.php +++ b/app/admin/controller/LoginController.php @@ -37,7 +37,8 @@ class LoginController extends BaseAdminController */ public function account() { - $params = (new LoginValidate())->post()->goCheck(); + $params = $this->request->post(); +// $params = (new LoginValidate())->post()->goCheck(); return $this->data((new LoginLogic())->login($params)); } diff --git a/app/api/controller/DataController.php b/app/api/controller/DataController.php new file mode 100644 index 000000000..d3abee45a --- /dev/null +++ b/app/api/controller/DataController.php @@ -0,0 +1,62 @@ +find(); + if ($one) { + //查二级分类 + $two = StoreCategory::where('id', $one['pid'])->find(); + if ($two) { + if ($two['pid'] != 0) { + self::cate_update($cate_id, $two['id'], $store_id, 3); + self::cate_update($two['id'], $two['pid'], $store_id, 2); + self::cate_update($two['pid'], 0, $store_id, 1); + } else { + if ($one['pid'] == 0) { + self::cate_update($one['id'], 0, $store_id, 1); + } else { + self::cate_update($one['id'], $one['pid'], $store_id, 2); + self::cate_update($one['pid'], 0, $store_id, 1); + } + } + } + } + } + + public static function cate_update($cate_id = 0, $pid = 0, $store_id = 0, $level = 1) + { + $find = Db::name('store_product_cate')->where(['store_id' => $store_id, 'cate_id' => $cate_id, 'level' => $level])->find(); + if ($find) { + Db::name('store_product_cate')->where('id', $find['id'])->inc('count', 1)->update(); + } else { + Db::name('store_product_cate')->insert(['pid' => $pid, 'store_id' => $store_id, 'cate_id' => $cate_id, 'count' => 1, 'level' => $level, 'create_time' => time(), 'update_time' => time()]); + } + } + + + public static function show() + { + //处理分类缺失 + $store_id = 23; + $data = StoreBranchProduct::where('store_id', $store_id) + ->field('cate_id,store_id') + ->select()->toArray(); + foreach ($data as $value){ + self::updateGoodsclass($value['cate_id'], $value['store_id']); + } + + d($data); + + + } + +} \ No newline at end of file diff --git a/app/api/controller/LiuController.php b/app/api/controller/LiuController.php new file mode 100644 index 000000000..b70056582 --- /dev/null +++ b/app/api/controller/LiuController.php @@ -0,0 +1,1368 @@ +=', $startTime) + ->where('create_time', '<', $endTime) + ->where('pay_type',$pay_type)->select()->toArray(); + if($pay_type == 18){ + $category_title = 'system_purchase_add'; + $title ='系统增加采购款'; + $mark ='系统增加采购款'; + $filed = 'purchase_funds'; + }else{ + $category_title = 'system_balance_add'; + $title ='系统增加余额'; + $mark ='系统反余额冻结'; + $filed = 'now_money'; + } + + $newArr = []; + foreach ($vipFrozen as $k =>$value){ + $user_funds = User::where('id',$value['user_id'])->value($filed); + $newArr[$k]['uid'] = $value['user_id']; + $newArr[$k]['category'] = $category_title; + $newArr[$k]['link_type'] = 'order'; + $newArr[$k]['link_id'] = $value['order_id']; + $newArr[$k]['amount'] = $value['number']; + $newArr[$k]['before_balance'] =$user_funds; + $newArr[$k]['balance'] = bcadd($user_funds, $value['number'], 2); + $newArr[$k]['create_time'] = date('Y-m-d H:i:s'); + $newArr[$k]['type'] = 'in'; + $newArr[$k]['title'] = $title."{$value['number']}元"; + $newArr[$k]['mark'] = $mark; + } + (new CapitalFlow())->saveAll($newArr); + + } + + + public function test() + { + + + $page_no = (int)$this->request->get('page_no', 1); + $page_size = (int)$this->request->get('page_size', 15); + $params = $this->request->get(); + $params['page_no'] = $page_no > 0 ? $page_no : 1; + $params['page_size'] = $page_size > 0 ? $page_size : 15; + $res = UserLogic::dealDetails($params,20); + $res['page_no'] = $params['page_no']; + $res['page_size'] = $params['page_size']; + return $this->success('ok', $res); + + + + + + +// $res = (new StoreOrderLogic)->refund('PF1719023023405552',180,180); +// d($res); + /** + * 加入确认表 + */ + /* $startTime = 1717171200; // 开始时间 + $endTime = 1719676800; // 结束时间 + //对平台来说 + $data = StoreFinanceFlow:: + whereBetween('create_time', [$startTime, $endTime]) + ->field(' + CONCAT("第", LPAD(YEAR(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 4, "0"), "-", LPAD(WEEK(FROM_UNIXTIME(create_time, "%Y-%m-%d"), 3), 2, "0"), "周(", LPAD(MONTH(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 2, "0"), "月)") as remark_time, + SUM(CASE WHEN financial_pm = 1 THEN number ELSE 0 END) as income, + SUM(CASE WHEN financial_pm = 0 THEN number ELSE 0 END) as money, + store_id + ') + ->where('financial_pm', 0) + ->group('remark_time,store_id') + ->order('remark_time', 'desc') + ->select() + // ->each(function ($item) { + // $item['name'] = '周账单'; + // $item['enter']=bcdiv($item['income'],$item['expenditure'],2); + // return $item; + // }) + ->toArray(); + // foreach ($data as &$v) { + // $v['admin_id'] =$this->adminId; + // } + + (new FinancialTransfers())->saveAll($data); + + + d($data);*/ + + + //反钱 + //读取前3天的值 按照用户id和类型分下 加到对应的钱 + $startTime = strtotime(date('Y-m-d', strtotime('-3 days'))); + $endTime = strtotime(date('Y-m-d')); + + // 使用模型查询 + $result = VipFlow::where('create_time', '>=', $startTime) + ->where('create_time', '<', $endTime) + ->group('user_id, pay_type') + ->field('user_id, pay_type, COUNT(*) as transaction_count, SUM(number) as total_amount') + ->select()->toArray(); + + // 遍历查询结果并分类 现金不进入反的逻辑 + //3余额 18采购款 7微信小程序 9微信条码 13 支付宝条码支付 + $Balance = []; + $Procurement = []; + $WechatMiniPay = []; + $WechatBarcodePay = []; + $AliBarcodePay = []; + foreach ($result as $row) { + $payType = $row['pay_type']; + $userId = $row['user_id']; + $totalAmount = $row['total_amount']; + switch ($payType) { + case 3: + $user_now_money =User::where( + [ + 'id'=>$userId + ] + )->withTrashed()->value('now_money'); + $Balance[] = [ + 'id' => $userId, + 'now_money' => bcadd($user_now_money,$totalAmount,2), + ]; + break; + case 7: + $WechatMiniPay[] = [ + 'id' => $userId, + 'total_amount' => $totalAmount, + ]; + break; + case 9: + $WechatBarcodePay[] = [ + 'id' => $userId, + 'total_amount' => $totalAmount, + ]; + break; + case 13: + $AliBarcodePay[] = [ + 'id' => $userId, + 'total_amount' => $totalAmount, + ]; + break; + case 18: + $purchase_funds_money =User::where( + [ + 'id'=>$userId + ] + )->withTrashed()->value('purchase_funds'); + $Procurement[] = [ + 'id' => $userId, +// '111' => $totalAmount, + 'purchase_funds' => bcadd($purchase_funds_money,$totalAmount,2), + ]; + break; + } +// // 如果分类数组中还没有这个 pay_type,初始化一个空数组 +// if (!isset($classifiedResult[$payType])) { +// $classifiedResult[$payType] = []; +// } +// +// // 将用户信息添加到对应的 pay_type 分类中 +// $classifiedResult[$payType][] = [ +// 'uid' => $userId, +// 'total_amount' => $totalAmount, +// ]; + } + + //入记录表的话查询后便利入 3余额 18采购款 +// if($Balance){ + //记录 +// (new User())->saveAll($Balance); +// $this->dealCapital($startTime,$endTime,3); +// } +// if($Procurement){ +// (new User())->saveAll($Procurement); +// $this->dealCapital($startTime,$endTime,18); +// } + //7微信小程序 9微信条码 13 支付宝条码支付 + d($Balance,$Procurement,$WechatMiniPay,$WechatBarcodePay,$AliBarcodePay); + + + + + $result = array_reduce($result, function ($carry, $item) { + $user_id = $item['user_id']; + $pay_type = $item['pay_type']; + $total_amount = $item['total_amount']; + + if (!isset($carry[$user_id])) { + $carry[$user_id] = []; + } + + if (!isset($carry[$user_id][$pay_type])) { + $carry[$user_id][$pay_type] = [ + 'uid' => $user_id, + 'transaction_count' => 0, + 'total_amount' => 0 + ]; + } + + $carry[$user_id][$pay_type]['transaction_count'] += $item['transaction_count']; + $carry[$user_id][$pay_type]['total_amount'] += $item['total_amount']; + + return $carry; + }, []); + d($result); + + //3余额 17现金 18采购款 7微信小程序 9微信条码 13 支付宝条码支付 + foreach ($result as $value) { + switch ($value['pay_type']) { + + case 3: + echo 2; + break; + + case 7: + case 9: + echo 1; + break; + + case 13: + echo 13; + break; + + case 17: + echo 17; + break; + + case 18: + echo 18; + break; + } + d($value); + } + + d($result); + + + $params = (new \app\api\validate\UserValidate())->post()->goCheck('setPayPassword'); + + //匹配验证码正确 + + if ($params['repassword'] !== $params['password']) + return $this->fail('两次密码不一致'); + + $password = payPassword($params['password']); + + User::where('id', $params['id'])->update(['pay_password' => $password]); + + + d($params); + + + d(password_hash(123456, PASSWORD_BCRYPT)); +// $updateData = []; +// $goods_list = StoreOrderCartInfo::where('oid',473)->select()->toArray(); +// +// foreach ($goods_list as $v) { +// $StoreBranchProduct =StoreBranchProduct::where( +// [ +// 'store_id'=>$v['store_id'], +// 'product_id'=>$v['product_id'], +// ] +// )->withTrashed()->find(); +// $updateData[] = [ +// 'id' => $StoreBranchProduct['id'], +// 'stock' => $StoreBranchProduct['stock']-$v['cart_num'], +// 'sales' => ['inc', $v['cart_num']] +// ]; +// +// } +// +// (new StoreBranchProduct())->saveAll($updateData); +// +// +// d($updateData); + + + $dateRange = $this->request->get('date'); + // 拆分日期范围 + if ($dateRange) { + list($startDate, $endDate) = explode('-', $dateRange); + $startTime = str_replace('/', '-', $startDate); + $endTime = str_replace('/', '-', $endDate); + } else { + $startTime = ''; + } + + if (empty($startTime)) { + $startTime = strtotime(date('Y-m-d')); + $endTime = $startTime + 86400; + } + $where = [ + ['create_time', 'between', [$startTime, $endTime]], + ['store_id', '=', 23] + ]; + + $workbench = WorkbenchLogic::get_product_ranking($where); + return $this->data($workbench); + + + $order = StoreOrder::where('order_id', 'PF1718873590826700')->findOrEmpty(); +// +// $store_id = $order['store_id']; +// $cart_id = $order['cart_id']; +// $uid = $order['uid']; +// if($uid && $cart_id && $store_id){ +// $cart_id = explode(',',$cart_id); +// $productLog = StoreProductLog::where([ +// 'uid'=>$uid +// ])->whereIn('cart_id',$cart_id) +// ->select()->toArray(); +// +// foreach ($productLog as &$value){ +// $value['pay_uid'] = $uid; +// $value['oid'] = $order['id']; +// $cart_info = StoreOrderCartInfo::where([ +// 'uid'=>$uid,'old_cart_id'=>$value['cart_id'],'store_id'=>$store_id +// ])->find(); +// $value['order_num'] = $cart_info['cart_num']??1; +// $value['pay_num'] = $cart_info['cart_num']??1; +// $value['pay_price'] = $cart_info['price']??0; +// $value['cost_price'] = $cart_info['cart_info']['cost']??0; +// $value['update_time'] = time(); +// unset($value['create_time'],$value['delete_time']); +// } +// +// (new StoreProductLog())->saveAll($productLog); +// } + + +// foreach ($cart_id as &$value){ +// +// } + + + d($store_id, $cart_id, $uid); + + + $cart = Cart::create([ + 'uid' => 777, + 'type' => $params['type'] ?? '', + 'product_id' => 12, + 'store_id' => 2 ?? 0, + 'staff_id' => $params['staff_id'] ?? 0, + 'product_attr_unique' => '', + 'cart_num' => 1, + 'is_new' => 1 ?? 0, + ]); + + d($cart, $cart['id']); + + + //处理类型变更 + $order = StoreOrder::where('pay_type', 3)->field('id')->select()->toArray(); + $new = array_column($order, 'id'); +// d($new,$order); + + $dd = CapitalFlow::where('category', 'user_order_pay') + ->whereIn('link_id', $new) + ->select()->toArray(); + + foreach ($dd as $value) { + CapitalFlow::where('id', $value['id'])->update(['category' => 'user_order_balance_pay']); + } + + + d($dd); + + + $categories = ['user_balance_recharge', 'user_order_purchase_pay']; + $query = CapitalFlow::where('uid', 17) + ->whereIn('category', $categories); + $count = $query->count(); + $data = $query + ->page(1, 15) + ->select()->toArray(); + + foreach ($data as &$value) { + if ($value['category'] == 'user_order_purchase_pay') { + $value['order_sn'] = StoreOrder::where('id', $value['link_id'])->value('order_id'); + } elseif ($value['category'] == 'user_balance_recharge') { + $value['order_sn'] = UserRecharge::where('id', $value['link_id'])->value('order_id'); + } + } + + + d($data); + + + // + (new UserValidate())->post()->goCheck('fund'); + $page_no = (int)$this->request->post('page_no', 1); + $page_size = (int)$this->request->post('page_size', 15); + $params = $this->request->post(); + $params['page_no'] = $page_no > 0 ? $page_no : 1; + $params['page_size'] = $page_size > 0 ? $page_size : 15; + + switch ($params['type']) { + case 1: + //采购款明细 + $query = CapitalFlow::where(['uid' => $params['id']]); + $count = $query->count(); + $data = $query + ->page($params['page_no'], $params['page_size']) + ->select()->toArray(); + break; + case 2: + //余额明细 + + $query = StoreFinanceFlow::with(['store']) + ->where([ + 'other_uid' => $params['id'], 'financial_type' => OrderEnum::VIP_ORDER_OBTAINS, + 'financial_pm' => YesNoEnum::YES + ]); + $count = $query->count(); + $data = $query + ->page($params['page_no'], $params['page_size']) + ->select()->toArray(); + + break; + case 3: + //礼品券明细 + $query = UserSign::where(['uid' => $params['id']]); + $count = $query->count(); + $data = $query + ->page($params['page_no'], $params['page_size']) + ->select()->toArray(); + break; + case 4: + //返还金明细 -todo back + $query = VipFlow::with('store')->where(['user_id' => $params['id']]); + $count = $query->count(); + $data = $query + ->page($params['page_no'], $params['page_size']) + ->select()->toArray(); + break; + default: + $data = []; + $count = 0; + } +// d($data,$count); + + $res = [ + 'list' => $data, + 'count' => $count + ]; + +// d($params); + + $res['page_no'] = $params['page_no']; + $res['page_size'] = $params['page_size']; + return $this->success('ok', $res); + + $field = "id,nickname,real_name,sex,avatar,account,mobile,channel,create_time,purchase_funds,user_ship, + label_id,integral"; + $lists = User:: + with(['user_ship', 'user_label']) + ->field($field) + ->page(1, 50) + ->order('id desc') + ->select()->each(function ($data) { + $data['sex_text'] = $data->sex_text; + })->toArray(); + foreach ($lists as &$item) { + //返还金、采购款明细、余额明细、礼品券明细、返还金明细 + $item['channel'] = UserTerminalEnum::getTermInalDesc($item['channel']); + $item['user_address'] = UserAddress::where([ + 'uid' => $item['id'], 'is_default' => YesNoEnum::YES + ])->value('detail'); + if ($item['vip_name'] == null) { + $item['vip_name'] = '普通会员'; + } + if ($item['label_name'] == null) { + $item['label_name'] = '无'; + } + $item['return_money'] = VipFlow:: + where(['user_id' => $item['id'], 'status' => 0]) + ->sum('number') ?? 0; + + + } + + d($lists); + + + $params = [ + 'id' => 460 + ]; + + $order = StoreOrder::with(['user', 'staff', 'product' => function ($query) { + $query->field(['id', 'oid', 'product_id', 'cart_info']); + }])->where($params)->find(); + if (empty($order)) { + throw new \Exception('订单不存在'); + } + $order['pay_time'] = $order['pay_time'] > 0 ? date('Y-m-d H:i:s', $order['pay_time']) : ''; + $order['status_name'] = OrderEnum::getOrderType($order['status']) ?? ''; + $order['refund_status_name'] = OrderEnum::refundStatus($order['refund_status']) ?? ''; + $order['refund_type_name'] = OrderEnum::refundType($order['refund_type']) ?? ''; + $order['pay_type_name'] = PayEnum::getPaySceneDesc($order['pay_type']) ?? ''; + + $detail = StoreOrderCartInfo::where('oid', $order['id'])->find()->toArray(); + $vip = 0; + if (isset($detail['cart_info']['vip']) && $detail['cart_info']['vip'] == 1) { + $vip = 1; + } + $order['vip'] = $vip; + $a = $order->toArray(); + + d($a); + + + $detail = StoreOrderCartInfo::where('oid', 460)->find()->toArray(); + $vip = 0; + if (isset($detail['cart_info']['vip']) && $detail['cart_info']['vip'] == 1) { + $vip = 1; + } + + + d($detail, $vip); + + + PayNotifyLogic::cash_pay('PF1718775365804124'); + d(222); + + + $params = [ + 'verify_code' => '4-00347', + 'store_id' => 5, + 'staff_id' => 2, + ]; + + $res = OrderLogic::writeOff($params); + d($res); + + + return $this->dataLists(new StoreOrderLists()); + + + $order = StoreOrder::where('id', 428)->find(); + + + if ($order['spread_uid'] > 0) { + $oldUser = User::where('id', $order['spread_uid'])->field('purchase_funds,user_ship')->find(); + if ($oldUser && $oldUser['user_ship'] == 1) { + if ($oldUser['purchase_funds'] < $order['pay_price']) { + $order['pay_price'] = $oldUser['purchase_funds']; + } + } + } + d($order['pay_price']); + + + PayNotifyLogic::afterPay($order); + + $order_id = (int)$this->request->get('order_id'); + $lat = $this->request->get('lat', ''); + $lng = $this->request->get('long', ''); + $where = [ + 'id' => $order_id, + 'uid' => $this->userId, + ]; + $url = 'https://' . $this->request->host(true); + $parm = [ + 'lat' => $lat, + 'long' => $lng + ]; + $order = OrderLogic::detail($where, $url, $parm); + if ($order) { + return $this->data($order); + } else { + return $this->fail('订单不存在'); + } + + + $order = StoreOrder::where('id', 392)->find(); + $vipFrozenAmount = 0; + if ($order['uid'] > 0) { + // 结算金额 要支付的钱减去冻结得钱去走后面得逻辑 发得兑换券也要去减去 + $vipFrozenAmount = self::dealFrozenPrice($order['id']); + $order['pay_price'] = bcsub($order['pay_price'], $vipFrozenAmount, 2); + $user_number = bcmul($order['pay_price'], '0.10', 2); + $sing = [ + 'uid' => $order['uid'], + 'order_id' => $order['order_id'], + 'title' => '购买商品获得兑换券', + 'store_id' => $order['store_id'], + 'number' => $user_number, + ]; +// d($sing); +// $user_sing->save($sing); +// User::where('id', $order['uid'])->inc('integral', $user_number)->update(); + } + + d($vipFrozenAmount, $order['pay_price'], $sing); + + + d($order); + if ($order['uid'] > 0) { + // 结算金额 要支付的钱减去冻结得钱去走后面得逻辑 发得兑换券也要去减去 + $vipFrozenAmount = self::dealFrozenPrice($order['id']); + $order['pay_price'] = bcsub($order['pay_price'], $vipFrozenAmount, 2); + //用户下单该用户等级为1得时候才处理冻结金额 + $user = User::where('id', $order['uid'])->find(); + if ($user['user_ship'] == 1) { + self::dealVipAmount($order, $order['pay_type']); + } + $user_number = bcmul($order['pay_price'], '0.10', 2); + $sing = [ + 'uid' => $order['uid'], + 'order_id' => $order['order_id'], + 'title' => '购买商品获得兑换券', + 'store_id' => $order['store_id'], + 'number' => $user_number, + ]; + $user_sing->save($sing); + User::where('id', $order['uid'])->inc('integral', $user_number)->update(); + } + + + // 使用聚合函数直接计算总和 +// $total_vip = StoreOrderCartInfo::where('oid', 334) +// ->sum(DB::raw('cart_info->>"$.vip_frozen_price"')); + +// $total_vip = StoreOrderCartInfo::where('oid', 334) +// ->sum(DB::raw('json_extract(cart_info, "$.vip_frozen_price")')); + + $total_vip = StoreOrderCartInfo::where('oid', 334) + ->field('cart_info->vip_frozen_price as vip_frozen_price') +// ->find() + ->pluck('vip_frozen_price') + ->sum(); + + d($total_vip); + + d($total_vip); + + + // 假设 cart_info 是一个 JSON 字段 + $detail = StoreOrderCartInfo::where('oid', $order['id']) + ->select('cart_info->vip_frozen_price as vip_frozen_price') + ->get() + ->pluck('vip_frozen_price') + ->sum(); + + + $redis = local_redis(1); + + $luaScript = <<= quantity then + redis.call('decrby', product_key, quantity) + return 1 -- 成功 +else + return 0 -- 失败 +end +LUA; + $productKey = 'kk'; + $quantity = 1; // 假设每次抢购一个商品 + + $result = $redis->eval($luaScript, [$productKey, $quantity], 1); + + if ($result == 1) { + d("抢购成功!"); + } else { + d("抢购失败,库存不足。"); + } + + +// Lua脚本,原子操作增加值 + $luaScript = <<eval($luaScript, $args, $numKeys); + + + d("Incremented value for '{$key}': {$result}"); + + + $redis->set('kk', 111); + d(1); + + $cost_all = CapitalFlow:: + where(['category' => 'user_order_balance_pay']) + ->sum('amount'); + + + //查询数据 +// $dd =Db::name('store_cash_finance_flow') + + $startTimeDefault = date('Y-m-d', time()); + $endTimeDefault = date('Y-m-d', strtotime($startTimeDefault) + 86400); + + $data = StoreCashFinanceFlow:: + where(['store_id' => 5])->order('id', 'desc') +// ->whereBetweenTime('create_time',$startTimeDefault,$endTimeDefault) + ->whereDay('create_time') + ->sum('receivable'); + d($data); + +// ->select()->toArray(); +// $sum = array_sum(array_column($data, 'receivable')); +// d($sum); + $cash_today = StoreCashFinanceFlow::where('store_id', 5) + ->whereDay('create_time') + ->where('status', YesNoEnum::YES) + ->fetchSql() + ->sum('receipts'); + d($cash_today); + + + d(StoreFinanceFlow:: + where(['other_uid' => 17, 'type' => 0, 'status' => 0]) + ->sum('number')); + $user = User::where('id', 15)->find()->toArray(); + $data = OrderLogic::cartIdByOrderInfo([1], 0, $user, ['store_id' => 2]); + d($data); + + + $data = StoreBranchProduct::field('id,product_id,cost,purchase')->withTrashed()->select()->toArray(); + + foreach ($data as $value) { + $one = StoreProduct::where('id', $value['product_id'])->field('cost,purchase')->withTrashed() + ->find()->toArray(); + + StoreBranchProduct::where('id', $value['id']) + ->update([ + 'cost' => $one['cost'], + 'purchase' => $one['purchase'], + ]); + } + + + d($data); + + + $template = getenv('SMS_TEMPLATE'); + + $check = (new SmsService())->client(18715753257, $template, 9527); + + + d($check); + + + $cartId = (array)$this->request->post('cart_id', []); + if (empty($cartId)) { + return $this->fail('缺失购物车数据'); + } + $uid = Cart::where('id', $cartId[0])->value('uid'); + d($uid); + + + $params = (new StoreOrderValidate())->post()->goCheck('check'); + $res = (new StoreOrderLogic())->dealSendSms($params); + if ($res) { + return $this->success('发送成功', [], 1, 1); + } else { + return $this->fail('发送失败'); + } + + + $template = getenv('SMS_TEMPLATE'); + d($template); + + $params = $this->request->post(); + $remark = '5_smsPay1'; + $code = Cache::get($remark); + + if ($code && isset($params['code']) && $code !== $params['code']) { + throw new Exception('验证码错误'); + } + + + d($code); + + + //发短信 + $phone = 18715753257; + $code = generateRandomCode(); + + Cache::set($remark, $code, 5 * 60); + d($code); + + $config = [ + // HTTP 请求的超时时间(秒) + 'timeout' => 5.0, + // 默认发送配置 + 'default' => [ + // 网关调用策略,默认:顺序调用 + 'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class, + // 默认可用的发送网关 + 'gateways' => [ + 'aliyun', + ], + ], + // 可用的网关配置 + 'gateways' => [ + 'errorlog' => [ +// 'file' => '/tmp/easy-sms.log', + 'file' => runtime_path() . '/logs/alipay.log', + ], + 'aliyun' => [ + 'access_key_id' => 'LTAI5t7mhH3ij2cNWs1zhPmv', + 'access_key_secret' => 'gqo2wMpvi8h5bDBmCpMje6BaiXvcPu', + 'sign_name' => '里海科技', + ], + ], + ]; + + + try { + $easySms = new EasySms($config); + $res = $easySms->send($phone, [ + 'content' => '您的验证码为:' . $code, + 'template' => 'SMS_263810014', + 'data' => [ + 'code' => $code + ], + ]); + + if ($res && $res['aliyun']['status'] == 'success') { + return true; + } + + } catch (\Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) { + throw new \Exception(json_encode($exception->getExceptions())); +// return false; + } + + + d($res); + + + $user = User::where('id', \request()->userId)->find(); + + +// $wechat = new PayService(1); +// $order = [ +// 'out_trade_no' => time().'', +// 'description' => 'subject-测试', +// 'amount' => [ +// 'total' => 1, +// ], +// ]; +// +// $res = $wechat->wechat->scan($order); + + + $startTime = 1714492800; // 开始时间 + $endTime = 1717171199; // 结束时间 + //对平台来说 + $data = StoreFinanceFlow:: + whereBetween('create_time', [$startTime, $endTime]) + ->field(' + CONCAT("第", LPAD(YEAR(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 4, "0"), "-", LPAD(WEEK(FROM_UNIXTIME(create_time, "%Y-%m-%d"), 3), 2, "0"), "周(", LPAD(MONTH(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 2, "0"), "月)") as remark_time, + SUM(CASE WHEN financial_pm = 1 THEN number ELSE 0 END) as income, + SUM(CASE WHEN financial_pm = 0 THEN number ELSE 0 END) as money, + store_id + ') + ->where('financial_pm', 0) + ->group('remark_time,store_id') + ->order('remark_time', 'desc') + ->select() +// ->each(function ($item) { +// $item['name'] = '周账单'; +// $item['enter']=bcdiv($item['income'],$item['expenditure'],2); +// return $item; +// }) + ->toArray(); + +// foreach ($data as &$v) { +// $v['admin_id'] =$this->adminId; +// } + + (new FinancialTransfers())->saveAll($data); + + + d($data); + + + $data = SystemStore::where('store_money', '>', 0) + ->field('id store_id,name,store_money money') + ->select()->toArray(); + + + $now = new \DateTime(); + $lastMonth = $now->modify('first day of last month'); + foreach ($data as &$v) { + $v['remark_time'] = $lastMonth->format('Y-m'); + } + + (new FinancialTransfers())->saveAll($data); + + + d($data); + + + return StoreFinanceFlow::whereBetweenTime('create_time', ['1714492800', '1717171199']) + ->field(' + CONCAT("第", LPAD(YEAR(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 4, "0"), "-", LPAD(WEEK(FROM_UNIXTIME(create_time, "%Y-%m-%d"), 3), 2, "0"), "周(", LPAD(MONTH(FROM_UNIXTIME(create_time, "%Y-%m-%d")), 2, "0"), "月)") as date, + SUM(CASE WHEN financial_pm = 1 THEN number ELSE 0 END) as income, + SUM(CASE WHEN financial_pm = 0 THEN number ELSE 0 END) as expenditure,store_id + ') +// ->limit($this->limitOffset, $this->limitLength) + ->where('financial_pm', 0) + ->group('date,store_id') + ->order('date', 'desc') + ->select()->each(function ($item) { + $item['name'] = '周账单'; +// $item['enter']=bcdiv($item['income'],$item['expenditure'],2); + return $item; + }) + ->toArray(); + + + $wechat = new PayService(1); + $order = [ + 'out_trade_no' => 'PF1717729550406928', + 'out_refund_no' => time(), + 'amount' => [ + 'refund' => 1, + 'total' => 1, + 'currency' => 'CNY', + ], + // '_action' => 'jsapi', // jsapi 退款,默认 + // '_action' => 'app', // app 退款 + // '_action' => 'combine', // 合单退款 + // '_action' => 'h5', // h5 退款 + // '_action' => 'miniapp', // 小程序退款 + // '_action' => 'native', // native 退款 + + ]; + + $res = $wechat->wechat->transfer($order); + + + //生成条形码 + $generator = new BarcodeGeneratorPNG(); + $barcode = $generator->getBarcode('9-11476', $generator::TYPE_CODE_128); +// 指定保存路径 +// $savePath = 'qr/barcode.png'; + $savePath = 'public/image/barcode/barcode2.png'; +// 保存条形码到文件 + file_put_contents($savePath, $barcode); + +// echo ''; + d(111); + + + $user = new StoreBranchProduct(); + $list = [ + [ + 'id' => 14, + 'stock' => ['dec', 2], + 'sales' => ['inc', 2] +// 'stock' => 1017, + ], + [ + 'id' => 15, + 'stock' => ['dec', 1], + 'sales' => ['inc', 1] +// 'stock' => 10, + ] + ]; +// +// $updateData[] = [ +// 'id' => 14, +//// 'stock' => ['dec', $v['cart_num']] +// 'stock' => 10186 +// ]; + + + $user->withTrashed()->saveAll($list); + + d(1); + + + $code = '8-1717845671'; + $verify_code = createCode($code); + + d($verify_code); + $orderPickupCode = str_pad(rand(0, 99999), 5, '0', STR_PAD_LEFT); + + d($orderPickupCode); + $order_id = getNewOrderId('PF'); + + + d($order_id); + + + /*$order['pay_price'] = 0.01; + $order['store_id'] = 2; + $order['profit'] = "0.00"; + $fees = bcdiv(bcmul($order['pay_price'], '0.02', 2), 1, 2); + + + + $frozen = bcsub($order['profit'] , $fees, 2); + + + $money_limt = SystemStore::where('id', $order['store_id'])->field('paid_deposit,security_deposit')->find(); + $deposit = bcsub($money_limt['security_deposit'], $money_limt['paid_deposit'], 2); + d($fees,$frozen,$deposit); + + + + $a = 'PF1717494034927974-1'; + $check = StoreOrder::where('order_id',$a)->count(); + d($check);*/ + //付款 + $j = '{"id":"12c29662-eba0-532a-832e-12ddc30aa5ac","create_time":"2024-06-06T15:47:20+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"\u652f\u4ed8\u6210\u529f","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":{"mchid":"1654274867","appid":"wxdee751952c8c2027","out_trade_no":"PF1718073229145240","transaction_id":"4200002220202406064425693065","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"\u652f\u4ed8\u6210\u529f","bank_type":"ABC_DEBIT","attach":"wechat_common","success_time":"2024-06-06T15:47:20+08:00","payer":{"openid":"onoIP7c1qgjfIr2ce7GJAAmVGcL0"},"amount":{"total":1,"payer_total":1,"currency":"CNY","payer_currency":"CNY"}},"associated_data":"transaction","nonce":"blQOXyAUGK4K"}}'; + + + //退款 + /* $j = '{"id":"1841a014-0829-5c12-82d0-ab211d6c06e3","create_time":"2024-06-06T09:53:59+08:00","resource_type":"encrypt-resource","event_type":"REFUND.SUCCESS","summary":"\u9000\u6b3e\u6210\u529f","resource":{"original_type":"refund","algorithm":"AEAD_AES_256_GCM","ciphertext":{"mchid":"1654274867","out_trade_no":"PF1717558027664507","transaction_id":"4200002211202406058608104458","out_refund_no":"BO1717638826","refund_id":"50303409732024060648234415101","refund_status":"SUCCESS","success_time":"2024-06-06T09:53:59+08:00","amount":{"total":1,"refund":1,"payer_total":1,"payer_refund":1},"user_received_account":"\u652f\u4ed8\u7528\u6237\u96f6\u94b1"},"associated_data":"refund","nonce":"yteRBBbAwfdE"}}';*/ + + + $result = json_decode($j, true); + $ciphertext = $result['resource']['ciphertext']; + + PayNotifyLogic::handle('wechat_common', $ciphertext['out_trade_no'], $ciphertext); + + + d(1); + + + $order = StoreOrder::where('id', 80)->findOrEmpty(); +// d($order); + + $transaction_id = 12121212121212; + $financeLogic = new StoreFinanceFlowLogic(); + $financeLogic->order = $order; + $financeLogic->user = ['uid' => $order['uid']]; + if ($order->pay_type != 9 || $order->pay_type != 10) { + + $financeLogic->in($transaction_id, $order['pay_price'], OrderEnum::USER_ORDER_PAY); //用户单入账 + //商户应该获得的钱 每个商品的price-ot_price 利润 + if ($order->profit !== "0.00") { + //手续费 + $fees = bcdiv(bcmul($order['pay_price'], '0.02', 2), 1, 2); + $financeLogic->in($transaction_id, $fees, OrderEnum::ORDER_COMMITION, $order['store_id']); //手续费入账 + + $financeLogic->out($transaction_id, $order['profit'], OrderEnum::MERCHANT_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0);//商户获得的 + //冻结金额的 + $frozen = bcsub($order->profit, $fees, 2); + //缴纳齐全了就加商户没有就加到平台 + $money_limt = SystemStore::where('id', $order['store_id'])->field('paid_deposit,security_deposit')->find(); + $deposit = bcsub($money_limt['security_deposit'], $money_limt['paid_deposit'], 2);//剩余额度 + if ($deposit > 0 && $frozen > 0) { + $amount = min($deposit, $frozen); + $financeLogic->in($transaction_id, $amount, OrderEnum::ORDER_MARGIN, $order['store_id'], $order['staff_id']); + } + + //当前商户得冻结金额如果缴纳满足了就加到商户余额中 + + } + $financeLogic->save(); + } + d(1); + + + $result = json_decode($j, true); + $ciphertext = $result['resource']['ciphertext']; + PayNotifyLogic::handle('refund', $ciphertext['out_trade_no'], $ciphertext); + + d($result); + + + if ($result && $result->event_type == 'REFUND.SUCCESS') { + $ciphertext = $result->resource['ciphertext']; + if ($ciphertext['refund_status'] === 'SUCCESS') { + //处理订单 -1判断是退的一单还是拆分的订单 + PayNotifyLogic::handle('refund', $ciphertext['out_trade_no'], $ciphertext); + $app->wechat->success(); + + } + } + + +// d(1511); + + //退款 + $wechat = new PayService(1); + $order = [ + 'out_trade_no' => 'PF1717729550406928', + 'out_refund_no' => time(), + 'amount' => [ + 'refund' => 1, + 'total' => 1, + 'currency' => 'CNY', + ], + // '_action' => 'jsapi', // jsapi 退款,默认 + // '_action' => 'app', // app 退款 + // '_action' => 'combine', // 合单退款 + // '_action' => 'h5', // h5 退款 + // '_action' => 'miniapp', // 小程序退款 + // '_action' => 'native', // native 退款 + + ]; + + $res = $wechat->wechat->refund($order); + d($res); + + //支付 + + $j = '{"id":"89b226d6-e305-5a83-9e7e-29b688cc3b10","create_time":"2024-06-05T11:27:21+08:00","resource_type":"encrypt-resource","event_type":"TRANSACTION.SUCCESS","summary":"\u652f\u4ed8\u6210\u529f","resource":{"original_type":"transaction","algorithm":"AEAD_AES_256_GCM","ciphertext":{"mchid":"1654274867","appid":"wxdee751952c8c2027","out_trade_no":"PF1717556761663487","transaction_id":"4200002211202406058608104458","trade_type":"JSAPI","trade_state":"SUCCESS","trade_state_desc":"\u652f\u4ed8\u6210\u529f","bank_type":"OTHERS","attach":"recharge","success_time":"2024-06-05T11:27:21+08:00","payer":{"openid":"onoIP7TFXN_106JkCMInwOTPCsD4"},"amount":{"total":1,"payer_total":1,"currency":"CNY","payer_currency":"CNY"}},"associated_data":"transaction","nonce":"4i7rmOABdwV3"}}'; + $result = json_decode($j, true); + $ciphertext = $result['resource']['ciphertext']; + + PayNotifyLogic::handle('wechat_common', $ciphertext['out_trade_no'], $ciphertext); + d(1); + + + $all = UserShip::field('id,title,limit')->select()->toArray(); + + $new = $this->getNextArrayByID($all, 1); + d($new); + d($all); + + + \support\Log::info('fasfsaf'); +// Log::info('fdadsdadasd'); + + d(6323); +// d($this->getAccessToken()); + $a = (new WeChatMnpService())->getAccessToken(); +// $a = (new WeChatMnpService())->getUserPhoneNumber('a5c44554ce7caf35d3cf2196da96f7ab735deaf674d639ecb482ce618fa82ee6'); + + d($a); + + + throw new MyBusinessException('缺失经纬度'); + + return $this->success('success', UserLogic::info(8)); + throw new Exception('缺失经纬度'); + $params = [ + 'pay_type' => 1, + 'mer_id' => 1, + ]; + self::$total = 0; + $order = [ + 'add_time' => time(), + 'create_time' => time(), + 'order_id' => getNewOrderId('PF'), + 'total_price' => self::$total,//总价 + 'total_num' => 1,//总数 + 'pay_type' => $params['pay_type'] ?? 0, + 'cart_id' => implode(',', [1, 2, 3]), +// 'delivery_msg'=>' 预计48小时发货 ' + ]; + + $_order = $order; + $_order['deduction_price'] = 0; + $_order['merchant'] = $params['mer_id']; + $_order['uid'] = request()->userId; + $_order['money'] = 0; + $_order['user'] = request()->userId; + $_order['account'] = 0; + $_order['payinfo'] = ''; + $_order['type'] = 0; + $_order['source'] = 0; + $_order['actual'] = $_order['total_price']; +// d($_order); +// if($addressId>0){ +// $address=UserAddress::where(['address_id'=>$addressId,'uid'=>Request()->userId])->find(); +// if($address){ +// $_order['real_name'] = $address['real_name']; +// $_order['user_phone'] = $address['phone']; +// $_order['user_address'] = $address['detail']; +// $_order['address_id'] = $addressId; +// } +// } + + +// if($params['pay_type']==PayEnum::WECHAT_PAY_BARCODE){ +// $_order['source']=1; +// } +// if($params['pay_type']==PayEnum::CASH_PAY){ +// $_order['money']=$_order['total']; +// } + + $order = StoreOrder::create($_order); + + + d($order); + + + } + + + public static function show() + { + //处理分类缺失 + $store_id = 23; + $data = StoreBranchProduct::where('store_id', $store_id) + ->field('cate_id,store_id') + ->select()->toArray(); + foreach ($data as $value) { + self::updateGoodsclass($value['cate_id'], $value['store_id']); + } + + d($data); + + + } + + + public static function dealFrozenPrice($oid) + { + $detail = StoreOrderCartInfo::where('oid', $oid)->select()->toArray(); + $total_vip = 0; + foreach ($detail as $value) { + $total_vip += $value['cart_info']['vip_frozen_price']; + } + return $total_vip; + } + + + public function getAccessToken() + { + // 微信接口地址 + $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxdee751952c8c2027&secret=2c46d77df53cd942a7ff608247ea0ccd"; + + // 发送 HTTP GET 请求 + $response = file_get_contents($url); + + // 解析 JSON 响应 + $responseData = json_decode($response, true); + + // 检查是否成功获取 access_token + if (isset($responseData['access_token'])) { + return $responseData['access_token']; + } else { + // 获取 access_token 失败,可以记录错误信息 + error_log("Failed to get access_token: " . $response); + return null; + } + } + + + function getNextArrayByID($arr, $id) + { + // 遍历数组 + foreach ($arr as $key => $value) { + // 检查当前数组的id是否与传入的id匹配 + if ($value['id'] == $id) { + // 如果当前数组不是最后一个,则返回下一个数组 + if ($key + 1 < count($arr)) { + return $arr[$key + 1]; + } + // 如果当前数组是最后一个,则返回null或空数组 + return null; + } + } + // 如果没有找到匹配的id,则返回null或空数组 + return null; + } + + + public static function updateGoodsclass($cate_id, $store_id = 0, $type = 0) + { + $one = StoreCategory::where('id', $cate_id)->find(); + if ($one) { + //查二级分类 + $two = StoreCategory::where('id', $one['pid'])->find(); + if ($two) { + if ($two['pid'] != 0) { + self::cate_update($cate_id, $two['id'], $store_id, 3); + self::cate_update($two['id'], $two['pid'], $store_id, 2); + self::cate_update($two['pid'], 0, $store_id, 1); + } else { + if ($one['pid'] == 0) { + self::cate_update($one['id'], 0, $store_id, 1); + } else { + self::cate_update($one['id'], $one['pid'], $store_id, 2); + self::cate_update($one['pid'], 0, $store_id, 1); + } + } + } + } + } + + public static function cate_update($cate_id = 0, $pid = 0, $store_id = 0, $level = 1) + { + $find = Db::name('store_product_cate')->where(['store_id' => $store_id, 'cate_id' => $cate_id, 'level' => $level])->find(); + if ($find) { + Db::name('store_product_cate')->where('id', $find['id'])->inc('count', 1)->update(); + } else { + Db::name('store_product_cate')->insert(['pid' => $pid, 'store_id' => $store_id, 'cate_id' => $cate_id, 'count' => 1, 'level' => $level, 'create_time' => time(), 'update_time' => time()]); + } + } + + +} \ No newline at end of file diff --git a/app/api/logic/user/AddressLogic.php b/app/api/logic/user/AddressLogic.php index c2393319b..75f7003c6 100644 --- a/app/api/logic/user/AddressLogic.php +++ b/app/api/logic/user/AddressLogic.php @@ -59,14 +59,15 @@ class AddressLogic extends BaseLogic { Db::startTrans(); try { - if($params['is_default']==1){ + $is_default = $params['is_default']??0; + if($is_default){ UserAddress::where('uid',$params['uid'])->update(['is_default'=>0]); } $data = [ 'real_name' => $params['real_name'], 'phone' => $params['phone'], - 'detail' => $params['detail'], - 'is_default' => $params['is_default'], + 'detail' => $params['detail']??'', + 'is_default' => $params['is_default']??0, 'province' => $params['province'], 'city' => $params['city'], 'area' => $params['area'], @@ -109,4 +110,9 @@ class AddressLogic extends BaseLogic { return UserAddress::field('id,real_name,phone,province,city,area,street,village,brigade,detail,is_default')->where('id',$params['address_id'])->findOrEmpty()->toArray(); } + + public static function info($params): array + { + return UserAddress::field('id,real_name,phone,province,city,area,street,village,brigade,detail,is_default')->where($params)->findOrEmpty()->toArray(); + } } diff --git a/app/store/controller/user/AddressController.php b/app/store/controller/user/AddressController.php index b3a74cf8b..5563dc142 100644 --- a/app/store/controller/user/AddressController.php +++ b/app/store/controller/user/AddressController.php @@ -44,6 +44,6 @@ class AddressController extends BaseAdminController if($uid){ $params = ['uid' => $uid]; } - return $this->success('获取成功',AddressLogic::detail($params)); + return $this->success('获取成功',AddressLogic::info($params)); } } diff --git a/nginx.htaccess b/nginx.htaccess new file mode 100644 index 000000000..e69de29bb