慎用json_decode的assoc参数

我们在工作中遇到的情况:

  1. vue 3前端界面 + php 后端 API
  2. vue 3采用typescript
  3. API数据采用json格式

出现的问题

当post api时提交的json数据中包含{}这种空JSON对象,比如style:{}, 后端php在处理过程中会变成[]并返回给前端,导致前端后续的功能出现bug,如这时再往style中设置值就不能正常工作了:style[‘foo’] = ‘bar’, 这时设置是不成功

问题的原因

原因1: typescript的强类型,如果是javascript,这点其实并不影响,JS数组可以直接设置值:var style = []; style[“foo”] = “bar”;这个操作是成功的。
原因2: 后端php在处理的过程中都是按数组格式处理:json_decode($data, true),无形中就把{}变成了php的空数组,然后返回给前端时json_encode就变成[]。

解决办法

修改后端json_decode总是按对象格式处理

党建系统交付使用

序号
功能模块
功能项
功能说明
一、智慧党建移动端(小程序)
1
智慧党建移动端
新闻资讯
党务公开栏目-文章
 
 
党员信息
党员基本信息展示
 
 
三会一课
健全党的组织生活,加强支部建设,严格党员管理,加强党员教育,发挥党支部的战斗堡垒作用。
 
 
学习中心
党员在线学习平台,课件支持文档、音频、图文等格式
 
 
党员活动
党内活动的发布和报名平台
 
 
人员画像
利用数据分析,将党员作为一个维度,描绘组织一张全面画像信息,让决策者更理解组织,及每一位党员。
 
 
在线考试
微信端在线限时答题,高度模拟线下考试,不受时间、地点限制;题库练习、多次考试、补考等,为党员提供一站式学习评测模式。
 
 
会议签到
公众号上扫码签到或在会议上签到
2
电脑端
 
支持通过电脑登录使用全部功能。
二、智慧党建后台管理系统
2
组织管理
组织架构
可以看到一个组织整体的结构
 
 
职务管理
通过职务管理来明确不同职务在组织中的角色和职责以及相应的任职资格
 
 
党费列表
不需要
 
 
党员档案 
可编辑党员信息,查看积分详情,加强高校党员档案管理
 
宣传管理
文章列表
对文章进行增删查改
 
 
栏目
对栏目进行增删查改
 
调查问卷
 
快速发起投票页面
 
 
 
支持多选单选
 
 
 
结果自动统计
 
三会一课
会议管理
发布及管理会议的相关信息,让参会人员了解后能更好的参与其中会议可发起签到
 
党员考评
考评管理
党员业务考评
 
 
考评模板
考评模板建立
 
学习中心
学习分类
根据不同的目的,对学习进行分类,记录学习时间,提交学习心得。
 
 
学习列表
对要学习的内容一目了然
 
 
试卷管理
对试卷进行增删查改
 
党员活动
活动类型
活动分为省级、市级、区级活动
 
 
活动管理
对活动进行一个系统化的管理
 
奖惩制度
积分管理
修改积分 备注 功能,积分排名,明细,组内可以看,上级可以看下级的
 
 
红黄绿灯
根据会议的参与情况识别 如五天未交会议心得,红灯。请假,黄灯
 
统计管理
会议统计
统计所有的会议数据,可随时查阅相关信息
 
 
人员画像
通过人员画像,可以更高效率的得到人员数据
 
 
党员大数据
可以更精确的看到党员的分布情况,提供党建大数据智能分析,为党组织决策提供数据依据
 
菜单管理
移动端菜单
前端根据需展示必要功能,自定义显示的菜单

Mac 11.0以上版本不能编译PHP的问题

在Mac 11.x版本编译php会提示php.h不存在,phpize也看不出php版本内容:

grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No: 

这是因为新版本的mac 不在支持php了,后续可能会移除php, 通过php -v 可以看出

但实际上还没有完全移除PHP,可以查看/Library/Developer/CommandLineTools/SDKs目录下你系统版本对应的目录中usr/include/php里面的内容是否还存在,如果还存在说明php devl的头文件还在哪里,只是usr/bin/phpize找不到他们。

