购买预存

main
fengxinyhyl 8 months ago
parent 0d76d0846d
commit 43935f4cf4
  1. 30
      app/common/dao/user/DepositRecordDao.php
  2. 7
      app/common/dao/user/LotteryRecordDao.php
  3. 44
      app/common/model/user/DepositRecord.php
  4. 2
      app/common/model/user/LotteryRecord.php
  5. 1
      app/common/repositories/store/order/StoreOrderRepository.php
  6. 123
      app/common/repositories/user/DepositRecordRepository.php
  7. 4
      app/common/repositories/user/LotteryRecordRepository.php
  8. 2
      app/controller/api/Auth.php

@ -0,0 +1,30 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\dao\user;
use app\common\dao\BaseDao;
use app\common\model\user\DepositRecord;
use app\common\model\user\UserRecharge;
use app\common\repositories\store\order\StoreOrderRepository;
class DepositRecordDao extends BaseDao
{
protected function getModel(): string
{
return DepositRecord::class;
}
public function createOrderId($uid)
{
$count = (int)DepositRecord::getDB()->where('uid', $uid)->where('create_time', '>=', date("Y-m-d"))->where('create_time', '<', date("Y-m-d", strtotime('+1 day')))->count();
return StoreOrderRepository::TYPE_SN_USER_DEPOSIT . date('YmdHis', time()) . ($uid . $count);
}
}

@ -8,19 +8,16 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\dao\store;
namespace app\common\dao\user;
use app\common\dao\BaseDao;
use app\common\model\store\Lottery;
use app\common\model\store\LotteryRecord;
use app\common\model\user\LotteryRecord;
class LotteryRecordDao extends BaseDao
{
protected function getModel(): string
{
return LotteryRecord::class;
}
}

@ -0,0 +1,44 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\model\user;
use app\common\model\BaseModel;
class DepositRecord extends BaseModel
{
public static function tablePk(): string
{
return 'id';
}
public static function tableName(): string
{
return 'deposit_record';
}
public function getPayParams($return_url = '')
{
$params = [
'order_sn' => $this->order_id,
'pay_price' => $this->price,
'attach' => 'deposit_record',
'body' => '用户预存'
];
if ($return_url) {
$params['return_url'] = $return_url;
}
return $params;
}
}

@ -8,7 +8,7 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\model\store;
namespace app\common\model\user;
use app\common\model\BaseModel;

@ -86,6 +86,7 @@ class StoreOrderRepository extends BaseRepository
const TYPE_SN_PRESELL = 'wxp';
const TYPE_SN_USER_ORDER = 'wxs';
const TYPE_SN_USER_RECHARGE = 'wxu';
const TYPE_SN_USER_DEPOSIT = 'wxd';
const TYPE_SN_SERVER_ORDER = 'cs';
const TYPE_SN_REFUND = 'rwx';
/**

@ -0,0 +1,123 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\repositories\user;
use app\common\dao\user\DepositRecordDao;
use app\common\model\user\DepositRecord;
use app\common\model\user\User;
use app\common\model\user\UserRecharge;
use app\common\repositories\BaseRepository;
use crmeb\jobs\SendSmsJob;
use crmeb\services\PayService;
use think\facade\Db;
use think\facade\Queue;
/**
* Class UserRechargeRepository
* @package app\common\repositories\user
* @author xaboy
* @day 2020/6/2
* @mixin DepositRecordDao
*/
class DepositRecordRepository extends BaseRepository
{
const TYPE_WECHAT = 'weixin';
const TYPE_ROUTINE = 'routine';
/**
* UserRechargeRepository constructor.
* @param DepositRecordDao $dao
*/
public function __construct(DepositRecordDao $dao)
{
$this->dao = $dao;
}
public function create($uid, int $depositId, string $type)
{
return $this->dao->create([
'uid' => $uid,
'deposit_id' => $depositId,
'deposit_type' => $type,
'order_id' => $this->dao->createOrderId($uid)
]);
}
public function getList($where, $page, $limit)
{
$query = $this->dao->searchJoinQuery($where)->order('a.pay_time DESC,a.create_time DESC');
$count = $query->count();
$list = $query->page($page, $limit)->select();
return compact('count', 'list');
}
/**
* @param string $type
* @param User $user
* @param UserRecharge $recharge
* @param string $return_url
* @return mixed
* @author xaboy
* @day 2020/10/22
*/
public function pay(string $type, User $user, DepositRecord $depositRecord, $return_url = '', $isApp = false)
{
if (in_array($type, ['weixin', 'alipay'], true) && $isApp) {
$type .= 'App';
}
$service = new PayService($type, $depositRecord->getPayParams($type === 'alipay' ? $return_url : ''),'deposit_record');
$config = $service->pay($user);
return $config + ['deposit_id' => $depositRecord['deposit_id'], 'type' => $type];
}
/**
* //TODO 余额充值成功
*
* @param $orderId
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author xaboy
* @day 2020/6/19
*/
public function paySuccess($orderId)
{
$recharge = $this->dao->getWhere(['order_id' => $orderId]);
if ($recharge->paid == 1) return;
$recharge->paid = 1;
$recharge->pay_time = date('Y-m-d H:i:s');
Db::transaction(function () use ($recharge) {
$price = bcadd($recharge->price, $recharge->give_price, 2);
$mark = '成功充值余额' . floatval($recharge->price) . '元' . ($recharge->give_price > 0 ? ',赠送' . $recharge->give_price . '元' : '');
app()->make(UserBillRepository::class)->incBill($recharge->user->uid, 'now_money', 'recharge', [
'link_id' => $recharge->recharge_id,
'status' => 1,
'title' => '余额充值',
'number' => $price,
'mark' => $mark,
'balance' => bcadd($recharge->user->now_money, $price, 2)
]);
$recharge->user->now_money = bcadd($recharge->user->now_money, $price, 2);
$recharge->user->save();
$recharge->save();
});
Queue::push(SendSmsJob::class,['tempId' => 'USER_BALANCE_CHANGE', 'id' =>$orderId]);
//小程序发货管理
event('mini_order_shipping', ['recharge', $recharge, 3, '', '']);
event('user.recharge',compact('recharge'));
}
}

@ -8,11 +8,11 @@
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\repositories\store;
namespace app\common\repositories\user;
use app\common\dao\store\GuaranteeDao;
use app\common\dao\store\LotteryDao;
use app\common\dao\store\LotteryRecordDao;
use app\common\dao\user\LotteryRecordDao;
use app\common\repositories\BaseRepository;
use app\common\repositories\user\UserAssetsRepository;

@ -15,7 +15,7 @@ namespace app\controller\api;
use app\common\repositories\store\DepositRepository;
use app\common\repositories\store\LotteryRecordRepository;
use app\common\repositories\user\LotteryRecordRepository;
use app\common\repositories\store\LotteryRepository;
use app\common\repositories\store\order\StoreGroupOrderRepository;
use app\common\repositories\store\order\StoreOrderRepository;

Loading…
Cancel
Save