multi-store/app/api/controller/IndexController.php
mkm adfc293568 test(api): 测试产品接口
- 在 wps_product 方法中添加了测试代码,直接返回接收到的数据
- 用于验证接口是否正确接收到产品信息
2024-11-29 20:12:42 +08:00

318 lines
11 KiB
PHP

<?php
namespace app\api\controller;
use app\admin\logic\beforehand_order\BeforehandOrderLogic;
use app\admin\logic\store_branch_product\StoreBranchProductLogic;
use app\common\logic\StoreFinanceFlowLogic;
use app\admin\logic\store_product\StoreProductLogic;
use app\admin\validate\tools\GenerateTableValidate;
use app\admin\logic\tools\GeneratorLogic;
use app\api\lists\purchase_product_offer\PurchaseProductOfferListsTwo;
use app\api\logic\order\OrderLogic as OrderOrderLogic;
use app\common\cache\ExportCache;
use app\common\logic\PayNotifyLogic;
use app\common\logic\store_order\StoreOrderLogic;
use app\common\model\beforehand_order_record\BeforehandOrderRecord;
use app\common\model\Config as ModelConfig;
use app\common\model\purchase_product_offer\PurchaseProductOffer;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_finance_flow\StoreFinanceFlow;
use app\common\model\store_order\StoreOrder;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use app\common\model\system_store\SystemStore;
use app\common\model\system_store_storage\SystemStoreStorage;
use app\common\model\user\User;
use app\common\model\warehouse_product\WarehouseProduct;
use app\common\service\Curl;
use app\common\service\pay\PayService;
use app\common\service\PushService;
use app\common\service\wechat\WechatTemplate;
use app\common\service\xpyun\XpsdkPrintApi;
use app\statistics\logic\OrderLogic;
use Exception;
use Overtrue\EasySms\EasySms;
use Overtrue\EasySms\Exceptions\NoGatewayAvailableException;
use support\Cache;
use think\facade\Db;
use Webman\Config;
use support\Log;
use Yansongda\Pay\Exception\InvalidSignException;
use Monolog\Handler\RotatingFileHandler;
use Webman\RedisQueue\Redis;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpWord\TemplateProcessor;
use PhpOffice\PhpWord\Settings;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Shared\Converter;
use PhpOffice\PhpWord\Style\Font;
class IndexController extends BaseApiController
{
public $notNeedLogin = ['index', 'app_update', 'express_list', 'province', 'city', 'area', 'street', 'village', 'brigade', 'config', 'push', 'purchase_product_offer','wps_product'];
public function index()
{
d(1);
$arr = Db::name('ceshi_copy')->select();
foreach ($arr as $k => $v) {
$data = [
'cost' => $v['cost'],
'purchase' => $v['purchase'],
'price' => $v['price'],
'vip_price' => $v['price'],
];
$rose = 0;
//零售-供货
$rose_price = bcsub($v['price'], $v['purchase'], 2);
if ($rose_price > 0) {
//利润除于零售
$price_div = bcdiv($rose_price, $v['price'], 2);
$rose = bcmul($price_div, 100, 2);
}
$data['rose'] = $rose;
StoreProduct::update($data, ['id' => $v['product_id']]);
//修改
StoreBranchProduct::where('product_id', $v['product_id'])->whereNotIn('store_id', [17, 18])->update([
'price' => $v['price'],
'vip_price' => $v['price'],
'cost' => $v['cost'],
'purchase' => $v['purchase'],
'rose' => $rose
]);
}
d(11);
$pay_price = StoreOrder::where('store_id', 3)->where('id', '>=', 1867)->where('id', '<=', 4826)->where('paid', 1)->sum('pay_price');
$refund_price = StoreOrder::where('store_id', 3)->where('id', '>=', 1867)->where('id', '<=', 4826)->where('paid', 1)->sum('refund_price');
d($pay_price, $refund_price);
$arr = StoreOrder::where('store_id', 3)->where('id', '>', 551)->where('paid', 1)->field('id,pay_price,deduction_price,refund_price')->select()->toArray();
$data = [];
foreach ($arr as $k => $v) {
$total_price = StoreOrderCartInfo::where('oid', $v['id'])->sum('total_price');
if ($total_price != $v['pay_price']) {
$s = $v;
$s['total_price'] = $total_price;
$data[] = $s;
}
}
d($data);
$url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b538e44b-940b-445f-afe0-97320942d959';
$arr = ["msgtype" => "template_card", "template_card" => [
'card_type' => 'text_notice',
'main_title' => [
'title' => '测试标题',
'desc' => '分单'
],
'card_action' => [
'type' => 1,
'url' => 'https://admin-multi-store.lihaink.cn/admin'
]
]];
$a = (new Curl())->postJson($url, json_encode($arr, true));
d($a);
return json(1);
$financeFlow = new StoreFinanceFlow();
$financeFlowLogic = new StoreFinanceFlowLogic();
$select_1 = $financeFlow->where('id', 16197)->select();
foreach ($select_1 as $k => $v) {
if ($v['other_uid'] > 0) {
$financeFlowLogic->updateStatusUser($v['id'], $v['other_uid'], $v['number'], $v['order_id']);
}
}
}
/**
* @notes 下载文件
*/
public function download()
{
$params = (new GenerateTableValidate())->goCheck('download');
$result = GeneratorLogic::download($params['file']);
if (false === $result) {
return $this->fail(GeneratorLogic::getError() ?: '下载失败');
}
return response()->download($result, 'webman-curd.zip');
}
/**
* @notes 获取app更新信息
*/
public function app_update()
{
$find = Db::name('app_update')->where('type', 2)->order('id', 'desc')->findOrEmpty();
return $this->success('ok', $find);
}
/**
* @notes 获取省列表
*/
public function province()
{
$list = Db::name('geo_province')->select()->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取市列表
*/
public function city()
{
$province_code = $this->request->get('province_code');
$list = Db::name('geo_city')->where('province_code', $province_code)->select()?->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取区列表
*/
public function area()
{
$city_code = $this->request->get('city_code');
$list = Db::name('geo_area')->where('city_code', $city_code)->select()?->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取街道列表
*/
public function street()
{
$area_code = $this->request->get('area_code');
$list = Db::name('geo_street')->where('area_code', $area_code)->select()?->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取村列表
*/
public function village()
{
$area_code = $this->request->get('street_code');
$list = Db::name('geo_village')->where('street_code', $area_code)->select()?->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取队列表
*/
public function brigade()
{
$list = Db::name('geo_brigade')->select()?->toArray();
return $this->success('ok', $list);
}
/**
* @notes 获取队列表
*/
public function config()
{
//处理返回最近的店铺
$params = $this->request->get();
if ((isset($params['lat']) && $params['lat'] != '') && (isset($params['long']) && $params['long'] != '')) {
$latitude = $params['lat'];
$longitude = $params['long'];
// 计算距离的SQL表达式
$distanceExpr = "6371 * 2 * ASIN(SQRT(POWER(SIN(({$latitude} - abs(latitude)) * pi()/180 / 2), 2) + COS({$latitude} * pi()/180) * COS(abs(latitude) * pi()/180) * POWER(SIN(({$longitude} - longitude) * pi()/180 / 2), 2)))";
$find = SystemStore::field("id, name,abbreviation, {$distanceExpr} AS distance")
->where('is_show', '=', 1)
->where('latitude', '<>', '')
->where('longitude', '<>', '')
->order('distance', 'asc') // 根据距离排序
->find();
if (!$find) {
$store_id = getenv('STORE_ID') ?? 1;
$find = SystemStore::where('id', $store_id)->find();
}
} else {
$store_id = getenv('STORE_ID') ?? 1;
$find = SystemStore::where('id', $store_id)->find();
}
$list = [
'id' => $find['id'],
'store_name' => $find['name'],
'abbreviation' => $find['abbreviation'],
];
return $this->success('ok', $list);
}
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]);
}
/**
* @notes 采购商品下载
*/
public function purchase_product_offer()
{
$date = $this->request->get('date');
if ($date) {
$this->request->setGet(['date' => $date, 'export' => 2]);
$lists = new PurchaseProductOfferListsTwo();
$exportDownloadUrl = $lists->createExcel($lists->setExcelFields(), $lists->lists());
$fileKey = explode('?file=', $exportDownloadUrl)[1];
//通过文件缓存的key获取文件储存的路径
$exportCache = new ExportCache();
$fileInfo = $exportCache->getFile($fileKey);
if (empty($fileInfo)) {
return $this->fail('下载文件不存在');
}
//下载前删除缓存
Cache::delete($fileKey);
return response()->download($fileInfo['src'] . $fileInfo['name'], $fileInfo['name']);
} else {
return $this->fail('时间不能为空');
}
}
/**
* @notes 采购商品下载
*/
public function wps_product()
{
$data = $this->request->post();
return $this->success('ok',$data);
if ($data) {
$data=json_decode($data,true);
if ($data['product_id'] > 0) {
$find = Db::name('wps_product')->where('product_id', $data['product_id'])->find();
$arr = [];
if ($data['purchase'] > 0) {
$arr['purchase'] = $data['purchase'];
}
if ($data['cost'] > 0) {
$arr['cost'] = $data['cost'];
}
if ($data['price'] > 0) {
$arr['price'] = $data['price'];
}
if ($find) {
Db::name('wps_product')->where('id', $find['id'])->update($arr);
} else {
$arr['product_id']=$data['product_id'];
$arr['name']=$data['name'];
Db::name('wps_product')->insert($arr);
}
}
return $this->success('ok');
} else {
return $this->fail('时间不能为空');
}
}
}