From 62099ad7f326e69f3deb47edae16518f6d5d51e6 Mon Sep 17 00:00:00 2001
From: 13146336667 <33367671@qq.com>
Date: Thu, 11 Aug 2022 11:51:12 +0800
Subject: [PATCH] config
---
config/boot.inc.php | 2 +-
config/database.ini | 4 +-
control/callback.php | 2 +-
data/dOrder.php | 1 +
data/dShop.php | 1 +
httpd.template.txt | 370 ++++++++++++++++++++++++++++++++++++++++++
library/pinduoduo/pdd_api.php | 67 ++++++++
model/mOrder.php | 5 +
model/mPdd.php | 40 +++++
model/mShop.php | 3 +-
queue/base/cronBase.php | 2 +-
11 files changed, 491 insertions(+), 6 deletions(-)
create mode 100644 httpd.template.txt
diff --git a/config/boot.inc.php b/config/boot.inc.php
index 0da2c0a..eda1c71 100644
--- a/config/boot.inc.php
+++ b/config/boot.inc.php
@@ -1,7 +1,7 @@
addShop($name, $access_token, $expire_time, $uid);
+ $shopinfo = $sobj->addShop($name, $access_token, $info['owner_id'], $expire_time, $uid);
$_SESSION['app_uid'] = $shopinfo['uid'];
$_SESSION['app_name'] = $shopinfo['name'];
diff --git a/data/dOrder.php b/data/dOrder.php
index 853796a..54495f5 100644
--- a/data/dOrder.php
+++ b/data/dOrder.php
@@ -23,6 +23,7 @@ class dOrder extends dBase {
'urge_shipping_time',
'last_ship_time',
'buyer_memo',
+ 'risk_control_status'
),
);
diff --git a/data/dShop.php b/data/dShop.php
index 6be5271..a4e4f88 100644
--- a/data/dShop.php
+++ b/data/dShop.php
@@ -10,6 +10,7 @@ class dShop extends dBase {
'id',
'name',
'access_token',
+ 'owner_id',
'expire_time',
'uid'
),
diff --git a/httpd.template.txt b/httpd.template.txt
new file mode 100644
index 0000000..c6cc695
--- /dev/null
+++ b/httpd.template.txt
@@ -0,0 +1,370 @@
+#
+# This is the main Apache HTTP server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See for detailed information.
+# In particular, see
+#
+# for a discussion of each configuration directive.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do. They're here only as hints or reminders. If you are unsure
+# consult the online docs. You have been warned.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path. If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
+# with ServerRoot set to '/www' will be interpreted by the
+# server as '/www/log/access_log', where as '/log/access_log' will be
+# interpreted as '/log/access_log'.
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# Do not add a slash at the end of the directory path. If you point
+# ServerRoot at a non-local disk, be sure to specify a local disk on the
+# Mutex directive, if file-based mutexes are used. If you wish to share the
+# same ServerRoot for multiple httpd daemons, you will need to change at
+# least PidFile.
+#
+# ServerRoot "/etc/httpd"
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the
+# directive.
+#
+# Change this to Listen on specific IP addresses as shown below to
+# prevent Apache from glomming onto all bound IP addresses.
+#
+#Listen 12.34.56.78:80
+Listen ${SERVER_PORT}
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Statically compiled modules (those listed by `httpd -l') do not need
+# to be loaded here.
+#
+# Example:
+# LoadModule foo_module modules/mod_foo.so
+#
+Include conf.modules.d/*.conf
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# It is usually good practice to create a dedicated user and group for
+# running httpd, as with most system services.
+#
+User apache
+Group apache
+
+# 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# definition. These values also provide defaults for
+# any containers you may define later in the file.
+#
+# All of these directives may appear inside containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed. This address appears on some server-generated pages, such
+# as error documents. e.g. admin@your-domain.com
+#
+ServerAdmin root@localhost
+
+#
+# ServerName gives the name and port that the server uses to identify itself.
+# This can often be determined automatically, but we recommend you specify
+# it explicitly to prevent problems during startup.
+#
+# If your host doesn't have a registered DNS name, enter its IP address here.
+#
+#ServerName www.example.com:80
+
+#
+# Deny access to the entirety of your server's filesystem. You must
+# explicitly permit access to web content directories in other
+# blocks below.
+#
+
+ AllowOverride none
+ Require all denied
+
+
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/html"
+
+#
+# Relax access to content within /var/www.
+#
+
+ AllowOverride None
+ # Allow open access:
+ Require all granted
+
+
+# Further relax access to the default document root:
+
+ #
+ # Possible values for the Options directive are "None", "All",
+ # or any combination of:
+ # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
+ #
+ # Note that "MultiViews" must be named *explicitly* --- "Options All"
+ # doesn't give it to you.
+ #
+ # The Options directive is both complicated and important. Please see
+ # http://httpd.apache.org/docs/2.4/mod/core.html#options
+ # for more information.
+ #
+ Options Indexes FollowSymLinks
+
+ #
+ # AllowOverride controls what directives may be placed in .htaccess files.
+ # It can be "All", "None", or any combination of the keywords:
+ # Options FileInfo AuthConfig Limit
+ #
+ AllowOverride None
+
+ #
+ # Controls who can get stuff from this server.
+ #
+ Require all granted
+
+
+#
+# DirectoryIndex: sets the file that Apache will serve if a directory
+# is requested.
+#
+
+ DirectoryIndex index.html index.php
+
+
+#
+# The following lines prevent .htaccess and .htpasswd files from being
+# viewed by Web clients.
+#
+
+ Require all denied
+
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "/dev/stderr"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+
+ #
+ # The following directives define some format nicknames for use with
+ # a CustomLog directive (see below).
+ #
+ LogFormat "%t %h %l %u \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+ LogFormat "%t %h %l %u \"%r\" %>s %b" common
+
+
+ # You need to enable mod_logio.c to use %I and %O
+ LogFormat "%t %h %l %u \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
+
+
+ #
+ # The location and format of the access logfile (Common Logfile Format).
+ # If you do not define any access logfiles within a
+ # container, they will be logged here. Contrariwise, if you *do*
+ # define per- access logfiles, transactions will be
+ # logged therein and *not* in this file.
+ #
+ #CustomLog "logs/access_log" common
+
+ #
+ # If you prefer a logfile with access, agent, and referer information
+ # (Combined Logfile Format) you can use the following directive.
+ #
+ CustomLog "/dev/stdout" combined
+
+
+
+ #
+ # Redirect: Allows you to tell clients about documents that used to
+ # exist in your server's namespace, but do not anymore. The client
+ # will make a new request for the document at its new location.
+ # Example:
+ # Redirect permanent /foo http://www.example.com/bar
+
+ #
+ # Alias: Maps web paths into filesystem paths and is used to
+ # access content that does not live under the DocumentRoot.
+ # Example:
+ # Alias /webpath /full/filesystem/path
+ #
+ # If you include a trailing / on /webpath then the server will
+ # require it to be present in the URL. You will also likely
+ # need to provide a section to allow access to
+ # the filesystem path.
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the target directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the
+ # client. The same rules about trailing "/" apply to ScriptAlias
+ # directives as to Alias.
+ #
+ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+
+
+#
+# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+# CGI directory exists, if you have that configured.
+#
+
+ AllowOverride None
+ Options None
+ Require all granted
+
+
+
+ #
+ # TypesConfig points to the file containing the list of mappings from
+ # filename extension to MIME-type.
+ #
+ TypesConfig /etc/mime.types
+
+ #
+ # AddType allows you to add to or override the MIME configuration
+ # file specified in TypesConfig for specific file types.
+ #
+ #AddType application/x-gzip .tgz
+ #
+ # AddEncoding allows you to have certain browsers uncompress
+ # information on the fly. Note: Not all browsers support this.
+ #
+ #AddEncoding x-compress .Z
+ #AddEncoding x-gzip .gz .tgz
+ #
+ # If the AddEncoding directives above are commented-out, then you
+ # probably should define those extensions to indicate media types:
+ #
+ AddType application/x-compress .Z
+ AddType application/x-gzip .gz .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers":
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action directive (see below)
+ #
+ # To use CGI scripts outside of ScriptAliased directories:
+ # (You will also need to add "ExecCGI" to the "Options" directive.)
+ #
+ #AddHandler cgi-script .cgi
+
+ # For type maps (negotiated resources):
+ #AddHandler type-map var
+
+ #
+ # Filters allow you to process content before it is sent to the client.
+ #
+ # To parse .shtml files for server-side includes (SSI):
+ # (You will also need to add "Includes" to the "Options" directive.)
+ #
+ AddType text/html .shtml
+ AddOutputFilter INCLUDES .shtml
+
+
+#
+# Specify a default charset for all content served; this enables
+# interpretation of all content as UTF-8 by default. To use the
+# default browser choice (ISO-8859-1), or to allow the META tags
+# in HTML content to override this choice, comment out this
+# directive:
+#
+AddDefaultCharset UTF-8
+
+
+ #
+ # The mod_mime_magic module allows the server to use various hints from the
+ # contents of the file itself to determine its type. The MIMEMagicFile
+ # directive tells the module where the hint definitions are located.
+ #
+ MIMEMagicFile conf/magic
+
+
+#
+# Customizable error responses come in three flavors:
+# 1) plain text 2) local redirects 3) external redirects
+#
+# Some examples:
+#ErrorDocument 500 "The server made a boo boo."
+#ErrorDocument 404 /missing.html
+#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
+#ErrorDocument 402 http://www.example.com/subscription_info.html
+#
+
+#
+# EnableMMAP and EnableSendfile: On systems that support it,
+# memory-mapping or the sendfile syscall may be used to deliver
+# files. This usually improves server performance, but must
+# be turned off when serving from networked-mounted
+# filesystems or if support for these functions is otherwise
+# broken on your system.
+# Defaults if commented: EnableMMAP On, EnableSendfile Off
+#
+#EnableMMAP off
+EnableSendfile on
+
+# Supplemental configuration
+#
+# Load config files in the "/etc/httpd/conf.d" directory, if any.
+IncludeOptional conf.d/*.conf
+
+# 11782 端口号填写为slb或容器(slb端口号=容器端口号)的端口号
+
+ServerName kuaileorder.gavinlau.cn
+
+DocumentRoot /var/www/html
+ErrorLog /var/log/httpd/kuaileorder-error_log
+CustomLog /var/log/httpd/kuaileorder-access_log combined
+
+RewriteEngine on
+RewriteRule ^/images/(.*)$ /view/images/$1 [L]
+RewriteRule ^/css/(.*)$ /view/css/$1 [L]
+RewriteRule ^/js/(.*)$ /view/js/$1 [L]
+RewriteRule ^/font/(.*)$ /view/font/$1 [L]
+RewriteRule ^(.*)$ /index.php?argv=$1 [L]
+
diff --git a/library/pinduoduo/pdd_api.php b/library/pinduoduo/pdd_api.php
index da14f7e..dedb2ce 100644
--- a/library/pinduoduo/pdd_api.php
+++ b/library/pinduoduo/pdd_api.php
@@ -228,6 +228,73 @@ class PDD {
}
/**
+ * 获取开通订单同步服务的用户
+ * https://open.pinduoduo.com/application/document/api?id=pdd.ddy.pdp.users.get
+ *
+ * @param string $owner_id 如果传了owner_id,表示单条查询
+ * @param string $start_modified 查询最后更改时间在某个时间段内的用户
+ * @param string $end_modified 查询最后更改时间在某个时间段内的用户
+ * @param number $page_no 当前页数
+ * @param number $page_size 每页记录数,默认200,最大200
+ * @return boolean|mixed
+ *
+ * { ["ddy_pdp_users_get_response"]=> array(3) { ["request_id"]=> string(17) "16601863037551775" ["users"]=> array(0) { } ["total_results"]=> int(0) } }
+ */
+ public function getDdyPdpUsers($owner_id='', $start_modified='', $end_modified='', $page_no=1, $page_size=200) {
+ $params = $this->getPublicParams();
+
+ $params['type'] = 'pdd.ddy.pdp.users.get';
+ if ($owner_id) $params['owner_id'] = $owner_id;
+ if ($start_modified) $params['start_modified'] = $start_modified;
+ if ($end_modified) $params['end_modified'] = $end_modified;
+ if ($page_no) $params['page_no'] = $page_no;
+ if ($page_size) $params['page_size'] = $page_size;
+
+ $params['sign'] = $this->getSignature($params);
+
+ return $this->postRequest(json_encode($params));
+ }
+
+ /**
+ * 添加数据推送用户
+ * https://open.pinduoduo.com/application/document/api?id=pdd.ddy.pdp.user.add
+ *
+ * @param unknown $rds_id
+ * @param unknown $history_days
+ */
+ public function addDdyPdpUser($rds_id, $history_days=-1) {
+ $params['type'] = 'pdd.ddy.pdp.user.add';
+ $params['rds_id'] = $rds_id;
+ if ($history_days > -1) $params['history_days'] = $history_days;
+
+ return $this->getPostRequestResult($params);
+ }
+
+ /**
+ * 删除数据推送用户
+ * https://open.pinduoduo.com/application/document/api?id=pdd.ddy.pdp.user.delete
+ *
+ * @param unknown $owner_id
+ * @return boolean|mixed
+ */
+ public function deleteDdyPdpUser($owner_id) {
+ $params['type'] = 'pdd.ddy.pdp.user.delete';
+ $params['$owner_id'] = $owner_id;
+
+ return $this->getPostRequestResult($params);
+ }
+
+ private function getPostRequestResult($params) {
+ $pub_params = $this->getPublicParams();
+
+ $nparams = array_merge($pub_params, $params);
+
+ $nparams['sign'] = $this->getSignature($params);
+
+ return $this->postRequest(json_encode($nparams));
+ }
+
+ /**
* 公共参数
*/
public function getPublicParams() {
diff --git a/model/mOrder.php b/model/mOrder.php
index 42333a8..f741e5f 100644
--- a/model/mOrder.php
+++ b/model/mOrder.php
@@ -48,6 +48,9 @@ class mOrder extends mBase {
// 买家留言信息
public $buyer_memo = '';
+ // 风控字段状态字段:risk_control_status:值为 1 则为风控订单,值为 0 则为正常订单。
+ public $risk_control_status = 0;
+
public function __construct() {
$this->obj = new dOrder();
$this->order = 'order_list';
@@ -67,6 +70,7 @@ class mOrder extends mBase {
$data['sku_id'] = $this->sku_id;
$data['goods_price'] = $this->goods_price;
$data['goods_count'] = $this->goods_count;
+ $data['risk_control_status'] = $this->risk_control_status+0;
if ($this->urge_shipping_time) $data['urge_shipping_time'] = $this->urge_shipping_time;
if ($this->last_ship_time) $data['last_ship_time'] = $this->last_ship_time;
@@ -232,6 +236,7 @@ class mOrder extends mBase {
$this->urge_shipping_time = $order['urge_shipping_time'];
$this->last_ship_time = $order['last_ship_time'];
$this->buyer_memo = $order['buyer_memo'];
+ $this->risk_control_status = $order['risk_control_status'];
$this->addOrder($shop_id, $uid);
diff --git a/model/mPdd.php b/model/mPdd.php
index eb2ebf3..c0b11eb 100644
--- a/model/mPdd.php
+++ b/model/mPdd.php
@@ -257,4 +257,44 @@ class mPdd extends mBase {
return $res['order_sn_increment_get_response'];
}
+ public function getPddDdyPdpUsers($owner_id='', $start_modified='', $end_modified='', $page_no=1, $page_size=200) {
+ $obj = new PDD(PDD_CLIENT_ID, PDD_CLIENT_SECRET);
+ $res = $obj->getDdyPdpUsers($owner_id, $start_modified, $end_modified, $page_no, $page_size);
+
+ $res = json_decode($res, true);
+ if (isset($res['error_response'])) {
+ $this->setError($res['error_response']['error_msg'].' '.$res['error_response']['sub_msg']);
+ return false;
+ }
+
+ return $res['ddy_pdp_users_get_response'];
+
+ }
+
+ public function addPddDdyPdpUser($rds_id, $history_days=-1) {
+ $obj = new PDD(PDD_CLIENT_ID, PDD_CLIENT_SECRET);
+ $res = $obj->addDdyPdpUser($rds_id, $history_days);
+
+ $res = json_decode($res, true);
+ if (isset($res['error_response'])) {
+ $this->setError($res['error_response']['error_msg'].' '.$res['error_response']['sub_msg']);
+ return false;
+ }
+
+ return $res['ddy_pdp_user_add_response'];
+ }
+
+ public function deletePddDdyPdpUser($owner_id) {
+ $obj = new PDD(PDD_CLIENT_ID, PDD_CLIENT_SECRET);
+ $res = $obj->deleteDdyPdpUser($owner_id);
+
+ $res = json_decode($res, true);
+ if (isset($res['error_response'])) {
+ $this->setError($res['error_response']['error_msg'].' '.$res['error_response']['sub_msg']);
+ return false;
+ }
+
+ return $res['ddy_pdp_users_delete_response'];
+ }
+
}
\ No newline at end of file
diff --git a/model/mShop.php b/model/mShop.php
index 79e8bb1..363476e 100644
--- a/model/mShop.php
+++ b/model/mShop.php
@@ -15,9 +15,10 @@ class mShop extends mBase {
$this->shop = 'shop_list';
}
- public function addShop($name, $access_token, $expire_time, $uid=0) {
+ public function addShop($name, $access_token, $owner_id, $expire_time, $uid=0) {
$data = array();
$data['access_token'] = $access_token;
+ $data['owner_id'] = $owner_id;
$data['expire_time'] = $expire_time;
$info = $this->getShopByName($name);
diff --git a/queue/base/cronBase.php b/queue/base/cronBase.php
index d335da2..1daa688 100644
--- a/queue/base/cronBase.php
+++ b/queue/base/cronBase.php
@@ -14,7 +14,7 @@ abstract class cronBase {
protected $procnum = 1; // 默认启动进程数
protected $maxtimelist; // 队列进程最大执行时间限制列表
protected $maxtime = 480; // 队列一次循环的默认最长时间, 未自定义则该项有效, 超过该值进程将被杀死
- protected $bin_php = '/usr/local/bin/php'; // php执行文件路径
+ protected $bin_php = '/usr/bin/php'; // php执行文件路径
private $path_daemon; // ROOT根目录
private $proc_start; // 启动队列的进程信息