1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/leubao-daxiong-system

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 29 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.06.2025 08:04 eab2a94

Структура каталога

├── App
│   ├── Config              Конфигурационные файлы проекта
├   │── Crontab             Задачи по расписанию
│   │ └── Job               Коллекция задач по расписанию    
│   ├── Exception           Обработка исключений
│   ├── HttpController      
│   ├── Lib                 Библиотека
│   ├── Logic               Логический слой
│   ├── Robot               Робот
│   ├── Model               Модельный слой
│   ├── Process             Пользовательский процесс
│   ├── Queue               Очередь сообщений
│   │ └── Job               Коллекция задач очереди сообщений             
│   ├── Service             Слой сервисов
│   ├── Task                Асинхронные задачи
│   ├── Utility             Инструменты
│   └── Validate            Классы валидации
├── EasySwooleEvent.php
├── Readme.md
├── Sql
├── bootstrap.php
├── composer.json
├── composer.lock
├── dev.php
├── easyswoole
├── index.html
├── produce.php
└── vendor

Описание кода

1. Описание аутентификации подписи

Передняя часть собирает строку запроса в соответствии с параметрами запроса. Каждый интерфейс должен пройти аутентификацию подписи для корректной работы. Пожалуйста, следуйте нижеприведенному процессу для шифрования подписи.

1. Описание формата строки подписи

Формат строки подписи приведен ниже. Пожалуйста, собирайте строку в соответствии с приведенным форматом.```http request "app_secret="+app_secret+"&"+query+"&"+body+"&timestamp="+timestamp


| Имя параметра        | Описание параметра    |
| --------   | :----  |
| app_secret        | Секретный ключ приложения, предоставленный сервером. Пример: dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx      | 
| query        | Параметры запроса GET. Пример: page=1&pageSize=1. Пожалуйста, собирайте параметры в соответствии с '&'      | 
| body        | Параметры запроса POST. Пример: page=1&pageSize=1. Пожалуйста, собирайте параметры в соответствии с '&'. Если используется JSON-формат, используйте зашифрованную строку JSON.      | 
| timestamp        | Тайм-стамп текущего запроса. Пожалуйста, используйте текущий тайм-стамп. Устаревший тайм-стамп приведет к отказу запроса. С момента 1 января 1970 года (UTC/GMT) количество секунд, прошедших с начала эпохи. Пример: 1642837463     | 

#### 2. Описание шифрования строки подписи

> Правила шифрования подписи приведены ниже. JS-код представлен ниже:
```javascript
// md5 шифрование и преобразование шифр-строки в верхний регистр
var sign = CryptoJS.MD5(string).toString().toUpperCase();
// Шифрование md5-строки с помощью hash256
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();

3. Шифрование json-строки

Правила шифрования json-строки: преобразование json-объекта в строку, затем шифрование строки с помощью DES-ECB и одновременное выполнение base64-кодирования. JS-код представлен ниже:

// Преобразование в json-строку
var bodyString = JSON.stringify({
    "page": 1,
    "pageSize": 9,
    "id2": 'sdasdasdasd1111',
    "id": 1
});
```// Шифрование json с помощью des
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);

#### 4 Пример тестового кода (может использоваться в Postman)

#### 1 GET тестовый код

```javascript
// GET тест
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";

// Соответствие параметров запроса в Postman
var query = "page=1&pageSize=1";
// Соответствие параметров form-data в Postman
var body = "";
var string = "app_secret=" + app_secret + "&" + query + "&" + body + "&timestamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();

// Установка переменных в Postman
pm.variables.set('sign', sign);

2 POST тестовый код

// POST тест
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";

// Соответствие параметров запроса в Postman
var query = "page=1&pageSize=1";
// Соответствие параметров form-data в Postman
var body = "p=1&a=1";
var string = "app_secret=" + app_secret + "&" + query + "&" + body + "&timestamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();

// Установка переменных в Postman
pm.variables.set('sign', sign);

3 JSON тестовый код