通过phpize的输出也不难看出,他是去usr/include/php里面找对应的头文件,那么我们建立软链接到对应的/Library/Developer/CommandLineTools/SDKs下面的php目录即可。但由于/usr/include目录是Read only的,不允许创建软链接,解决办法就是:

1. 把/usr/bin/phpize 和/usr/bin/php-config两个文件复制到/usr/local/bin,并修改如下两处内容,加上local

php-config中extension_dir也重新指定一个目录,并且把/etc/php.ini extension_dir中也同步调整:

2. 建立软连接 ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/usr/include/php /usr/local/include/php

然后使用phpize时指定全路径 /usr/local/bin/phpize

configure时指定我们修改后的php-config:/usr/local/bin/phpize ./configrue –with-php-config=/usr/local/bin/php-config

make, make install 最后把编译的so文件会拷贝到指定的extension_dir目录中


该问题解决后,可通过pear的方式来安装其他pecl 扩展了

1. 下载pear: https://pear.php.net/go-pear.phar
2. 安装: php go-pear.phar,在出现的页面中分别把1,4两步设置为如下图所示,这其实是让pecl命令在bin目录中
3. 然后就可以通过pecl按照扩展了,比如pecl install zip,会下载源码并编译,同上面的phpize & configure & make & make install

会员卡销售管理系统交付

  1. 该系统的目的是用于记录会员卡的销售情况,用户角色分为4种,每种又分几个等级:
    1. 会员,分为金卡、铂金卡、黑卡
    2. 教师,分初级、中奖、高级、副校长
    3. 行政,初级、中级、高级
    4. 校长
  2. 每种角色下面的会员等级可以自由配置
  3. 分前端和后端,后端只能由校长和行政登录使用,其他等级的用户不能登录后台;前端只给会员和教师登录使用
  4. 每个等级的区别就是消费额度不同,达到对应的消费额度,自动提升会员的等级
  5. 销售额度包含自己的销售额和自己的团队成员的消费额
  6. 成员的意思就是自己推荐来的人就是自己的团队成员,团队只有一级,比如A推荐了B,B推荐了C,那么A的团队里只有B,B的团队里只有C
  7. 消费由后台进行登记,后台行政人员登记用户的消费情况:电话,姓名、推荐人、卡种、金额、订单号;行政人员登记后,需要由校长进行审核,审核通过则登记有效;校长登记的则不用审核
  8. 后台会配置每种会员卡的达标销售额度和提成情况,提成分两种提成配置,一是固定金额,比如销售一张金卡提成100块,一是配置比例,比如销售一张金卡提成销售额度的1%
  9. 消费登记有效后就需要记录推荐人(组长)的成交金额和提成情况
  10. 提成可以提现,提现由校长进行操作,登记提现的信息,提现成功后减少对应人员的能提成金额和记录提现信息

监狱系统20210311常规升级

劳动改造

  1. 服刑人员管理增加涉黑、涉恶专项查询功能
  2. 劳动定额完成情况增加涉黑、涉恶专项查询功能
  3. 重大更新:增加劳动工时定额与考核功能,可任意选择按产值考核还是按劳动工时考核

双控

  1. 双控监区领导登录看到的应巡检数是0的bug修复

MES

  1. 订单按单件流还是扎流进行生产由线组长在安排工序时确定
  2. 扎流可随时登记数量,并且需要线组长刷脸确认
  3. 记录下同一产品的工序安排,后续同样的产品工序安排时自动安排人员

Mysql incorrect string value

这是由于mysql字段的存储字符集存储不了,比如utf8中存储不了一些表情符号,比如微信上的昵称:abc🍃,解决办法就是存储要修改对应的编码字符集,与数据库的通讯链接也要修改对应的编码字符集

  1. 把对应字段的字符集修改成utf8mb4
  2. 同时把代码中数据库链接驱动中的字符集也修改成utf8mb4,比如用pdo需要设置 :SET NAMES utf8mb4

两者少一个都不行