feat: init project codebase

This commit is contained in:
sinde21
2026-09-14 16:32:07 +08:00
parent c4b2a15757
commit da20fde7fb
140 changed files with 27855 additions and 0 deletions
+258
View File
@@ -0,0 +1,258 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Base_model extends CI_Model
{
/*
* 1. 通用数据库操作方法 增删改查
* 2. 权限/菜单模型部分
*/
function __construct()
{
parent::__construct();
$this->load->database();
}
/************************
* 数据库操作模型部分
***********************/
/**
* 获取值
* $table: 表名
* $select: 查找项, $select = '*' 或 $select = 'id,title'
* $where: 条件项 $where= 'id=1' 或 $where = 'id=1 and title="blah"'
* $order: $order = 'id desc'
* 返回值是数组
*/
function _get_key($table, $select = '', $where = '', $order = '')
{
if ($select) {
$this->db->select($select);
}
if ($where) {
$this->db->where($where);
}
if ($order) {
$this->db->order_by($order);
}
$query = $this->db->get($table);
return $query->result_array();
}
function _insert_key($table, $data)
{
$this->db->insert($table, $data);
// 如果$table没有配置自增主键,则insert_id返回值为0
return $this->db->insert_id();
}
// TODO: 更新错误判断 https://stackoverflow.com/questions/20030642/check-if-db-update-successful-with-codeigniter-when-potentially-no-rows-are-upd
function _update_key($table, $data, $where)
{
$this->db->trans_start();
$this->db->where($where);
$this->db->update($table, $data);
$this->db->trans_complete();
// return $this->db->affected_rows();
// was there any update or error?
if ($this->db->affected_rows() == '1') {
return TRUE;
} else {
// any trans error?
if ($this->db->trans_status() === FALSE) {
return FALSE;
}
return TRUE;
}
}
function _key_exists($table, $where)
{
$this->db->where($where);
$this->db->from($table);
return $this->db->count_all_results();
}
function _delete_key($table, $where)
{
$this->db->where($where);
$this->db->delete($table);
return $this->db->affected_rows();
}
function _total($table)
{
$sql = "select count(*) cnt from $table";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
return 0;
} else {
$result = $query->result_array();
return $result[0]->cnt;
}
}
function total($table, $field, $keyword)
{
$sql = "select count(*) numrows from $table where $field like '%$keyword%' ";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
return 0;
} else {
$result = $query->result_array();
return $result;
}
}
/************************
* 数据库操作模型部分结束
***********************/
/************************
* 权限模型部分
***********************/
/** 根据perm_type 获取关联的基础表名称
* @return array
*/
function getBaseTable($perm_type)
{
$sql = "select r_table from sys_perm_type where type = '" . $perm_type . "'";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 根据token, perm_type 获取 perm_id,perm_type,r_id
* @return array
*/
function getPerm($basetable, $token, $perm_type, $menuCtrl)
{
$hasCtrl = $menuCtrl ? "" : " WHERE basetbl.type != 2";
$sql = "SELECT
DISTINCT t.id perm_id,
basetbl.*
FROM
(
SELECT
p.*
FROM
sys_user_token ut,
sys_user_role ur,
sys_role_perm rp,
sys_perm p,
sys_role r
WHERE
ut.token = '" . $token . "'
AND ur.user_id = ut.user_id
AND rp.role_id = ur.role_id
AND p.id = rp.perm_id
AND r.id = ur.role_id
AND r.status=1
AND p.perm_type = '" . $perm_type . "'
) t
LEFT JOIN " . $basetable . " basetbl ON t.r_id = basetbl.id" . $hasCtrl . " order by basetbl.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
function getCtrlPerm($token)
{
$sql = "SELECT
basetbl.path
FROM
(
SELECT
p.*
FROM
sys_user_token ut,
sys_user_role ur,
sys_role_perm rp,
sys_perm p,
sys_role r
WHERE
ut.token = '" . $token . "'
AND ur.user_id = ut.user_id
AND rp.role_id = ur.role_id
AND p.id = rp.perm_id
AND r.id = ur.role_id
AND r.status=1
AND p.perm_type = 'menu'
) t
LEFT JOIN sys_menu basetbl ON t.r_id = basetbl.id
WHERE basetbl.type = 2";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 判断 token 是否过期
* // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
*/
function TokenExpired($token)
{
$sql = "SELECT
*
FROM
`sys_user_token`
WHERE
token = '$token'";
$query = $this->db->query($sql);
$Arr = $query->result_array();
if (empty($Arr)) {
return ['code' => 50008, 'message' => "非法的token"];
}
$now = time();
if ($now > $Arr[0]['expire_time']) {
return ['code' => 50014, 'message' => "Token 过期了"];
}
// TODO: 当token合法时,自动续期?
$update_time = time();
$expire_time = $update_time + 2 * 60 * 60; // 2小时过期
$data = [
'expire_time' => $expire_time,
'last_update_time' => $update_time
];
$this->_update_key('sys_user_token', $data, ['token' => $token]);
return ['code' => 20000, 'message' => "Token 合法"];
}
/***********************
* 权限模型部分结束
***********************/
/************************
* 菜单模型部分
************************/
/**
* 菜单是否拥有子节点
*/
function hasChildMenu($id)
{
$sql = "SELECT getChildLst(" . $id . ") children";
$query = $this->db->query($sql);
// var_dump($query->result_array()[0]["children"]);
// string(14) "$,2,5,6,8,9,10"
$array = explode(",", $query->result_array()[0]["children"]);
if (count($array) > 2) {
return true;
} else {
return false;
}
}
/***********************
* 菜单模型部分结束
***********************/
}
+261
View File
@@ -0,0 +1,261 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Base_model extends CI_Model
{
/*
* 1. 通用数据库操作方法 增删改查
* 2. 权限/菜单模型部分
*/
function __construct()
{
parent::__construct();
$this->load->database();
}
/************************
* 数据库操作模型部分
***********************/
/**
* 获取值
* $table: 表名
* $select: 查找项, $select = '*' 或 $select = 'id,title'
* $where: 条件项 $where= 'id=1' 或 $where = 'id=1 and title="blah"'
* $order: $order = 'id desc'
* 返回值是数组
*/
function _get_key($table, $select = '', $where = '', $order = '')
{
if ($select) {
$this->db->select($select);
}
if ($where) {
$this->db->where($where);
}
if ($order) {
$this->db->order_by($order);
}
$query = $this->db->get($table);
return $query->result_array();
}
function _insert_key($table, $data)
{
$this->db->insert($table, $data);
// 如果$table没有配置自增主键,则insert_id返回值为0
return $this->db->insert_id();
}
// TODO: 更新错误判断 https://stackoverflow.com/questions/20030642/check-if-db-update-successful-with-codeigniter-when-potentially-no-rows-are-upd
function _update_key($table, $data, $where)
{
$this->db->trans_start();
$this->db->where($where);
$this->db->update($table, $data);
$this->db->trans_complete();
// return $this->db->affected_rows();
// was there any update or error?
if ($this->db->affected_rows() == '1') {
return TRUE;
} else {
// any trans error?
if ($this->db->trans_status() === FALSE) {
return FALSE;
}
return TRUE;
}
}
function _key_exists($table, $where)
{
$this->db->where($where);
$this->db->from($table);
return $this->db->count_all_results();
}
function _delete_key($table, $where)
{
$this->db->where($where);
$this->db->delete($table);
return $this->db->affected_rows();
}
function _total($table)
{
$sql = "select count(*) cnt from $table";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
return 0;
} else {
$result = $query->result_array();
return $result[0]->cnt;
}
}
function total($table, $field, $keyword)
{
$sql = "select count(*) numrows from $table where $field like '%$keyword%' ";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
return 0;
} else {
$result = $query->result_array();
return $result;
}
}
/************************
* 数据库操作模型部分结束
***********************/
/************************
* 权限模型部分
***********************/
/** 根据perm_type 获取关联的基础表名称
* @return array
*/
function getBaseTable($perm_type)
{
$sql = "select r_table from sys_perm_type where type = '" . $perm_type . "'";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 根据token, perm_type 获取 perm_id,perm_type,r_id
* @return array
*/
function getPerm($basetable, $token, $perm_type, $menuCtrl)
{
$hasCtrl = $menuCtrl ? "" : " WHERE basetbl.type != 2";
$sql = "SELECT
DISTINCT t.id perm_id,
basetbl.*
FROM
(
SELECT
p.*
FROM
sys_user_token ut,
sys_user_role ur,
sys_role_perm rp,
sys_perm p,
sys_role r
WHERE
ut.token = '" . $token . "'
AND ur.role_id = ut.role_id
AND rp.role_id = ur.role_id
AND p.id = rp.perm_id
AND r.id = ur.role_id
AND r.status=1
AND p.perm_type = '" . $perm_type . "'
) t
LEFT JOIN " . $basetable . " basetbl ON t.r_id = basetbl.id" . $hasCtrl . " order by basetbl.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
function getCtrlPerm($token)
{
$sql = "SELECT
basetbl.path
FROM
(
SELECT
DISTINCT p.*
FROM
sys_user_token ut,
sys_user_role ur,
sys_role_perm rp,
sys_perm p,
sys_role r
WHERE
ut.token = '" . $token . "'
AND ur.role_id = ut.role_id
AND rp.role_id = ur.role_id
AND p.id = rp.perm_id
AND r.id = ur.role_id
AND r.status=1
AND p.perm_type = 'menu'
) t
LEFT JOIN sys_menu basetbl ON t.r_id = basetbl.id
WHERE basetbl.type = 2";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 判断 token 是否过期
* // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
*/
function TokenExpired($token)
{
$sql = "SELECT
*
FROM
`sys_user_token`
WHERE
token = '$token'";
$query = $this->db->query($sql);
$Arr = $query->result_array();
if (empty($Arr)) {
return ['code' => 50008, 'message' => "非法的token"];
}
$now = time();
if ($now > $Arr[0]['expire_time']) {
return ['code' => 50014, 'message' => "Token 过期了"];
}
// TODO: 当token合法时,到期前30分钟内如果有操作,则自动续期,可减少插入次数?
if (($Arr[0]['expire_time'] - $now) < 0.5 * 60 * 60) {
$expire_time = $now + 2 * 60 * 60; // 2小时过期
$data = [
'expire_time' => $expire_time,
'last_update_time' => $now
];
$this->_update_key('sys_user_token', $data, ['token' => $token]);
}
return ['code' => 20000, 'message' => "Token 合法"];
}
/***********************
* 权限模型部分结束
***********************/
/************************
* 菜单模型部分
************************/
/**
* 菜单是否拥有子节点
*/
function hasChildMenu($id)
{
$sql = "SELECT getChildLst(" . $id . ") children";
$query = $this->db->query($sql);
// var_dump($query->result_array()[0]["children"]);
// string(14) "$,2,5,6,8,9,10"
$array = explode(",", $query->result_array()[0]["children"]);
if (count($array) > 2) {
return true;
} else {
return false;
}
}
/***********************
* 菜单模型部分结束
***********************/
}
+23
View File
@@ -0,0 +1,23 @@
<?php
class Breeding_plan_model extends MY_Model
{
protected $table = 'breeding_plan';
protected $join = [];
protected $keyword_field = ['user_id'];
protected $list_field = 'base.*';
protected $where_field_map = [];
protected $null_field = ['s.id'];
protected $unique_field = 'id';
//获取用户的计划总数
public function getUserTotal($user_id)
{
$this->db->select('count(*) as count');
$this->db->from($this->table);
$this->db->where('user_id', $user_id);
$list = $this->db->get()->row_array();
return $list['count'];
}
}
+550
View File
@@ -0,0 +1,550 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* 猫单基因繁育版疾病
*/
class Cat_disease_desc_model
{
protected
$list = [
'原发性青光眼'=>[
'检测项目'=>'原发性青光眼',
'检测手段'=>'Sanger 测序',
'基因型'=>'CTCC/CTCCCTCC',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患原发性青光眼,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。患病严重',
]
],
'先天性肌无力'=>[
'检测项目'=>'先天性肌无力',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患先天性肌无力,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。患病严重',
]
],
'糖原贮积病IV型'=>[
'检测项目'=>'糖原贮积病IV型',
'检测手段'=>'Sanger 测序',
'基因型'=>'无6.2Kb缺失和334bp插入/ 6.2Kb缺失和334bp插入',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现糖原贮积病症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。患病严重',
]
],
'低钾血症'=>[
'检测项目'=>'低钾血症',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/ T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患低钾血症,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。患病严重',
]
],
'视网膜萎缩症'=>[
'检测项目'=>'视网膜萎缩症',
'检测手段'=>'Sanger 测序',
'基因型'=>'A/C',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患视网膜萎缩症,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。视网膜萎缩严重',
]
],
'丙酮酸激酶缺乏症'=>[
'检测项目'=>'丙酮酸激酶缺乏症',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现丙酮酸激酶缺乏症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。丙酮酸激酶缺乏症症状严重',
]
],
'肥厚性心肌病'=>[
'检测项目'=>'肥厚性心肌病',
'检测手段'=>'Sanger 测序',
'基因型'=>'
C/Gp.A31P
G/Ap.R820W',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。可能会出现一定程度的肥厚性心肌病的症状,会传递给一半的后代',
'F/F'=>'携带两份突变基因。心肌肥厚症状严重',
]
],
'GM1神经节苷脂沉积症'=>[
'检测项目'=>'GM1神经节苷脂沉积症',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/G',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现GM1神经节苷脂累积病的症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。GM1神经节苷脂累积病症状严重',
]
],
'多囊肾病'=>[
'检测项目'=>'多囊肾病',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。患多囊肾病,会传递给一半的后代',
'F/F'=>'携带两份突变基因。多囊肾病症状严重',
]
],
'折耳和软骨发育不良'=>[
'检测项目'=>'折耳和软骨发育不良',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>': 立耳,不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>': 折耳,携带一份突变基因。会传递给一半的后代',
'F/F'=>': 折耳,携带两份突变基因。可能带有严重软骨发育不良症',
]
],
'脊髓肌肉萎缩'=>[
'检测项目'=>'脊髓肌肉萎缩',
'检测手段'=>'Sanger 测序',
'基因型'=>'无140kb缺失/ 140kb缺失',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现脊髓肌肉萎缩症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。脊髓肌肉萎缩严重',
]
],
'GM2神经节苷脂沉积症'=>[
'检测项目'=>'GM2神经节苷脂沉积症',
'检测手段'=>'Sanger 测序',
'基因型'=>'TAATGTAGGTTCTCA / -intron11exon1215bp_del
TACTGGATATTGTGACTATGAATAC/inrc.1467_1491inv
GACC/-del GACC',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现GM2神经节苷脂沉积症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。GM2神经节苷脂沉积症症状严重',
]
],
'急性间歇性卟啉症'=>[
'检测项目'=>'急性间歇性卟啉症',
'检测手段'=>'Sanger 测序',
'基因型'=>'ACAG / -c.107_110delACAG
G/Ac.826-1G>A
-/-c.189dupT
GAG/-c.844delGAG',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。患有急性间歇性卟啉症,会传递给一半的后代',
'F/F'=>'携带两份突变基因。急性间歇性卟啉症症状严重',
]
],
'凝血因子XII缺乏症'=>[
'检测项目'=>'凝血因子XII缺乏症',
'检测手段'=>'Sanger 测序',
'基因型'=>' G / C',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现凝血因子XII缺乏症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。凝血因子XII缺乏症症状严重',
]
],
'先天性红细胞生成性卟啉症'=>[
'检测项目'=>'先天性红细胞生成性卟啉症',
'检测手段'=>'Sanger 测序',
'基因型'=>'
G / Ac.140C>T
C/Tc. 331G>A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现先天性红细胞生成性卟啉症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。先天性红细胞生成性卟啉症症状严重',
]
],
'自身免疫性淋巴细胞增生综合症'=>[
'检测项目'=>'自身免疫性淋巴细胞增生综合症',
'检测手段'=>'Sanger 测序',
'基因型'=>'-/Ac.413_414insA',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患自身免疫性淋巴细胞增生综合症,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。自身免疫性淋巴细胞增生综合症症状严重',
]
],
'头部缺陷'=>[
'检测项目'=>'头部缺陷',
'检测手段'=>'Sanger 测序',
'基因型'=>'CTCTCAGGACTG/-',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。出现一定程度的头部缺陷症状,会传递给一半的后代',
'F/F'=>'携带两份突变基因。头部缺陷症状严重',
]
],
'高乳糜微粒血症'=>[
'检测项目'=>'高乳糜微粒血症',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现乳糜微粒血症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。高乳糜微粒血症症状严重',
]
],
'先天性肾上腺增生'=>[
'检测项目'=>'先天性肾上腺增生',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现先天性肾上腺增生,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。先天性肾上腺增生严重',
]
],
'预期寿命较短的先天性少毛症'=>[
'检测项目'=>'预期寿命较短的先天性少毛症',
'检测手段'=>'Sanger 测序',
'基因型'=>'ACAG/-',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现预期寿命较短的先天性少毛症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。预期寿命较短的先天性少毛症症状严重',
]
],
'胱氨酸尿症'=>[
'检测项目'=>'胱氨酸尿症',
'检测手段'=>'Sanger 测序',
'基因型'=>'
C/Tc.1342C>T
A/Gc.1846A>G
C/Tc.1175C>T
G/Ac.706G>A
T/Ac.881T>A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。患胱氨酸尿症,会传递给一半的后代',
'F/F'=>'携带两份突变基因。胱氨酸尿症症状严重',
]
],
'二氢嘧啶酶缺陷症'=>[
'检测项目'=>'二氢嘧啶酶缺陷症',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现二氢嘧啶酶缺陷症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。二氢嘧啶酶缺陷症症状严重',
]
],
'乙型血友病'=>[
'检测项目'=>'乙型血友病',
'检测手段'=>'Sanger 测序',
'基因型'=>'
C/Tc.1014C>T
G/Ac.247G>A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。可能出现乙型血友病症状,会传递给一半的后代',
'F/F'=>'携带两份突变基因。乙型血友病症状严重',
]
],
'高草酸尿症'=>[
'检测项目'=>'高草酸尿症',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现高草酸尿症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。高草酸尿症症状严重',
]
],
'黏多糖贮积症I型'=>[
'检测项目'=>'黏多糖贮积症I型',
'检测手段'=>'Sanger 测序',
'基因型'=>'TCG/-',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现黏多糖贮积症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。黏多糖贮积症症状严重',
]
],
'黏多糖贮积症VI型'=>[
'检测项目'=>'黏多糖贮积症VI型',
'检测手段'=>'Sanger 测序',
'基因型'=>'T/C',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现黏多糖贮积症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。黏多糖贮积症症状严重',
]
],
'黏多糖贮积症VII型'=>[
'检测项目'=>'黏多糖贮积症VII型',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/Ac.1051G>A
C/Tc.C1424T
T/Gc.1421T>G',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现黏多糖贮积症症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。黏多糖贮积症症状严重',
]
],
'先天性肌强直'=>[
'检测项目'=>'先天性肌强直',
'检测手段'=>'Sanger 测序',
'基因型'=>'G/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。有可能出现先天性肌强直症状,会传递给一半的后代',
'F/F'=>'携带两份突变基因。先天性肌强直症状严重',
]
],
'C1型尼曼匹克氏病'=>[
'检测项目'=>'C1型尼曼匹克氏病',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/G',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现尼曼-匹克式 C1病症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。尼曼-匹克式 C1病症状严重',
]
],
'C2型尼曼匹克氏病'=>[
'检测项目'=>'C2型尼曼匹克氏病',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/T',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现尼曼-匹克式C2病症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。尼曼-匹克式C2病症状严重',
]
],
'维生素D依赖性佝偻病'=>[
'检测项目'=>'维生素D依赖性佝偻病',
'检测手段'=>'Sanger 测序',
'基因型'=>'C/A',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现维生素D依赖性佝偻病症状,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。维生素D依赖性佝偻病症状严重',
]
],
'渐进性视网膜萎缩'=>[
'检测项目'=>'渐进性视网膜萎缩',
'检测手段'=>'Sanger 测序',
'基因型'=>'AG/-',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会出现渐进性视网膜萎缩,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。渐进性视网膜萎缩严重',
]
],
'白细胞粘附缺陷症Ⅰ型'=>[
'检测项目'=>'白细胞粘附缺陷症Ⅰ型',
'检测手段'=>'Sanger 测序',
'基因型'=>'GCCCTCTGGTCCGGTGAGTTCCGC/-',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。不会患白细胞黏附缺陷症Ⅰ型,但会传递给一半的后代',
'F/F'=>'携带两份突变基因。白细胞黏附缺陷症症状严重',
]
],
'炎性线性疣状表皮痣'=>[
'检测项目'=>'炎性线性疣状表皮痣',
'检测手段'=>'Sanger 测序',
'基因型'=>'A/G',
'检测结果'=>[
'N/N'=>'无目标突变导致的遗传患病风险',
'N/F'=>'杂合突变',
'F/F'=>'纯合突变',
],
'结果说明'=>[
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
'N/F'=>'携带一份突变基因。会炎性线性疣状表皮痣,也会传递给一半的后代',
'F/F'=>'携带两份突变基因。炎性线性疣状表皮痣症状严重',
]
]
];
function breeding_single_detail($name)
{
if(!isset($this->list[$name])){
return [];
}
return $this->list[$name];
}
}
+54
View File
@@ -0,0 +1,54 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* User_model class.
*
* @extends CI_Model
*/
class Customer_model extends MY_Model
{
CONST SESSION_KEY = 'user';
CONST SESSION_KEY_WX_OPEN_ID = 'wx_open_id';
protected $table = 'user';
protected $join = [];
protected $keyword_field = ['nickname'];
//微信用户处理
public function weixin_users($data)
{
try {
$data = array(
'openid' => $data['openid'],
'unionid' => $data['unionid'],
'nickname' => $data['nickname'],
'sex' => $data['sex'],
'language' => $data['language'],
'city' => $data['city'],
'province' => $data['province'],
'country' => $data['country'],
'headimgurl' => $data['headimgurl'],
'is_server' => isset($data['is_server'])?$data['is_server']:0,
'update_time' => time()
);
$row = $this->get($data['unionid'], 'unionid');
if ($row) {
// 更新操作
$data['update_time'] = time();
$this->db->where('id', $row['id']);
$this->db->update('user', $data);
return $row['id'];
} else {
//新增操作
$data['create_time'] = $data['update_time'] = time();
$this->db->insert('user', $data);
return $this->db->insert_id();
}
} catch (Exception $ex) {
return FALSE;
}
}
}
+48
View File
@@ -0,0 +1,48 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Dept_model extends CI_Model
{
/**
* 机构模型部分
*/
function __construct()
{
parent::__construct();
$this->load->database();
}
/**
* 获取所有机构列表
*/
function getDeptList()
{
$sql = "SELECT
d.id,
d.pid,
d.name,
d.aliasname,
d.listorder,
d.status
FROM
sys_dept d
ORDER BY
d.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* @param $Id
* @return bool
* 含有子节点返回真
*/
function hasChildDept($Id){
$sql ="SELECT * FROM `sys_dept` where pid=" . $Id;
$query = $this->db->query($sql);
if(empty($query->result_array())) {
return FALSE;
} else {
return TRUE;
}
}
}
+14
View File
@@ -0,0 +1,14 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* User_model class.
*
* @extends CI_Model
*/
class Disease_model extends MY_Model {
protected $table = 'disease';
protected $keyword_field = ['base.name'];
}
+8
View File
@@ -0,0 +1,8 @@
<?php
class Package_model extends MY_Model
{
protected $table = 'package';
protected $unique_field = 'name';
protected $keyword_field = ['base.name'];
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+147
View File
@@ -0,0 +1,147 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Role_model extends CI_Model
{
/**
* 角色模型部分
*/
function __construct()
{
parent::__construct();
$this->load->database();
}
/***********************
* 角色模型部分
************************/
/**
* 获取所有角色列表
*/
function getRoleList()
{
$sql = "SELECT
r.*
FROM
sys_role r
ORDER BY
r.listorder";
$query = $this->db->query($sql);
return [
"items" => $query->result_array(),
"total" => count($query->result_array())
];
}
/**
* 获取所有菜单并加入对应的权限id
*/
function getAllMenus()
{
$sql = "SELECT
p.id perm_id,
m.*
FROM
sys_menu m,
sys_perm p
WHERE
p.perm_type = 'menu'
AND p.r_id = m.id
ORDER BY
m.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 获取所有角色列表 带perm_id
*/
function getAllRoles()
{
$sql = "SELECT
r.*, p.id perm_id
FROM
sys_role r,
sys_perm p
WHERE
r.id = p.r_id
AND p.perm_type = 'role'
ORDER BY
r.listorder";
$query = $this->db->query($sql);
return [
"items" => $query->result_array(),
"total" => count($query->result_array())
];
}
function getRoleMenu($RoleId)
{
$sql = "SELECT
p.id perm_id,
m.*
FROM
sys_menu m,
sys_perm p,
sys_role_perm rp
WHERE
rp.perm_id = p.id
AND p.perm_type = 'menu'
AND p.r_id = m.id
AND rp.role_id = ". $RoleId ."
ORDER BY
m.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 获取角色拥有的角色权限
* @param $RoleId
* @return mixed
*/
function getRoleRole($RoleId)
{
$sql = "SELECT
p.id perm_id,
r.*
FROM
sys_role r,
sys_perm p,
sys_role_perm rp
WHERE
rp.perm_id = p.id
AND p.perm_type = 'role'
AND p.r_id = r.id
AND rp.role_id =". $RoleId . "
ORDER BY
r.listorder";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 根据 角色ID 获取该角色所拥有的权限
* [
* ['role_id'=> 1, 'perm_id'=>1]
* ...
* ]
*/
function getRolePerm($RoleId)
{
$sql = "SELECT
role_id, perm_id
FROM
sys_role_perm
WHERE
role_id =" . $RoleId;
$query = $this->db->query($sql);
return $query->result_array();
}
/***********************
* 角色模型部分结束
***********************/
}
+183
View File
@@ -0,0 +1,183 @@
<?php
class Sample_model extends MY_Model
{
protected $table = 'sample';
protected $join = [
[
'table'=>'series_number as sn',
'on'=>'base.series_id = sn.id',
'type'=>'left'
]
];
protected $keyword_field = ['device_id','base.tel','base.name','base.pet_name'];
protected $list_field = 'base.*,sn.device_id';
const STEP_BIND = 100;
const STEP_SENT = 200;
const STEP_RECEIVE = 300;
const STEP_DNA = 400;
const STEP_DNA_EXTRACTED = 500;
const STEP_UNQUALIFIED = 600;
const STEP_ANALYSIS = 700;
const STEP_COMPLETE = 800;
//作废,这种状态的样本对客户隐藏
const STEP_DISCARD = 900;
//后台的状态
public $step_back = [//
self::STEP_BIND=>'待回寄样本',
self::STEP_SENT=>'已回寄',
self::STEP_RECEIVE=>'样本已收到',
self::STEP_DNA=>'DNA提取中',
self::STEP_DNA_EXTRACTED=>'文库分析中',
self::STEP_UNQUALIFIED=>'样本不合格',
self::STEP_ANALYSIS=>'基因测序中',
self::STEP_COMPLETE=>'报告已完成',
self::STEP_DISCARD=>'作废',
];
public $step = [
self::STEP_BIND=>'待回寄样本',
self::STEP_SENT=>'待回寄样本',
self::STEP_RECEIVE=>'样本已收到',
self::STEP_DNA=>'DNA提取中',
self::STEP_DNA_EXTRACTED=>'文库分析中',
self::STEP_UNQUALIFIED=>'样本不合格',
self::STEP_ANALYSIS=>'基因测序中',
self::STEP_COMPLETE=>'报告已完成',
];
public $step_summary = [
self::STEP_BIND=>'样品回寄',
self::STEP_SENT=>'样品回寄',
self::STEP_RECEIVE=>'实验室已收到样本',
self::STEP_DNA=>'正在提取DNA',
self::STEP_DNA_EXTRACTED=>'文库分析中',
self::STEP_UNQUALIFIED=>'实验室提取DNA失败',
self::STEP_ANALYSIS=>'基因测序中',
self::STEP_COMPLETE=>'报告已完成',
];
//获取用户的总数
public function getUserTotal($user_id)
{
$this->db->select('count(*) as count');
$this->db->from($this->table);
$this->db->where('user_id', $user_id);
$this->db->where('step !=', Sample_model::STEP_DISCARD);
$list = $this->db->get()->row_array();
return $list['count'];
}
//获取种猫种狗
public function getBreeding($user_id,$exclude_ids,$pet_species,$pet_sex,$limit)
{
$this->db->select('base.*,sn.device_id');
$this->db->from('sample as base');
$this->db->where('is_breeding', 1);
$this->db->where('user_id', $user_id);
if(!empty($pet_sex)){
$this->db->where('base.pet_sex', $pet_sex);
}
if(!empty($pet_species)){
$this->db->where('base.pet_species', $pet_species);
}
if(!empty($exclude_ids)){
$this->db->where_not_in('base.id', $exclude_ids);
}
$this->db->order_by('base.id','desc');
$this->db->limit($limit);
//$this->db->where('step <', self::STEP_SENT);
$this->db->join('series_number as sn', 'base.series_id = sn.id','left');
$list = $this->db->get()->result_array();
if($list){
foreach ($list as &$item) {
$this->format($item);
}
}
return $list;
}
//根据id获取样本
public function getByUserIds($ids=[])
{
$this->db->select('base.*,sn.device_id');
$this->db->from('sample as base');
$this->db->join('series_number as sn', 'base.series_id = sn.id','left');
$this->db->where_in('base.id', $ids);
return $this->db->get()->result_array();
}
//获取用户未回寄的样品
public function getNotSentByUserId($user_id)
{
$this->db->select('*');
$this->db->from('sample');
$this->db->where('user_id', $user_id);
$this->db->where('step <', self::STEP_SENT);
return $this->db->get()->result_array();
}
//修改样品状态
public function updateStatus($id,$step)
{
}
public function get($id=false, $field='base.id', $is_list=false, $select=null)
{
$list = parent::get($id, $field, $is_list, $select);
if(!$list){
return $list;
}
if($is_list){
foreach ($list as &$item) {
$this->format($item);
}
}else{
$this->format($list);
}
return $list;
}
//样品处理
public function format(&$entity){
$this->load->library('uploads');
$entity['step_desc'] = $this->step[$entity['step']];
$entity['pet_img'] = empty($entity['pet_img'])?'':base_url().Uploads::DIR.'/'.$entity['pet_img'];
}
//批量发送完成通知
public function complete($ids=[]){
//发送微信通知
$this->load->model('weixin_message_model');
$this->load->model('customer_model');
$this->load->model('series_number_model');
$this->load->model('package_model');
foreach ($ids as $id) {
$sample = $this->sample_model->get($id);
$conf = $this->config->item('allowed_cors_origins');
$user = $this->customer_model->get($sample['user_id']);
$series = $this->series_number_model->get($sample['series_id']);
try{
//如果没关注,会抛出错误,忽略
$this->weixin_message_model->send(
$user['openid'],
Weixin_message_model::TEMPLATE_RESULT,
base_url().'weixin/?url='.urlencode($conf['report'].'/'.$series['device_id']),
[
'first'=>'您的爱宠检测报告已生成,请点击查看结果',
'keyword1'=>$series['device_id'],
'keyword2'=>date('Y-m-d'),
'remark'=>'',
]
);
}catch (Exception $e){
}
}
}
}
+6
View File
@@ -0,0 +1,6 @@
<?php
class Sample_processing_model extends MY_Model
{
protected $table = 'sample_processing';
}
+7
View File
@@ -0,0 +1,7 @@
<?php
class Sample_upgrade_order_model extends MY_Model
{
protected $table = 'sample_upgrade_order';
protected $has_update_time = false;
}
+33
View File
@@ -0,0 +1,33 @@
<?php
class Series_number_model extends MY_Model
{
protected $table = 'series_number';
protected $join = [
[
'table'=>'sample as s',
'on'=>'base.id = s.series_id',
'type'=>'left'
]
];
protected $keyword_field = ['device_id'];
protected $list_field = 'base.*,s.id as sample_id,s.create_time as time_bind';
protected $has_update_time = false;
protected $where_field_map = [
'sample_id'=>'s.id'
];
protected $null_field = ['s.id'];
protected $unique_field = 'device_id';
function aaaaadd($entity)
{
$this->db->select('*');
$this->db->from('package as p');
$this->db->where('device_id',$entity['device_id']);
$result = $this->db->get()->row_array();
if($result){
return $entity['device_id'].'已存在';
}
return $this->db->insert($entity);
}
}
+235
View File
@@ -0,0 +1,235 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 顺丰对接
* luoxuancai
* @extends CI_Model
* @link https://qiao.sf-express.com/pages/developDoc/index.html?level2=460077
*/
class Sf_express_model extends MY_Model {
protected $table = 'ship_order';
public function request($xmlContent)
{
$conf = $this->config->item('sf-express');//echo($xmlContent);die;
//请求报文拼接顾客编码MD5加密再base64加密
$verifyCode = base64_encode(md5($xmlContent . $conf['checkword'],TRUE));
//$verifyCode = base64_encode(substr(md5($xmlContent . $conf['checkword']), 8, 16));
//发送参数
$post_data = array(
'xml' => $xmlContent,
'verifyCode' => $verifyCode
);
$resultCont = $this->send_post('http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService', $post_data);
//提示重复下单或不存在的顾客编码请修改txt文件内对应参数
$xml = simplexml_load_string($resultCont);
if(isset($xml->ERROR)){
$attr = $xml->ERROR->attributes();
return [false,(string)$xml->ERROR,(int)$attr->code];
}
return [true,$xml->Body];
}
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded;charset=utf-8',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间(单位:s
)
);
$context = stream_context_create($options);
return file_get_contents($url, false, $context);
}
//寄送样品并获取运单号
public function shipSample($address=[])
{
$conf = $this->config->item('sf-express');
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="上海"
d_city="上海市"
d_county="嘉定区"
d_company="有哈科技"
d_contact="有哈科技收样组"
d_tel="17321358370"
d_address="兴贤路1180号5栋208室"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="广东省"
d_city="深圳市"
d_county="龙岗区"
d_company="有哈科技"
d_contact="有哈科技样本收集组"
d_tel="13733206710"
d_address="大鹏新区布新路97号"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
$d_province = $address['d_province'];
$d_city = $address['d_city'];
$d_county = $address['d_county'];
$d_company = $address['d_company'];
$d_contact = $address['d_contact'];
$d_tel = $address['d_tel'];
$d_address = $address['d_address'];
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""' . 'd_province==';
*/
$xml_str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Request service=\"OrderService\" lang=\"zh-CN\">
<Head></Head>
<Body>
<Order
orderid=\"\"
express_type=\"2\"
j_province=\"\"
j_city=\"\"
j_county=\"\"
j_company=\"\"
j_contact=\"\"
j_tel=\"\"
j_address=\"\"
d_province=\"$d_province\"
d_city=\"$d_city\"
d_county=\"$d_county\"
d_company=\"$d_company\"
d_contact=\"$d_contact\"
d_tel=\"$d_tel\"
d_address=\"$d_address\"
parcel_quantity=\"1\"
pay_method=\"2\"
custid =\"\"
is_docall=\"1\"
>
</Order>
</Body>
</Request>";
$xml = simplexml_load_string($xml_str);
$xml->Head = $conf['clientCode'];
//属性
$order_attr = $xml->Body->Order->attributes();
$order_attr->orderid=$address['trade_id'];
$order_attr->j_province=$address['province'];
$order_attr->j_city=$address['city'];
$order_attr->j_county=$address['district'];
$order_attr->j_contact=$address['name'];
$order_attr->j_tel=$address['tel'];
$order_attr->j_address=$address['address'];
//月结卡号:测试卡号7551234567
$order_attr->custid=$conf['custid'];
$ret = $this->request($xml->asXML());
if(!$ret[0]){
log_message('error', $ret[1]);
return [false,$ret[1]];
}
$attr = $ret[1]->OrderResponse->attributes();
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>(string)$attr->mailno,//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
"express"=> '2',
];
$this->add($row_base);
return [true,$row_base['mail_no']];
}
//测试寄送样品并获取运单号
public function test($address)
{
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>'1',//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
];
$id = $this->add($row_base);
var_dump($id);die;
}
}
+212
View File
@@ -0,0 +1,212 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 顺丰对接
* luoxuancai
* @extends CI_Model
* @link https://qiao.sf-express.com/pages/developDoc/index.html?level2=460077
*/
class Sf_express_model extends MY_Model {
protected $table = 'ship_order';
public function request($xmlContent)
{
$conf = $this->config->item('sf-express');//echo($xmlContent);die;
//请求报文拼接顾客编码MD5加密再base64加密
$verifyCode = base64_encode(md5($xmlContent . $conf['checkword'],TRUE));
//$verifyCode = base64_encode(substr(md5($xmlContent . $conf['checkword']), 8, 16));
//发送参数
$post_data = array(
'xml' => $xmlContent,
'verifyCode' => $verifyCode
);
$resultCont = $this->send_post('http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService', $post_data);
//提示重复下单或不存在的顾客编码请修改txt文件内对应参数
$xml = simplexml_load_string($resultCont);
if(isset($xml->ERROR)){
$attr = $xml->ERROR->attributes();
return [false,(string)$xml->ERROR,(int)$attr->code];
}
return [true,$xml->Body];
}
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded;charset=utf-8',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间(单位:s
)
);
$context = stream_context_create($options);
return file_get_contents($url, false, $context);
}
//寄送样品并获取运单号
public function shipSample($address=[])
{
$conf = $this->config->item('sf-express');
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="上海"
d_city="上海市"
d_county="嘉定区"
d_company="有哈科技"
d_contact="有哈科技收样组"
d_tel="17321358370"
d_address="兴贤路1180号5栋208室"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="广东省"
d_city="深圳市"
d_county="龙岗区"
d_company="有哈科技"
d_contact="有哈科技样本收集组"
d_tel="13733206710"
d_address="大鹏新区布新路97号"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="广东省"
d_city="深圳市"
d_county="龙岗区"
d_company="有哈科技"
d_contact="王先生"
d_tel="17596551135"
d_address="大鹏新区布新路97号农科院基因组所A栋"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
$xml = simplexml_load_string($xml_str);
$xml->Head = $conf['clientCode'];
//属性
$order_attr = $xml->Body->Order->attributes();
$order_attr->orderid=$address['trade_id'];
$order_attr->j_province=$address['province'];
$order_attr->j_city=$address['city'];
$order_attr->j_county=$address['district'];
$order_attr->j_contact=$address['name'];
$order_attr->j_tel=$address['tel'];
$order_attr->j_address=$address['address'];
//月结卡号:测试卡号7551234567
$order_attr->custid=$conf['custid'];
$ret = $this->request($xml->asXML());
if(!$ret[0]){
log_message('error', $ret[1]);
return [false,$ret[1]];
}
$attr = $ret[1]->OrderResponse->attributes();
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>(string)$attr->mailno,//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
"express"=> '2',
];
$this->add($row_base);
return [true,$row_base['mail_no']];
}
//测试寄送样品并获取运单号
public function test($address)
{
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>'1',//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
];
$id = $this->add($row_base);
var_dump($id);die;
}
}
+235
View File
@@ -0,0 +1,235 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 顺丰对接
* luoxuancai
* @extends CI_Model
* @link https://qiao.sf-express.com/pages/developDoc/index.html?level2=460077
*/
class Sf_express_model extends MY_Model {
protected $table = 'ship_order';
public function request($xmlContent)
{
$conf = $this->config->item('sf-express');//echo($xmlContent);die;
//请求报文拼接顾客编码MD5加密再base64加密
$verifyCode = base64_encode(md5($xmlContent . $conf['checkword'],TRUE));
//$verifyCode = base64_encode(substr(md5($xmlContent . $conf['checkword']), 8, 16));
//发送参数
$post_data = array(
'xml' => $xmlContent,
'verifyCode' => $verifyCode
);
$resultCont = $this->send_post('http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService', $post_data);
//提示重复下单或不存在的顾客编码请修改txt文件内对应参数
$xml = simplexml_load_string($resultCont);
if(isset($xml->ERROR)){
$attr = $xml->ERROR->attributes();
return [false,(string)$xml->ERROR,(int)$attr->code];
}
return [true,$xml->Body];
}
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded;charset=utf-8',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间(单位:s
)
);
$context = stream_context_create($options);
return file_get_contents($url, false, $context);
}
//寄送样品并获取运单号
public function shipSample($address=[])
{
$conf = $this->config->item('sf-express');
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="上海"
d_city="上海市"
d_county="嘉定区"
d_company="有哈科技"
d_contact="有哈科技收样组"
d_tel="17321358370"
d_address="兴贤路1180号5栋208室"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""
d_province="广东省"
d_city="深圳市"
d_county="龙岗区"
d_company="有哈科技"
d_contact="有哈科技样本收集组"
d_tel="13733206710"
d_address="大鹏新区布新路97号"
parcel_quantity="1"
pay_method="2"
custid =""
is_docall="1"
>
</Order>
</Body>
</Request>';
*/
$d_province = $address['d_province'];
$d_city = $address['d_city'];
$d_county = $address['d_county'];
$d_company = $address['d_company'];
$d_contact = $address['d_contact'];
$d_tel = $address['d_tel'];
$d_address = $address['d_address'];
/*
$xml_str = '<?xml version="1.0" encoding="UTF-8"?>
<Request service="OrderService" lang="zh-CN">
<Head></Head>
<Body>
<Order
orderid=""
express_type="1"
j_province=""
j_city=""
j_county=""
j_company=""
j_contact=""
j_tel=""
j_address=""' . 'd_province==';
*/
$xml_str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Request service=\"OrderService\" lang=\"zh-CN\">
<Head></Head>
<Body>
<Order
orderid=\"\"
express_type=\"1\"
j_province=\"\"
j_city=\"\"
j_county=\"\"
j_company=\"\"
j_contact=\"\"
j_tel=\"\"
j_address=\"\"
d_province=\"$d_province\"
d_city=\"$d_city\"
d_county=\"$d_county\"
d_company=\"$d_company\"
d_contact=\"$d_contact\"
d_tel=\"$d_tel\"
d_address=\"$d_address\"
parcel_quantity=\"1\"
pay_method=\"2\"
custid =\"\"
is_docall=\"1\"
>
</Order>
</Body>
</Request>";
$xml = simplexml_load_string($xml_str);
$xml->Head = $conf['clientCode'];
//属性
$order_attr = $xml->Body->Order->attributes();
$order_attr->orderid=$address['trade_id'];
$order_attr->j_province=$address['province'];
$order_attr->j_city=$address['city'];
$order_attr->j_county=$address['district'];
$order_attr->j_contact=$address['name'];
$order_attr->j_tel=$address['tel'];
$order_attr->j_address=$address['address'];
//月结卡号:测试卡号7551234567
$order_attr->custid=$conf['custid'];
$ret = $this->request($xml->asXML());
if(!$ret[0]){
log_message('error', $ret[1]);
return [false,$ret[1]];
}
$attr = $ret[1]->OrderResponse->attributes();
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>(string)$attr->mailno,//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
"express"=> '2',
];
$this->add($row_base);
return [true,$row_base['mail_no']];
}
//测试寄送样品并获取运单号
public function test($address)
{
$row_base = [
'user_id'=>$address['user_id'],
'mail_no'=>'1',//
'partner_code'=>$address['trade_id'],//
'trade_id'=>$address['trade_id'],
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
"sender_mobile"=> $address['tel'],
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
];
$id = $this->add($row_base);
var_dump($id);die;
}
}
+6
View File
@@ -0,0 +1,6 @@
<?php
class Ship_order_model extends MY_Model
{
protected $table = 'ship_order';
}
+493
View File
@@ -0,0 +1,493 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class User_model extends CI_Model
{
/**
* 用户模型部分
*
*/
function __construct()
{
parent::__construct();
$this->load->database();
}
/**
* 登陆校验用户名密码
* @param $username
* @param $passwd
*/
function validate($username, $passwd)
{
$sql = "SELECT
*
FROM
sys_user
WHERE
username = '" . $username . "'
AND password = '" . $passwd . "'";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
$result = array(
'success' => FALSE,
'userinfo' => null
);
} else {
$result = array(
'success' => TRUE,
'userinfo' => $query->row_array()
);
}
return $result;
}
/**
* 根据 $user_id 获取上次登录角色id
* @param $Id
*/
function getLastLoginRole($Id)
{
$sql = "SELECT
role_id
FROM
sys_user_token
WHERE
user_id =" . $Id . "
ORDER BY
create_time DESC
limit 1";
$query = $this->db->query($sql);
$RolesArr = $query->result_array();
if (empty($RolesArr)) {
return [
"code" => "50020",
"message" => "用户首次登录,没有最后一次登录信息"
];
} else {
foreach ($RolesArr as $k => $v) {
$sqlx = "SELECT
DISTINCT dept_id
FROM
`sys_user_role`
WHERE
user_id =" . $Id . " and role_id=" . $v['role_id'];
$queryx = $this->db->query($sqlx);
if (empty($queryx->result_array())) {
return [
"code" => "50018",
"message" => "用户机构信息不完整, 无法登录, 请联系管理员"
];
}
}
return [
"code" => "20000",
"role_id" => $RolesArr[0]['role_id']
];
}
}
/**
* 根据 $user_id 获取一个角色作为当前选择默认角色
* 只在用户初次登录时使用
* @param $Id
*/
function getCurrentRole($Id)
{
$sql = "SELECT
DISTINCT role_id
FROM
sys_user_role
WHERE
user_id =" . $Id;
$query = $this->db->query($sql);
if (empty($query->result_array())) {
return [
"code" => "50018",
"message" => "用户未分配角色, 无法登录, 请联系管理员"
];
}
$RolesArr = $query->result_array();
foreach ($RolesArr as $k => $v) {
$sqlx = "SELECT
DISTINCT dept_id
FROM
`sys_user_role`
WHERE
user_id =" . $Id . " and role_id=" . $v['role_id'];
$queryx = $this->db->query($sqlx);
if (empty($queryx->result_array())) {
return [
"code" => "50018",
"message" => "用户机构信息不完整, 无法登录, 请联系管理员"
];
}
}
return [
"code" => "20000",
"role_id" => $RolesArr[0]['role_id'],
"message" => "成功获取第一个角色"
];
}
/**
* @param $RoleId
* @param $UserId
* @return bool
* 判断该用户角色是否已分配机构部门
*/
function roleHasDept($RoleId, $UserId)
{
$sql = "SELECT
DISTINCT dept_id
FROM
`sys_user_role`
WHERE
user_id =" . $UserId . " and role_id=" . $RoleId;
$query = $this->db->query($sql);
if (empty($query->result_array())) {
return FALSE;
} else {
return TRUE;
}
}
/**
* 根据$token拉取用户信息
* @param $Token
*/
function getUserInfo($Token)
{
$sql = "SELECT
u.id,
u.username,
u.tel,
u.email,
u.avatar,
u.sex,
u.last_login_ip,
u.last_login_time,
u.status
FROM
sys_user_token ut,
sys_user u
WHERE
ut.token = '" . $Token . "'
AND u.id = ut.user_id";
$query = $this->db->query($sql);
if (($query->row_array()) == null) {
$result = array(
'success' => FALSE,
'userinfo' => null
);
} else {
$result = array(
'success' => TRUE,
'userinfo' => $query->row_array()
);
}
return $result;
}
/**
* 根据$token拉取用户角色信息
* @param $Token
*/
function getUserRolesByToken($Token)
{
$sql = "SELECT
DISTINCT r.id,r.name
FROM
sys_user_token ut,
sys_user_role ur,
sys_role r
WHERE
ut.token = '" . $Token . "'
AND ur.user_id = ut.user_id
AND r.id = ur.role_id
and r.status=1";
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 根据$token拉取用户当前选择角色id
* @param $Token
*/
function getCurrentRoleByToken($Token)
{
$sql = "SELECT
ut.role_id
FROM
sys_user_token ut
WHERE
ut.token = '" . $Token . "'";
$query = $this->db->query($sql);
return $query->row_array()['role_id'];
}
/**
* 根据$token拉取用户当前选择部门
* @param $Token
*/
function getCurrentDeptByToken($Token)
{
$sql = "SELECT
ut.user_id,
ut.role_id
FROM
sys_user_token ut
WHERE
ut.token = '" . $Token . "'";
$query = $this->db->query($sql);
$arr = $query->result_array();
$sqlx = "SELECT DISTINCT
d.id,
d.pid,
d.name label
FROM
sys_user_role ur,
sys_dept d
WHERE
ur.user_id =" . $arr[0]['user_id'] . "
AND ur.role_id =" . $arr[0]['role_id'] . "
AND ur.dept_id = d.id";
$queryx = $this->db->query($sqlx);
return $queryx->result_array();
}
/**
* 获取所有用户列表
*/
function getUserList($deptIdStr, $filters, $sort, $page, $pageSize)
{
// 默认排序
$orderStr = '';
if ($sort['prop'] && $sort['order']) {
$orderStr = " ORDER BY " . $sort['prop'] . " " . ($sort['order'] === 'ascending' ? 'asc' : 'desc');
}
$filterStr = '';
$j = 0;
foreach ($filters as $k => $v) {
if ($v['value'] !== '' && !is_null($v['value'])) {
if ($j) {
$filterStr = $filterStr . " and ";
}
if ($v['prop'] === 'username') {
$filterStr .= $v['prop'] . " like '%" . $v['value'] . "%' ";
}
if ($v['prop'] === 'status') {
$filterStr .= $v['prop'] . "=" . $v['value'];
}
$j++;
}
}
if ($filterStr) {
$filterStr = " and " . $filterStr;
}
//TODO: 将超级管理员隐藏 sys_user u where id != 1 and id IN (
$sql = "SELECT
*
FROM
sys_user where id IN (
SELECT DISTINCT
user_id
FROM
sys_user_role ur
WHERE
dept_id IN (" . $deptIdStr . ")
) "
. $filterStr
. $orderStr . " limit " . ($page - 1) * $pageSize . "," . $pageSize;
$query = $this->db->query($sql);
return $query->result_array();
}
function getUserListCnt($deptIdStr, $filters)
{
$filterStr = '';
$j = 0;
foreach ($filters as $k => $v) {
if ($v['value'] !== '' && !is_null($v['value'])) {
if ($j) {
$filterStr = $filterStr . " and ";
}
if ($v['prop'] === 'username') {
$filterStr .= $v['prop'] . " like '%" . $v['value'] . "%' ";
}
if ($v['prop'] === 'status') {
$filterStr .= $v['prop'] . "=" . $v['value'];
}
$j++;
}
}
if ($filterStr) {
$filterStr = " and " . $filterStr;
}
// TODO: 将超级管理员隐藏 sys_user u where id != 1 and id IN (
$sql = "SELECT
count(u.id) cnt
FROM
sys_user u where id IN (
SELECT DISTINCT
user_id
FROM
sys_user_role ur
WHERE
dept_id IN (" . $deptIdStr . ")
) "
. $filterStr;
$query = $this->db->query($sql);
if (empty($query->result_array())) {
return 0;
} else {
$result = $query->result_array();
return $result[0]['cnt'];
}
}
/**
* 获取所有角色列表 参考 permission.php 权限库,因为需要左关联组合,所以只能重新写模型
* 并且根据$token 获取对应Token用户角色所拥有的角色类权限选项
* 当用户含有未拥有的角色类权限时 设置 isDisabled 禁用选择
* 新增编辑时使用
*
*/
function getRoleOptions($Token)
{
$sql = "SELECT
r.id,
r.name,
r.remark,
r.status,
IF (
t.name IS NULL,
'true',
'false'
) isDisabled,
r.listorder
FROM
sys_role r
LEFT JOIN (
SELECT
r.id,
r.name,
r.remark,
r.status
FROM
sys_user_token ut,
sys_role_perm rp,
sys_perm p,
sys_role r
WHERE
ut.token = '" . $Token . "'
AND ut.role_id = rp.role_id
AND rp.perm_id = p.id
AND p.perm_type = 'role'
AND p.r_id = r.id
AND r.status = 1
) t ON r.id = t.id
ORDER BY r.listorder";
$query = $this->db->query($sql);
$RoleArr = $query->result_array();
// string to boolean
foreach ($RoleArr as $k => $v) {
$v['isDisabled'] === 'true' ? ($RoleArr[$k]['isDisabled'] = true) : ($RoleArr[$k]['isDisabled'] = false);
}
return $RoleArr;
}
/**
* 根据 用户ID 获取该用户被分配的角色
*
*/
function getUserRoles($Id)
{
$sql = "SELECT
DISTINCT r.id,
r.name,
r.remark,
r.status
FROM
sys_user_role ur,
sys_role r
WHERE
ur.role_id = r.id
AND ur.user_id =" . $Id;
$query = $this->db->query($sql);
return $query->result_array();
}
function getUserRolesDept($user_id, $role_id)
{
$sql = "SELECT
*
FROM
sys_user_role ur
WHERE
ur.role_id =" . $role_id . "
AND ur.user_id =" . $user_id;
$query = $this->db->query($sql);
return $query->result_array();
}
/**
* 根据 用户ID 获取该用户所拥有的角色
* [
* ['user_id'=> 1, 'role_id'=>1]
* ...
* ]
*/
function getRolesByUserId($Id)
{
$sql = "SELECT
ur.user_id,ur.role_id,ur.dept_id
FROM
sys_user_role ur
WHERE ur.user_id=" . $Id;
$query = $this->db->query($sql);
return $query->result_array();
}
/*
* 微信登录认证
*/
function getUserInfoByTel($Tel)
{
$sql = "SELECT
u.*
FROM
sys_user u
WHERE u.tel='" . $Tel . "'";
$query = $this->db->query($sql);
return $query->result_array();
}
/***********************
* 用户模型部分结束
***********************/
}
+14
View File
@@ -0,0 +1,14 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Variety class.
*
* @extends CI_Model
*/
class Variety_model extends MY_Model {
protected $table = 'variety';
protected $keyword_field = ['base.name'];
}
+44
View File
@@ -0,0 +1,44 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use EasyWeChat\Foundation\Application as OfficialAccount;
/**
* 微信消息通知
* @extends CI_Model
*/
class Weixin_message_model extends CI_Model {
//绑定成功通知:样本编号,检测项目
const TEMPLATE_ACTIVE = '1mTetEn_7WR2dJX7-QO6vzVpNcVW_vjzzJmRzNcq_ZM';
//样品发货提醒:样品名称,样品快递号,时间
const TEMPLATE_SENT = '7Nt6MCScb1AbDqejv9ACKvTc2hmLZAm65qsS9CHRLF8';
//检测报告通知:检测码,报告生成时间
const TEMPLATE_RESULT = 'CtR0vfHcNjaYSK6IE-xlKbBQDGTkeSYFJu9_bYE5si8';
/**
* 发送通知
* @param $toUser
* @param $template_id
* @param $url
* @param $msg first,keyword1,keyword2,keyword3,remark
* @return bool
**/
public function send($toUser,$template_id,$url,$msg)
{
$conf = $this->config->item('weixin_uah');
$config = [
'app_id' => $conf['AppId'],
'secret' => $conf['AppSecert'],
'token' => $conf['Token'],
'aes_key' => $conf['EncodingAESKey'],
'response_type' => 'array',
];
$app = new OfficialAccount($config);
$app->notice->send([
'touser' => $toUser,
'template_id' => $template_id,
'url' => $url,
'data' => $msg
]);
}
}
+474
View File
@@ -0,0 +1,474 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require "vendor/zto/zopsdk-php/ZopClient.php";
require "vendor/zto/zopsdk-php/ZopProperties.php";
require "vendor/zto/zopsdk-php/ZopRequest.php";
use zop\ZopClient;
use zop\ZopRequest;
use zop\ZopProperties;
/**
* 中通接口
* https://zop.zto.com/apiDoc/
*
* @extends CI_Model
*/
class Zto_model extends MY_Model {
protected $table = 'ship_order';
public function request($path='', $params=[])
{
$conf = $this->config->item('zto');
// ZopProperties类的构造方法接收两个参数,分别是companyid和key,都需要注册中通开放平台后到个人中心查看
$properties = new ZopProperties($conf['id'], $conf['key']);
$client = new ZopClient($properties);
$request = new ZopRequest();
$request->setUrl($conf['host'].$path);
if(isset($params['company_id'])){
$params['company_id'] = $conf['id'];
}
foreach ($params as $key=>$val) {
$request->addParam($key,$val);
}
$ret = $client->execute($request);
return json_decode($ret,true);
}
//寄送样品并获取运单号
public function shipSample($address=[])
{
$data = [
'orderGroup'=>[
"partnerCode"=> $address['trade_id'],//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
"type"=> 1,//订单类型 1 普通订单(线上),2线下联系订单 默认1
"tradeId"=> $address['trade_id'],//交易号,由合作商平台产生。
"mailNo"=> "",//运单号(有则提供,线下联系订单必须提供)
"sender"=> [
"id"=> strval($address['user_id']),
"name"=> $address['name'],
"company"=> "",
"mobile"=> $address['tel'],
"phone"=> "",
"prov"=> $address['province'],
"city"=> $address['city'],
"county"=> $address['district'],
"address"=> $address['address'],
"zipcode"=> ""
],
"receiver"=> [
"id"=> "1",
"name"=> "有哈科技收样组",
"company"=> " ",
"mobile"=> "17321358370",
"phone"=> "",
"prov"=> "上海市",
"city"=> "上海市",
"county"=> "嘉定区",
"address"=> "兴贤路1180号5栋208室",
"zipcode"=> ""
],
"items"=> [
[
"id"=> "1",
"name"=> "唾液样本",
"category"=> "电子产品",
"material"=> "玻璃",
"size"=> "12,11,23",
"weight"=> "1",
"unitprice"=> "80",
"quantity"=> "1",
"remark"=> ""
]
],
"starttime"=> date('Y-m-d'),
"endtime"=> date('Y-m-d'),
"weight"=> 1,
"size"=> "12,23,11",
"quantity"=> 1,
"price"=> 80,
"freight"=> 10,
"premium"=> 0,
"packCharges"=> 0,
"otherCharges"=> 0,
"orderSum"=> 0,
"collectMoneytype"=> "CNY",
"collectSum"=> 1,
"remark"=> "玻璃制品,请轻拿轻放"
]
];
//echo json_encode($data);die;
//散客预约订单
$ret = $this->request('OpenOrderCreate',$data);
/*
* 返回示例
* {
"result": {
"esGroup": null,
"markGroup": null,
"orderCode": "200308000008003103"
},
"message": "操作成功",
"status": true,
"statusCode": "0"
}
*/
//print_r($ret);
if($ret['statusCode'] == '0' && isset($ret['result']['orderCode'])){
$row_base = [
'user_id'=>$address['user_id'],// 中通订单号
'order_code'=>$ret['result']['orderCode'],// 中通订单号
'partner_code'=>$address['trade_id'],// 中通订单号
'trade_id'=>$address['trade_id'],// 中通订单号
"sender_id"=> $address['user_id'],
"sender_name"=> $address['name'],
//"sender_company"=> "",
"sender_mobile"=> $address['tel'],
//"sender_phone"=> "",
"sender_prov"=> $address['province'],
"sender_city"=> $address['city'],
"sender_county"=> $address['district'],
"sender_address"=> $address['address'],
//"sender_zipcode"=> ""
];
$row_ext = [];
/*
//查询订单
$ret_search = $this->commonOrderSearchbycode($ret['orderCode'],$address['user_id']);
//存订单
$order = $ret['result'];
if($ret_search['result']){
$detail = $ret_search['data']['order_list'];
if(!empty($detail[0])){
$detail = $detail[0];
$row_ext = [
'type'=>$order['type'],// 订单类型
'tradeid'=>$order['tradeid'],// 交易号
'mailno'=>$order['mailno'],// 运单号
'detail'=>json_encode($detail),// 原始数据
];
}
}
//todo:订阅快递信息
$this->add(array_merge($row_base,$row_ext));
*/
$id = $this->add($row_base);
return [true,'上门取货后获取'];
}else{
log_message('error', $ret['message']);
}
return [false,$ret['message']];
}
//预约寄件-订单明细查询
public function commonOrderSearchbycode($orderCode=[],$sendId,$partnerId='')
{
if(!is_array($orderCode)){
$orderCode = [$orderCode];
}
$params = [
"company_id"=>'',
"msg_type"=>'SEARCHBYCODE',
"data"=>[
"orderCode"=>$orderCode,//预约寄件下单后,获取的orderCode
"sendId"=>$sendId,//发件人在合作商平台中的ID号
#"partnerId"=>"",//合作商单号,非必填
]
];
$ret = $this->request('commonOrderSearchbycode',$params);
echo(json_encode($ret));die;
$ret = '{
"result": true,
"reason": "",
"data": {
"pageIndex": 1,
"pageSize": 10,
"count": 100,
"order_list": [
{
"orderCode": "130520142013234",
"type": "",
"tradeid": "2701843",
"mailno": "1000000000016",
"sender": {
"id": "130520142010",
"name": "李琳",
"company": "新南电子商务有限公司",
"mobile": "13912345678",
"phone": "021-87654321",
"area": "上海市",
"city": "上海市",
"county": "青浦区",
"address": "华新镇华志路123号",
"zipcode": "610012"
},
"receiver": {
"id": "130520142097",
"name": "杨逸嘉",
"company": "逸嘉实业有限公司",
"mobile": "13687654321",
"phone": "010-22226789",
"area": "四川省",
"city": "成都市",
"county": "武侯区",
"address": "育德路497号",
"zipcode": "610012"
},
"starttime": "2013-05-2012: 00: 00",
"endtime": "2013-05-2015: 00: 00",
"weight": 753,
"size": "12, 23, 11",
"quantity": 2,
"price": 12650,
"freight": 1000,
"premium": 50,
"pack_charges": 100,
"other_charges": 0,
"order_sum": 0,
"collect_moneytype": "CNY",
"collect_sum": 1200,
"remark": "请勿摔货",
"create_date": "2014-12-1212: 12: 12"
},
{
"orderCode": "130520142013234",
"type": "",
"tradeid": "2701843",
"mailno": "1000000000016",
"sender": {
"id": "130520142010",
"name": "李琳",
"company": "新南电子商务有限公司",
"mobile": "13912345678",
"phone": "021-87654321",
"area": "上海市",
"city": "上海市",
"county": "青浦区",
"address": "华新镇华志路123号",
"zipcode": "610012"
},
"receiver": {
"id": "130520142097",
"name": "杨逸嘉",
"company": "逸嘉实业有限公司",
"mobile": "13687654321",
"phone": "010-22226789",
"area": "四川省",
"city": "成都市",
"county": "武侯区",
"address": "育德路497号",
"zipcode": "610012"
},
"items": [
{
"id": "1234567",
"name": "迷你风扇",
"category": "电子产品",
"material": "金属",
"size": "12, 11, 23",
"weight": "0.752",
"unitprice": "79",
"quantity": "1",
"remark": "黑色大号"
},
{
"name": "USB3.0集线器",
"quantity": "1",
"remark": ""
}
],
"starttime": "2013-05-2012: 00: 00",
"endtime": "2013-05-2015: 00: 00",
"weight": 753,
"size": "12, 23,11",
"quantity": 2,
"price": 12650,
"freight": 1000,
"premium": 50,
"pack_charges": 100,
"other_charges": 0,
"order_sum": 0,
"collect_moneytype": "CNY",
"collect_sum": 1200,
"remark": "请勿摔货",
"create_date": "2014-12-1212: 12: 12"
}
]
}
}
';
$ret = json_decode($ret,true);
}
//获取快件轨迹信息
public function traceInterfaceNewTraces($order_id)
{
$conf = $this->config->item('zto');
$data = [
"company_id"=> $conf['id'],
"msg_type"=> 'NEW_TRACES',
"data"=> [$order_id],
];
return $this->request('traceInterfaceNewTraces',$data);
$tmp = '{
"data": [
{
"traces": [
{
"desc": "[上海市] [上海]的张伟丰已收件 电话:17740809169",
"dispOrRecMan": "张伟丰",
"dispOrRecManCode": "",
"dispOrRecManPhone": "17740809169",
"isCenter": "T",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-07-26 17:30:14",
"scanProv": "上海",
"scanSite": "上海",
"scanSiteCode": "02100",
"scanSitePhone": "95311",
"scanType": "收件",
"signMan": ""
},
{
"desc": "[金华市] 快件到达 [义乌]",
"dispOrRecMan": "",
"dispOrRecManCode": "",
"dispOrRecManPhone": "",
"isCenter": "F",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "金华市",
"scanDate": "2017-05-18 16:55:01",
"scanProv": "浙江",
"scanSite": "义乌",
"scanSiteCode": "57950",
"scanSitePhone": "0579-89936000",
"scanType": "到件",
"signMan": ""
},
{
"desc": "[上海市] 快件已到达[上海],业务员张伟丰正在第1次派件 电话:17740809169
请保持电话畅通、耐心等待",
"dispOrRecMan": "张伟丰",
"dispOrRecManCode": "",
"dispOrRecManPhone": "17740809169",
"isCenter": "T",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-07-26 17:33:27",
"scanProv": "上海",
"scanSite": "上海",
"scanSiteCode": "02100",
"scanSitePhone": "95311",
"scanType": "派件",
"signMan": ""
},
{
"desc": "[上海市] [上海总部财务]的派件已退件签收 感谢使用中通快递,期待再次为您
服务!",
"dispOrRecMan": "",
"dispOrRecManCode": "",
"dispOrRecManPhone": "",
"isCenter": "F",
"preOrNextCity": "",
"preOrNextProv": "",
"preOrNextSite": "",
"preOrNextSiteCode": "",
"preOrNextSitePhone": "",
"remark": "",
"scanCity": "上海市",
"scanDate": "2017-03-03 13:11:23",
"scanProv": "上海",
"scanSite": "上海总部财务",
"scanSiteCode": "00088",
"scanSitePhone": "",
"scanType": "退件签收",
"signMan": "本人"
}
],
"billCode": "680000000000"
}
],
"msg": "",
"status": true
}';
return json_decode($tmp,true);
}
//总对总订单,用不上
public function plateOrder($sample=[],$address=[])
{
$data = [
"systemParameter"=> [
"serviceCode"=> "StoreDeliverGoods"
],
"orderInfo"=> [
"bagSize"=> "20,10,30",
"partnerCode"=> "3608036589234",
"companyCode"=> "GP1551922487",
"customerId"=> "zto001",
"hallCode"=> "S2044",
"billCode"=> null,
"pickUpCode"=> null,
"startTime"=> null,
"endTime"=> null,
"siteCode"=> "",
"weight"=> 1.23,
"freight"=> 0,
"orderSum"=> 230.12,
"otherCharges"=> 0,
"packCharges"=> 0,
"premium"=> 0,
"price"=> 0,
"quantity"=> "1",
"returnAddress"=> "江苏省苏州市姑苏区绿地大道320号金茂大厦负一楼203仓库",
"remark"=> "",
"receiver"=> [
"address"=> "外街道00号",
"city"=> "苏州市",
"company"=> "中通快递",
"county"=> "朝阳区",
"id"=> "",
"mobile"=> "13262709999",
"name"=> "黄某",
"phone"=> "",
"prov"=> "江苏省",
"zipCode"=> ""
],
"sender"=> [
"address"=> "华志路1685号",
"city"=> "蚌埠市",
"company"=> "中通快递股份有限公司",
"county"=> "怀远县",
"id"=> "15097756",
"mobile"=> "15216800000",
"name"=> "测试",
"phone"=> "",
"prov"=> "安徽省",
"zipCode"=> ""
]
]
];
$ret = $this->request('plateOrder',$data);
return $ret;
}
}
+290
View File
@@ -0,0 +1,290 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require "vendor/zto/zopsdk-php/ZopClient.php";
require "vendor/zto/zopsdk-php/ZopProperties.php";
require "vendor/zto/zopsdk-php/ZopRequest.php";
use zop\ZopClient;
use zop\ZopRequest;
use zop\ZopProperties;
/**
* User_model class.
*
* @extends CI_Model
*/
class Zto_model extends MY_Model {
public function request($path='', $data=[])
{
$conf = $this->config->item('zto');
// ZopProperties类的构造方法接收两个参数,分别是companyid和key,都需要注册中通开放平台后到个人中心查看
$properties = new ZopProperties($conf['id'], $conf['key']);
$client = new ZopClient($properties);
$request = new ZopRequest();
$request->setUrl($conf['host'].$path);
//$request->setData(json_encode($data));
$request->addParam('orderGroup',$data);
//$request->addParam('orderGroup','{"partnerCode":"130520142013234","type":1,"tradeId":"2701843","mailNo":"1000000000016","sender":{"id":"130520142010","name":"李琳","company":"新南电子商务有限公司","mobile":"13912345678","phone":"021-87654321","prov":"上海市","city":"上海市","county":"青浦区","address":"华新镇华志路123号","zipcode":"610012"},"receiver":{"id":"130520142097","name":"杨逸嘉","company":"逸嘉实业有限公司","mobile":"13687654321","phone":"010-22226789","prov":"四川省","city":"成都市","county":"武侯区","address":"育德路497号","zipcode":"610012"},"items":[{"id":"1234567","name":"迷你风扇","category":"电子产品","material":"金属","size":"12,11,23","weight":"1","unitprice":"79","quantity":"1","remark":"黑色大号"},{"name":"USB3.0集线器","quantity":"1","remark":""}],"starttime":"2013-05-20 12:00:00","endtime":"2013-05-20 15:00:00","weight":753,"size":"12,23,11","quantity":2,"price":12650,"freight":1000,"premium":50,"packCharges":100,"otherCharges":0,"orderSum":0,"collectMoneytype":"CNY","collectSum":1200,"remark":"请勿摔货"}');
$ret = $client->execute($request);
return json_decode($ret,true);
}
//总对总订单,无用
public function plateOrder($sample=[],$address=[])
{
$data = [
"systemParameter"=> [
"serviceCode"=> "StoreDeliverGoods"
],
"orderInfo"=> [
"bagSize"=> "20,10,30",
"partnerCode"=> "3608036589234",
"companyCode"=> "GP1551922487",
"customerId"=> "zto001",
"hallCode"=> "S2044",
"billCode"=> null,
"pickUpCode"=> null,
"startTime"=> null,
"endTime"=> null,
"siteCode"=> "",
"weight"=> 1.23,
"freight"=> 0,
"orderSum"=> 230.12,
"otherCharges"=> 0,
"packCharges"=> 0,
"premium"=> 0,
"price"=> 0,
"quantity"=> "1",
"returnAddress"=> "江苏省苏州市姑苏区绿地大道320号金茂大厦负一楼203仓库",
"remark"=> "",
"receiver"=> [
"address"=> "外街道00号",
"city"=> "苏州市",
"company"=> "中通快递",
"county"=> "朝阳区",
"id"=> "",
"mobile"=> "13262709999",
"name"=> "黄某",
"phone"=> "",
"prov"=> "江苏省",
"zipCode"=> ""
],
"sender"=> [
"address"=> "华志路1685号",
"city"=> "蚌埠市",
"company"=> "中通快递股份有限公司",
"county"=> "怀远县",
"id"=> "15097756",
"mobile"=> "15216800000",
"name"=> "测试",
"phone"=> "",
"prov"=> "安徽省",
"zipCode"=> ""
]
]
];
$ret = $this->request('plateOrder',$data);
return $ret;
}
//散客预约订单
public function OpenOrderCreate($sample=[],$address=[])
{
$data = [
'orderGroup'=>[
"partnerCode"=> $sample['device_id'],//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
"type"=> 2,//订单类型 1 普通订单(线上),2线下联系订单 默认1
"tradeId"=> $sample['device_id'],//交易号,由合作商平台产生。
"mailNo"=> "",//运单号(有则提供,线下联系订单必须提供)
"sender"=> [
"id"=> $address['tel'],
"name"=> $address['name'],
"company"=> "",
"mobile"=> $address['tel'],
"phone"=> "",
"prov"=> $address['province'],
"city"=> $address['city'],
"county"=> $address['district'],
"address"=> $address['address'],
"zipcode"=> ""
],
"receiver"=> [
"id"=> "",
"name"=> "杨逸嘉",
"company"=> "逸嘉实业有限公司",
"mobile"=> "13687654321",
"phone"=> "010-22226789",
"prov"=> "四川省",
"city"=> "成都市",
"county"=> "武侯区",
"address"=> "育德路497号",
"zipcode"=> "610012"
],
"items"=> [
[
"id"=> "1234567",
"name"=> "唾液样本",
"category"=> "电子产品",
"material"=> "金属",
"size"=> "12,11,23",
"weight"=> "1",
"unitprice"=> "79",
"quantity"=> "1",
"remark"=> "黑色大号"
]
],
"starttime"=> "2013-05-20 12=>00=>00",
"endtime"=> "2013-05-20 15=>00=>00",
"weight"=> 100,
"size"=> "12,23,11",
"quantity"=> 1,
"price"=> 50,
"freight"=> 1000,
"premium"=> 50,
"packCharges"=> 100,
"otherCharges"=> 0,
"orderSum"=> 0,
"collectMoneytype"=> "CNY",
"collectSum"=> 1200,
"remark"=> ""
]
];
$ret = $this->request('OpenOrderCreate',$data);
/*
* Array
(
[message] => 服务暂不可用
[result] =>
[status] =>
[statusCode] => S203
)
*/
if($ret['status']){
//存订单
$order = $ret['result'];
$row = [
/*
'partner_code'=>$order['partnerCode'],//合作商订单号
'bill_code'=>$order['billCode'],// 运单号
'up_data'=>$order['upData'],// 状态:0-新增 1-更新
'mark'=>$order['mark'],// 三段码| 大头笔
'site_name'=>$order['siteName'],// 集包地
'site_code'=>$order['siteCode'],// 签约网点
*/
'order_code'=>$order['orderCode'],// 中通订单号
];
//订阅快递信息
$this->add($row);
return [true,''];
}
log_message('error', $ret['message']);
return [false,$ret['message']];
}
//散客预约订单,测试
public function test()
{
$data = [
//'orderGroup'=>[
"partnerCode"=> 'test20200210',//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
"type"=> 1,//订单类型 1 普通订单(线上),2线下联系订单 默认1
"tradeId"=> 'test20200210',//交易号,由合作商平台产生。
//"mailNo"=> "",//运单号(有则提供,线下联系订单必须提供)
"sender"=> [
"id"=> '1',
"name"=> '罗线上',
"company"=> "",
"mobile"=> '15815725225',
"phone"=> "",
"prov"=> '广东省',
"city"=> '深圳市',
"county"=> '宝安区',
"address"=> '创业立交附近新湖路一号',
"zipcode"=> ""
],
"receiver"=> [
//"id"=> "",
"name"=> "杨逸嘉",
"company"=> "中兴通讯有限公司",
"mobile"=> "13687654321",
"phone"=> "010-22226789",
"prov"=> "四川省",
"city"=> "成都市",
"county"=> "武侯区",
"address"=> "育德路497号",
"zipcode"=> "610012"
],
"items"=> [
[
"id"=> "1234567",
"name"=> "唾液样本",
"category"=> "电子产品",
"material"=> "金属",
"size"=> "12,11,23",
"weight"=> "1",
"unitprice"=> "79",
"quantity"=> "1",
"remark"=> "黑色大号"
]
],
"starttime"=> "2020-02-20 12:00:00",
"endtime"=> "2020-02-30 15:00:00",
"weight"=> 100,
"size"=> "12,23,11",
"quantity"=> 1,
"price"=> 50,
"freight"=> 1000,
"premium"=> 50,
"packCharges"=> 100,
"otherCharges"=> 0,
"orderSum"=> 0,
"collectMoneytype"=> "CNY",
"collectSum"=> 1200,
"remark"=> ""
//]
];
$data = [
"partnerCode"=> 'test20200210',//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
"sender"=> [
"id"=> '1',
"name"=> '罗线上',
"mobile"=> '15815725225',
"prov"=> '广东省',
"city"=> '深圳市',
"county"=> '宝安区',
"address"=> '创业立交附近新湖路一号',
],
"receiver"=> [
"name"=> "杨逸嘉",
"mobile"=> "13687654321",
"prov"=> "四川省",
"city"=> "成都市",
"county"=> "武侯区",
"address"=> "育德路497号",
]
];
$ret = $this->request('OpenOrderCreate',$data);
print_r($ret);die;
}
public function subscribeData($sample='',$address='')
{
}
//获取快件轨迹信息
public function traceInterfaceNewTraces($order_id)
{
$conf = $this->config->item('zto');
$data = [
"company_id"=> $conf['id'],
"msg_type"=> 'NEW_TRACES',
"data"=> json_encode([$order_id]),
];
return $this->request('traceInterfaceNewTraces',$data);
}
}
+9
View File
@@ -0,0 +1,9 @@
<?php
// 用药指导-MDR1
$temp = [
'皮肤类肿瘤疾病'=>'皮肤',
'皮肤肿瘤疾病'=>'皮肤',
];
+11
View File
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>