123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- namespace app\common\service;
- use app\common\model\OrdersKuaifen;
- use app\main\model\object\OrderObject;
- use app\main\service\LogService;
- use GuzzleHttp\Client as Http;
- use GuzzleHttp\Exception\GuzzleException;
- use GuzzleHttp\RequestOptions;
- use think\Config;
- class KuaifenService
- {
- public static $self;
- public static function instance()
- {
- if (self::$self == null) {
- self::$self = new self();
- }
- return self::$self;
- }
- /**
- * @return OrdersKuaifen
- */
- public function getOrderKuaifenModel()
- {
- return model('OrdersKuaifen');
- }
- /**
- * 快分渠道商id
- * @return mixed|null
- */
- public function getKuaifenChannelId()
- {
- return Config::get('site.kuaifen_channel_id');
- }
- /**
- * 快分合作推广书籍id
- * @return array|false|string[]
- */
- public function getKuaifenBookIds()
- {
- $strBookIds = Config::get('site.kuaifen_book_ids');
- if ($strBookIds) {
- return explode(',', $strBookIds);
- } else {
- return [];
- }
- }
- /**
- * 创建快分订单
- * @param $ordersId
- * @param $userId
- */
- public function createKuaifenOrders($ordersId, $ordersChannelId, $userId, $bookId, $money, $outTradeNo)
- {
- $kuaifenChannelId = $this->getKuaifenChannelId();
- if ($kuaifenChannelId != $ordersChannelId) {
- return;
- }
- $kuaifenId = UserVipExtendService::instance()->getUserKuaifenId($userId);
- if ($kuaifenId) {
- $data = [
- 'orders_id' => $ordersId,
- 'user_id' => $userId,
- 'kuaifen_id' => $kuaifenId,
- 'book_id' => $bookId,
- 'out_trade_no' => $outTradeNo,
- 'money' => $money,
- 'createtime' => time(),
- 'updatetime' => time(),
- ];
- $this->getOrderKuaifenModel()->insert($data);
- }
- }
- /**
- * 向快分app上报用户充值
- * @param OrderObject $oOrder
- */
- public function reportOrders(OrderObject $oOrder)
- {
- $kuaifenChannelId = $this->getKuaifenChannelId();
- if ($oOrder->admin_id != $kuaifenChannelId) {
- return;
- }
- if ($oOrder->activity_id) {
- $bookId = 2;
- } elseif ($oOrder->book_id) {
- $bookId = $oOrder->book_id;
- } else {
- $bookId = 1;
- }
- $kuaifenOrder = $this->getOrderKuaifenModel()->where('orders_id', $oOrder->id)->find();
- if (empty($kuaifenOrder)) {
- return;
- }
- $apiUrl = 'https://kf.subno.cn/api/reportIncome.php';
- $params = [
- 'cid' => $oOrder->id,
- 'uid' => $kuaifenOrder['kuaifen_id'],
- 'xsid' => $bookId,
- 'money' => $oOrder->money,
- 'seconds' => $oOrder->createtime,
- 'chargeTime' => date('Y-m-d H:i:s'),
- ];
- ksort($params);
- $str = http_build_query($params);
- $str = $str . 'KbGyb9AG';
- LogService::info('signOldStr:' . $str);
- $str = urldecode($str);
- $sign = md5($str);
- $params['sign'] = $sign;
- try {
- $client = new Http([
- 'connect_timeout' => 10,
- 'timeout' => 30,
- 'http_errors' => true, //抛出异常 true是 false否
- 'verify' => false, //不验证ssl证书
- ]);
- $result = $client->post($apiUrl, [RequestOptions::FORM_PARAMS => $params]);
- if ($result->getStatusCode() != '200') {
- LogService::error(sprintf('kuaifen report orders error! params:%s,result:%s',
- json_encode($params, JSON_UNESCAPED_UNICODE),
- json_encode(var_export($result, true), JSON_UNESCAPED_UNICODE)));
- }
- } catch (GuzzleException $e) {
- LogService::error(sprintf('kuaifen exception report orders error! params:%s,message:%s',
- json_encode($params, JSON_UNESCAPED_UNICODE), $e->getMessage()));
- LogService::error($e->getTraceAsString());
- }
- $this->getOrderKuaifenModel()->where('orders_id', $oOrder->id)->update(['state' => 1, 'updatetime' => time()]);
- }
- public function getTotalIncomeByUser($kuaifenId, $beginTime, $endTime, $bookId)
- {
- $query = $this->getOrderKuaifenModel()->where('kuaifen_id', $kuaifenId)->whereBetween('createtime',
- "$beginTime, $endTime");
- if (!empty($bookId)) {
- $query->where('book_id', $bookId);
- }
- $sumMoney = $query->sum('money');
- return $sumMoney;
- }
- public function getTotalIncome($beginTime, $endTime, $bookId)
- {
- $query = $this->getOrderKuaifenModel()->whereBetween('createtime', "$beginTime, $endTime");
- if (!empty($bookId)) {
- $query->where('book_id', $bookId);
- }
- $sumMoney = $query->sum('money');
- return $sumMoney;
- }
- public function getOrdersKuaifen($ordersId)
- {
- $orders = $this->getOrderKuaifenModel()->where('orders_id', $ordersId)->find();
- return $orders;
- }
- }
|