// JSON тест. Пожалуйста, поместите переменную {{body_encrypt}} в поле body raw в Postman
var timestamp = Math.round(new Date().getTime() / 1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";

// Соответствие параметров запроса в Postman
var query = "page=1&data=1";
```Преобразование в JSON-строку
```javascript
var bodyString = JSON.stringify({
    "page": 1,
    "pageSize": 9,
    "id2": 'sdasdasdasd1111',
    "id": 1
});
```Шифрование DES для JSON
```javascript
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
pm.variables.set('body_encrypt', body_encrypt);

Шифрование для создания подписи

var string = "app_secret=" + app_secret + "&" + query + "&" + body_encrypt + "&timestamp=" + timestamp;
var sign = CryptoJS.MD5(string).toString().toUpperCase();
sign = CryptoJS.HmacSHA256(sign, app_secret).toString();
pm.variables.set('sign', sign);

Создание таблицы sys_platform_account

CREATE TABLE `sys_platform_account` (
  `id` int(11) NOT NULL COMMENT 'ID',
  `platform` char(50) NOT NULL COMMENT 'Соответствующий платформе, ссылающийся на словарь platform_type',
  `account` char(100) NOT NULL COMMENT 'Аккаунт или APPID, уникальный идентификатор для третьей стороны',
  `config` text NOT NULL COMMENT 'Конфигурация платформы',
  `store_id` int(11) NOT NULL COMMENT 'ID арендатора',
  `create_time` datetime NOT NULL COMMENT 'Дата создания',
  `update_time` datetime NOT NULL COMMENT 'Дата обновления',
  `create_by` int(11) NOT NULL COMMENT 'Создатель',
  `update_by` int(11) NOT NULL COMMENT 'Обновитель',
  `status` tinyint(1) NOT NULL COMMENT 'Статус',
  `del_flag` tinyint(1) NOT NULL COMMENT 'Флаг удаления'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Таблица конфигурации платформы';

--
-- Индексы таблицы `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
  ADD PRIMARY KEY (`id`),
  ADD KEY `store_id` (`store_id`),
  ADD KEY `platform` (`platform`);

--
-- AUTO_INCREMENT для таблицы `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';

Конфигурация Nginx

location / {
  proxy_http_version 1.1;
  proxy_set_header Connection "keep-alive";
  proxy_set_header X-Real-IP $remote_addr;
  // Включение websocket
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  if (!-f $request_filename) {
    proxy_pass http://127.0.0.1:9502;
  }
}
```## Ссылки на проекты
Уведомления WeChat, DingTalk https://github.com/wonder-game/es-notify
Утилиты https://github.com/wonder-game/es-utility### Ручная установка xlswriter

```text
wget https://pecl.php.net/get/xlswriter-1.5.5.tgz
tar -zxvf xlswriter-1.5.5.tgz
cd xlswriter-1.5.5/
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config
make && make install
echo "extension = xlswriter.so" >> /www/server/php/74/etc/php.ini
/etc/init.d/php-fpm-74 reload
/www/server/php/74/bin/php -m|grep -i xlswriter

Установка ImageMagick

Использование расширения для сжатия изображений

Строительство китайского банка объединенного платежа

Запуск проверки подписи
nohup java -jar ccbnetpaysign.jar SERVLET:55533 >Ccbnetpaysign.log 2>&1 &

Услуга возврата платежа китайского банка

ssh root@125.124.34.33

Правила порядка параметров промо-кода. Закодированная длина 16 байт

1. Значение сценария промо-кода по умолчанию 0
2. ID промо-пользователя по умолчанию 0
3. ID торгового партнера промо-кода по умолчанию 0
4. ID промо-акции по умолчанию 0
5. ID группы членства по умолчанию 0

Правила генерации промокодов и кодов отмены

1. ID промокода coupon_id
2. ID пользователя member_id
3. ID связанного торгового партнера link_store
4. Тип кода 1 промокод 2 код отмены

Правила анализа пользовательской цепочки стратегии цен```text

Цепочка пользовательской стратегии цен определяет, какие цены применимы к пользователю.

  1. Для административного интерфейса: цепочка пользовательской стратегии цен — текущий торговый партнёр.
  2. Для API:
  • Если текущий пользователь является администратором торгового партнёра, цепочка пользовательской стратегии цен — торговый партнёр -> текущий пользователь.
  • Если текущий пользователь не является администратором, и в течение 24 часов сканировал QR-код дистрибьютора, цепочка пользовательской стратегии цен — дистрибьютор -> текущий пользователь.
### Правила подтверждения стратегии цен

```text
Для удобства цепочки пользовательской стратегии цен, ищутся цены продукта в следующем порядке, пока не будет найдено:
1. Уникальная цена для текущего пользователя.
2. Цена для группы пользователей, к которой принадлежит текущий пользователь.
3. По умолчанию цена продукта.

Правила определения пользователей для комиссий

1. Пользователи второго уровня для комиссий:
 - Если текущий пользователь является дистрибьютором, то он является пользователем второго уровня.
 - Если текущий пользователь не является дистрибьютором, и в течение 24 часов сканировал QR-код дистрибьютора, то последний дистрибьютор, который сканировал QR-код, является пользователем второго уровня для комиссий.
2. Пользователи первого уровня для комиссий:
 Пользователь первого уровня для комиссий — дистрибьютор, который промо-кодом привлёк пользователя второго уровня.
3. Для второго уровня дистрибьюторства применяются правила 1 и 2, для первого уровня — только правило 1.

Правила предварительного расчета комиссий```text

  1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
  2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
  3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с правилами комиссий и пользователями для комиссий в стратегии цен.
2. Если сумма комиссий пользователя больше суммы оплаты заказа, комиссия пользователя корректируется до 0.
3. Если общая сумма комиссий больше суммы оплаты заказа, комиссии пользователей корректируются до 0.
```### Правила вывода комиссий с WeChat
```text
1. При оплате транзакции и ожидании использования, комиссии рассчитываются в соответствии с```text
1. Процесс вывода:
Сначала производится попытка вывода. Если вывод успешен, оставшийся баланс переводится. Если вывод неудачен, весь баланс переводится.
2. Правила:
Попытка вывода через WeChat для текущего пользователя = (комиссионный доход пользователя / общая комиссия) * максимальная сумма вывода через WeChat
Максимальная сумма вывода через WeChat составляет 30%.
3. Пример:
Заказ на сумму 100, комиссия первого уровня 8, комиссия второго уровня 42, общая комиссия 50, максимальная сумма вывода через WeChat 30.
Вывод первого уровня: 8/50*30, оставшийся баланс переводится.
Вывод второго уровня: 42/50*30, оставшийся баланс переводится.

Все изменения в тексте включены, сохранены исходное форматирование и разметка.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/leubao-daxiong-system.git
git@api.gitlife.ru:oschina-mirror/leubao-daxiong-system.git
oschina-mirror
leubao-daxiong-system
leubao-daxiong-system
master