<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shiliu2002的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shiliu2002</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shiliu2002]]></copyright><item><title><![CDATA[thinkphp6使用workman gateway_worker的一次记录]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/123898834</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/123898834</guid><author>shiliu2002</author><pubDate>Fri, 01 Apr 2022 15:20:56 +0800</pubDate><description><![CDATA[客户要做一个小程序聊天的功能，初步考虑用workman。特此记录一下折腾的过程，建议从Linux安装使用，用宝塔最好。
1、首先是安装workerman
composer require topthink/think-worker

这里注意：如果之前单独安装过workerman，这里可能会安装报错。因为安装think-worker的时候，就会安装上workman了。
2、其次是安装GatewayWorker
可以使用下面的命令安装
composer require workerman/gateway-wo]]></description><category></category></item><item><title><![CDATA[layui.extend的一点知识 第三方模块base 路径]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/123030780</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/123030780</guid><author>shiliu2002</author><pubDate>Sun, 20 Feb 2022 14:42:10 +0800</pubDate><description><![CDATA[//config的设置是全局的
layui.config({
  base: '/res/js/' //假设这是你存放拓展模块的根目录
}).extend({ //设定模块别名
  mymod: 'mymod' //如果 mymod.js 是在根目录，也可以不用设定别名
  ,mod1: 'admin/mod1' //相对于上述 base 目录的子目录
});
 
//你也可以忽略 base 设定的根目录，直接在 extend 指定路径（主要：该功能为 layui 2.2.0 新增）
layui.exten]]></description><category></category></item><item><title><![CDATA[草莓开发框架thinkphp6学习：api接口开发返回值的几种方式]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/119710044</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/119710044</guid><author>shiliu2002</author><pubDate>Sun, 15 Aug 2021 09:58:12 +0800</pubDate><description><![CDATA[$this-&gt;success('订单创建成功', $param['order_no']);

上面这种方式会返回：
{
“code”: 200,
“mark”: 200,
“message”: “订单创建成功”,
“time”: 1628992261,
“motto”: “#”,
“data”: “37062276361628992261”,
“total”: 0
}
注意看message和data。
data就是success里后面那个参数。也可以是数组。

...]]></description><category></category></item><item><title><![CDATA[草莓开发框架：如何解决header的跨域问题？Request header field token is not allowed by Access-Control-Allow-Headers]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/119404775</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/119404775</guid><author>shiliu2002</author><pubDate>Thu, 05 Aug 2021 06:55:54 +0800</pubDate><description><![CDATA[前端在header中传递了token，导致提示header跨域，可以在nginx中做如下配置：
add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Credentials’ ‘true’;
add_header ‘Access-Control-Allow-Methods’ ‘POST, GET, PUT, OPTIONS, DELETE’;
add_header ‘Access-Control-Allo]]></description><category></category></item><item><title><![CDATA[Tradingview使用心得和使用教程 k线图的好工具]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/118874925</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/118874925</guid><author>shiliu2002</author><pubDate>Sun, 18 Jul 2021 11:35:28 +0800</pubDate><description><![CDATA[Tradingview是用来开发k线图的好工具，功能非常强大。此文章记录一些心得和坑。TradingView允许您在自己的网站上使用自己的图表库，并拥有自己的数据源。
1、vue集成jsapi和传统的html集成jsapi，代码逻辑上是不一样的。
2、如果开启了preset:mobile，就算打开了一些参数，比如头部的工具条，但是界面UI上也是不生效的！！这一点尤其注意！折腾了我4个多小时不断尝试才知道是因为preset打开了mobile模式。默认preset不是mobile的模式。是pc模式。
3、JSA]]></description><category></category></item><item><title><![CDATA[thinkphp6 select之后如何处理结果集？如何给结果集增加返回信息？来自草莓开发框架]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/118034053</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/118034053</guid><author>shiliu2002</author><pubDate>Fri, 18 Jun 2021 21:23:58 +0800</pubDate><description><![CDATA[几个关键点：select之后toArray()。然后用foreach。
 -&gt;order('order_id','desc')-&gt;page($page,$limit)-&gt;select()-&gt;toArray();
		   
		   
	   foreach ($data as $elt =&gt; $item) {


$data[$elt]["weight"] = Db::name('dh_school')-&gt;where('schoolname', $item['schoo]]></description><category></category></item><item><title><![CDATA[草莓开发框架TP6版本商城开发的几个逻辑记录]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/116717212</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/116717212</guid><author>shiliu2002</author><pubDate>Fri, 18 Jun 2021 21:20:01 +0800</pubDate><description><![CDATA[用户地址表存了具体的省市区的中文名字和id：


]]></description><category></category></item><item><title><![CDATA[记录一次草莓开发框架TP6版本的微信和小程序支付插件的学习过程]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/116694394</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/116694394</guid><author>shiliu2002</author><pubDate>Wed, 12 May 2021 09:51:11 +0800</pubDate><description><![CDATA[首先安装支付插件，然后在支付插件里面可以配置appid apikey以及回调地址等信息。
前端接口具体的支付api接口代码，用到了       $payres = hook('payhook', ['type'=&gt;'wx_xcx','order'=&gt;$order]); 去调用支付插件里的信息。
具体的前端接口例子的代码在：app/api/controller/Pay.php这个文件里能看到。
具体的回调地址的代码在：app/api/controller/PayNotify.php 这个文件里能看]]></description><category></category></item><item><title><![CDATA[草莓开发框架研究学习：购物车接口里的价格逻辑]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/116369894</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/116369894</guid><author>shiliu2002</author><pubDate>Mon, 03 May 2021 08:16:41 +0800</pubDate><description><![CDATA[草莓开发框架里有个热猫商城的商城插件，研究了一些逻辑，特此记录，避免遗忘。
购物车里的价格直接显示的是商品表或者商品规格表里的价格，如果表里的价格变了，则购物车里的价格也会变化。
价格不是存在购物车表里的。这一点要注意。
表结构如下：


...]]></description><category></category></item><item><title><![CDATA[草莓开发框架：如何开发商城系统里的确认订单接口？]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/116231100</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/116231100</guid><author>shiliu2002</author><pubDate>Wed, 28 Apr 2021 12:51:24 +0800</pubDate><description><![CDATA[说明
最近在给客户开发一个小型的商城，记录一些开发的思考过程
前端场景
在购物车画面，点击结算按钮，会出来一个确认订单的画面。上面有收货地址。下面是商品列表，物流，优惠券等信息。
思考的过程
因为是小型的商城，牵扯不到优惠券和运费，因此考虑在确认订单画面将购物车里的信息直接带过来。但是这样做会有个问题，如果购物车里的商品已经被别人买了，库存已经是0了，这样就会造成超卖的现象。所以这种方式不合适。
第二种方式就是常规的方式，传递商品信息，然后有一个oder/pre这样的计算订单的接口，在pre接口里处理商品的]]></description><category></category></item><item><title><![CDATA[php中的if条件表达式 什么是全等运算符？]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/114209139</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/114209139</guid><author>shiliu2002</author><pubDate>Sun, 28 Feb 2021 09:52:49 +0800</pubDate><description><![CDATA[PHP 支持： &gt;（大于），&gt;=（大于等于），==（等于），!=（不等于），&lt;（小于），&lt;= (小于等于)。PHP 还支持全等运算符 =（值和类型均相同）和非全等运算符 !（值或者类型不同）。这些表达式都是在条件判断语句，比如，if 语句中最常用的。
所以：
不等于其实应该用：!= 注意是一个等于号。
等于应该用==两个等于号。
三个等于号的意思是值和类型均相同。
这些经常会被初学者搞错。
欢迎来我直播间免费学习。

...]]></description><category></category></item><item><title><![CDATA[草莓开发框架：一键CRUD生成省市区选择功能]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/112427579</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/112427579</guid><author>shiliu2002</author><pubDate>Sun, 10 Jan 2021 14:16:18 +0800</pubDate><description><![CDATA[效果如图：

在设计数据表字段的时候，只要带着city结尾的字段。一键crud就会生成省市区的效果。
提交后存入数据库是这样子的数据：山东省/济南市/历下区.
快下载草莓开发框架tp6版本的试试吧。

...]]></description><category></category></item><item><title><![CDATA[php如何公用view层的编辑和添加视图？]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/111772480</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/111772480</guid><author>shiliu2002</author><pubDate>Sun, 27 Dec 2020 08:51:36 +0800</pubDate><description><![CDATA[view很多都是通用的。
但是现在add和edit分成了两个view。
我看有些系统只用了一个edit.html，然后通过url里的参数来区分。
比如：add.html?ids= 这就是添加。edit.html?id=11?ids= 这种带id的就是编辑。
虽然看起来是add.html，edit.html，但对应的view都是edit.html.
控制层代码add用的是 return $this-&gt;edit();
edit方法用的是 return $this-&gt;fetch(‘edit’);。
都]]></description><category></category></item><item><title><![CDATA[记录一次在列表里显示关联表对应的名称的过程]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/111118043</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/111118043</guid><author>shiliu2002</author><pubDate>Sun, 13 Dec 2020 15:11:08 +0800</pubDate><description><![CDATA[之前在列表里显示的是id。如图：杂志分类这里之前显示的是id，需要修改成显示杂志分类关联表的cat_name字段的值。

在返回的数组里加上：
 $list[$k]['classify_id']  = Db::name('category')-&gt;where('id',$v['classify_id'])-&gt;value('cate_name');

代表的意思：
thinkphp获取数据库中某一列数据的某个字段的值使用value()方法。where是查询条件。
后台和接口都有相同的数据返回，定义了]]></description><category></category></item><item><title><![CDATA[草莓开发框架：一键CRUD功能优化10]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/111088257</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/111088257</guid><author>shiliu2002</author><pubDate>Sun, 13 Dec 2020 09:22:06 +0800</pubDate><description><![CDATA[1、生成的关联ids功能是个假的，生成了静态的view内容。应该改成动态的。如下现在是静态的，name1到name4是写死的。
&lt;option value="1"&gt;name1&lt;/option&gt;&lt;option value="2"&gt;name2&lt;/option&gt;&lt;option value="3"&gt;name3&lt;/option&gt;&lt;option value="4"&gt;name4&lt;/option&gt;

应该是大概这个样子：
 &l]]></description><category></category></item><item><title><![CDATA[草莓开发框架：积分充值功能 管理员后台给用户增加或者减少积分]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/109864197</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/109864197</guid><author>shiliu2002</author><pubDate>Fri, 20 Nov 2020 21:14:48 +0800</pubDate><description><![CDATA[1、会员列表增加一个入口。充值。
2、点击后弹出一个窗口。如下图：

负数代表减积分。正数代表加积分。原因必填。
3、提交后提示设置积分成功。
4、同时要记录好明细。明细表如下。


]]></description><category></category></item><item><title><![CDATA[同城跑腿小程序：几个重要的问题记录]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/109632106</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/109632106</guid><author>shiliu2002</author><pubDate>Wed, 11 Nov 2020 21:47:55 +0800</pubDate><description><![CDATA[欢迎咨询微：shiliukeji007
因为宝塔安装了多个php版本。所以如果用php start.php去启动的话，可能会出现wss收不到信息的情况。因为php默认的是7.4版本，但是网站配置的又是7.2版本。
虽然启动了webscoket，但是在线测试wss的时候，是不通的。
所以将php的默认版本改成了php7.2，然后重新启动workerman，再次测试wss的时候，就可以了。
还要注意：
1、如果执行不成功，请查看PHP的禁行函数，把pcntl_ 前缀的禁行函数删掉。
2、workerman错误日]]></description><category></category></item><item><title><![CDATA[草莓框架一键生成后台CRUD1.0版本教程]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/109324837</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/109324837</guid><author>shiliu2002</author><pubDate>Wed, 28 Oct 2020 05:47:10 +0800</pubDate><description><![CDATA[功能说明：
可以快速的一键生成CRUD，包括控制器、模型、视图、验证器、语言包和JS。在开发功能之前，对数据表字段做好规划是一个良好的习惯。cm_test表和cm_test1表是样例表。
注意事项：
1、表必须有个主键ID，否则生成会出错。
2、表必须有名字，因为菜单会根据表的名字生成。比如表名叫课程表，则生成的菜单名字就是课程表管理。你可以在菜单管理里在重新更改菜单的名字。
3、字段必须有注释，生成的列表，添加和编辑表单需要用到这些注释。
生成规则：
1、set类型的会生成复选框。
2、_time字段，类]]></description><category></category></item><item><title><![CDATA[centos环境：Do not run Composer as root/super user的解决办法。]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/108946796</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/108946796</guid><author>shiliu2002</author><pubDate>Wed, 07 Oct 2020 07:20:43 +0800</pubDate><description><![CDATA[今天在centos环境下使用 composer 创建项目时, 出现Do not run Composer as root/super user ! 错误 , 从错误的提示中可以得出 , 不要以root /超级管理员的身份运行 composer . 解决办法是 . 创建一个新用户 , 使用新用户执行操作即可。
具体步骤如下:
1 . 创建新用户和 密码
useradd newname
passwd  newname

然后输入新的密码。
2 . 切换为新用户账户
su newname

切换到新用户后 , 在]]></description><category></category></item><item><title><![CDATA[yii2开发的CRM客户关系管理问题总结 php7的版本]]></title><link>https://blog.youkuaiyun.com/shiliu2002/article/details/108940755</link><guid>https://blog.youkuaiyun.com/shiliu2002/article/details/108940755</guid><author>shiliu2002</author><pubDate>Tue, 06 Oct 2020 16:40:33 +0800</pubDate><description><![CDATA[一、问题描述
之前的CRM是php5.6环境 升级到了php7.4的环境，报错： Cannot use ‘Object’ as class name。
二、错误原因
出错原因是:
Object是php7中的保留类名，不可以使用Object作为类的名称。

The object name was previously soft-reserved in PHP 7.0. This is now
hard-reserved, prohibiting it from being used as a class, t]]></description><category></category></item></channel></rss>