feat: init project codebase
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************
|
||||
* 菜单模型部分结束
|
||||
***********************/
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************
|
||||
* 菜单模型部分结束
|
||||
***********************/
|
||||
}
|
||||
@@ -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'];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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/G(p.A31P)
|
||||
G/A(p.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/inr(c.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/A(c.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 / A(c.140C>T)
|
||||
C/T(c. 331G>A',
|
||||
'检测结果'=>[
|
||||
'N/N'=>'无目标突变导致的遗传患病风险',
|
||||
'N/F'=>'杂合突变',
|
||||
'F/F'=>'纯合突变',
|
||||
],
|
||||
'结果说明'=>[
|
||||
'N/N'=>'不携带突变基因。不会患病,也不会传递给下一代',
|
||||
'N/F'=>'携带一份突变基因。不会出现先天性红细胞生成性卟啉症症状,但会传递给一半的后代',
|
||||
'F/F'=>'携带两份突变基因。先天性红细胞生成性卟啉症症状严重',
|
||||
]
|
||||
],
|
||||
'自身免疫性淋巴细胞增生综合症'=>[
|
||||
'检测项目'=>'自身免疫性淋巴细胞增生综合症',
|
||||
'检测手段'=>'Sanger 测序',
|
||||
'基因型'=>'-/A(c.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/T(c.1342C>T)
|
||||
A/G(c.1846A>G)
|
||||
C/T(c.1175C>T)
|
||||
G/A(c.706G>A)
|
||||
T/A(c.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/T(c.1014C>T)
|
||||
G/A(c.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/A(c.1051G>A)
|
||||
C/T(c.C1424T)
|
||||
T/G(c.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];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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'];
|
||||
|
||||
}
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
/***********************
|
||||
* 角色模型部分结束
|
||||
***********************/
|
||||
}
|
||||
@@ -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){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
class Sample_processing_model extends MY_Model
|
||||
{
|
||||
protected $table = 'sample_processing';
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
class Sample_upgrade_order_model extends MY_Model
|
||||
{
|
||||
protected $table = 'sample_upgrade_order';
|
||||
protected $has_update_time = false;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
class Ship_order_model extends MY_Model
|
||||
{
|
||||
protected $table = 'ship_order';
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/***********************
|
||||
* 用户模型部分结束
|
||||
***********************/
|
||||
}
|
||||
@@ -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'];
|
||||
|
||||
}
|
||||
@@ -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
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
|
||||
// 用药指导-MDR1
|
||||
|
||||
$temp = [
|
||||
'皮肤类肿瘤疾病'=>'皮肤',
|
||||
'皮肤肿瘤疾病'=>'皮肤',
|
||||
];
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user