添加:商户积分兑换平台积分比例设置、平台积分在商户使用时兑换比例设置。

修改:下单赠送积分区分商户
This commit is contained in:
wuhui_zzw 2023-11-07 11:41:23 +08:00
parent e88a2f1acf
commit e248e6b175
6 changed files with 187 additions and 15 deletions

View File

@ -0,0 +1,46 @@
<?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\BaseModel;
use app\common\model\user\Integral;
/**
* Common: 用户积分
* Author: wu-hui
* Time: 2023/11/07 10:13
* Class IntegralDao
* @package app\common\dao\user
*/
class IntegralDao extends BaseDao{
/**
* Common: 初始化模型
* Author: wu-hui
* Time: 2023/11/07 10:13
* @return BaseModel
*/
protected function getModel(): string
{
return Integral::class;
}
}

View File

@ -0,0 +1,47 @@
<?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 Integral extends BaseModel
{
/**
* @return string
* @author xaboy
* @day 2020-03-30
*/
public static function tablePk(): string
{
return 'integral_id';
}
/**
* @return string
* @author xaboy
* @day 2020-03-30
*/
public static function tableName(): string
{
return 'integral';
}
public function user()
{
return $this->hasOne(User::class, 'uid', 'uid');
}
}

View File

@ -33,6 +33,7 @@ use app\common\repositories\system\attachment\AttachmentRepository;
use app\common\repositories\system\merchant\FinancialRecordRepository;
use app\common\repositories\system\merchant\MerchantRepository;
use app\common\repositories\system\serve\ServeDumpRepository;
use app\common\repositories\user\IntegralRepository;
use app\common\repositories\user\UserBillRepository;
use app\common\repositories\user\UserBrokerageRepository;
use app\common\repositories\user\UserMerchantRepository;
@ -496,7 +497,7 @@ class StoreOrderRepository extends BaseRepository
*/
public function getNewOrderId($type)
{
list($msec, $sec) = explode(' ', microtime());
[$msec, $sec] = explode(' ', microtime());
$msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
$orderId = $type . $msectime . mt_rand(10000, max(intval($msec * 10000) + 10000, 98369));
return $orderId;
@ -644,18 +645,33 @@ class StoreOrderRepository extends BaseRepository
return $data;
}
public function giveIntegral($groupOrder)
{
if ($groupOrder->give_integral > 0) {
app()->make(UserBillRepository::class)->incBill($groupOrder->uid, 'integral', 'lock', [
'link_id' => $groupOrder['group_order_id'],
'status' => 0,
'title' => '下单赠送积分',
'number' => $groupOrder->give_integral,
'mark' => '成功消费' . floatval($groupOrder['pay_price']) . '元,赠送积分' . floatval($groupOrder->give_integral),
'balance' => $groupOrder->user->integral
]);
public function giveIntegral($groupOrder){
// Log::info('赠送积分 - group-order' . var_export(is_array($groupOrder->user->toArray()) ? $groupOrder->user->toArray() : $groupOrder->user, true));
// 修改每个订单单独赠送积分并且实时到账同时区分商户id
foreach($groupOrder->orderList as $orderInfo){
$giveIntegral = (float)sprintf("%.2f",$orderInfo->give_integral);
if ($giveIntegral > 0) {
// 总积分到账
app()->make(UserRepository::class)->incIntegral((int)$orderInfo->uid,$giveIntegral,'订单赠送积分','lock',[
'number' => $giveIntegral,
'mark' => '成功消费' . (float)sprintf("%.2f",$orderInfo->pay_price) . '元,赠送积分' . $giveIntegral
]);
// 商户积分变更
app()->make(IntegralRepository::class)->changeIntegral((int)$orderInfo->uid,(int)$orderInfo->mer_id,$giveIntegral);
}
}
# 2023-11-7 弃用,由指定时间到账修改为实时到账,并且区分每个商户的积分
// if ($groupOrder->give_integral > 0) {
// app()->make(UserBillRepository::class)->incBill($groupOrder->uid, 'integral', 'lock', [
// 'link_id' => $groupOrder['group_order_id'],
// 'status' => 0,
// 'title' => '下单赠送积分',
// 'number' => $groupOrder->give_integral,
// 'mark' => '成功消费' . floatval($groupOrder['pay_price']) . '元,赠送积分' . floatval($groupOrder->give_integral),
// 'balance' => $groupOrder->user->integral
// ]);
// }
}
/**

View File

@ -0,0 +1,61 @@
<?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\IntegralDao;
use app\common\repositories\BaseRepository;
/**
* Common: ...
* Author: wu-hui
* Time: 2023/11/07 10:34
* Class IntegralRepository
* @package app\common\repositories\user
*/
class IntegralRepository extends BaseRepository
{
/**
* @var IntegralDao
*/
protected $dao;
/**
* IntegralRepository constructor.
* @param IntegralDao $dao
*/
public function __construct(IntegralDao $dao)
{
$this->dao = $dao;
}
/**
* Common: 积分变更
* Author: wu-hui
* Time: 2023/11/07 10:45
* @param int $uid
* @param int $mer_id
* @param float $changeNumber
*/
public function changeIntegral(int $uid, int $mer_id, float $changeNumber){
$info = $this->dao->findOrCreate([
'uid' => $uid,
'mer_id' => $mer_id
]);
$info->number = (float)sprintf("%.2f",$info->number + $changeNumber);
$info->save();
}
}

View File

@ -1287,9 +1287,9 @@ class UserRepository extends BaseRepository
'link_id' => 0,
'status' => 1,
'title' => $title,
'number' => $data['number'],
'number' => $data['number'] ?? $number,
'mark' => $data['mark'],
'balance' =>$data['balance'],
'balance' =>$data['balance'] ?? $user->integral,
]);
});
}

View File

@ -36,6 +36,7 @@ class AutoClearIntegralListen extends TimerService implements ListenerInterface
$this->tick(1000 * 60 * 20, function () {
request()->clearCache();
if (!systemConfig('integral_status')) return;
if ((int)systemConfig('integral_clear_time') <= 0) return;// 过期时间未设置或者为0 则永不过期
$make = app()->make(IntegralRepository::class);
$end = $make->getTimeoutDay();
if ($end == strtotime(date('Y-m-d') . ' 00:00:00')) {
@ -52,7 +53,8 @@ class AutoClearIntegralListen extends TimerService implements ListenerInterface
usleep(100);
});
}
} else if ($end < strtotime('+15 day')) {
}
else if ($end < strtotime('+15 day')) {
$make1 = app()->make(UserBillRepository::class);
$invalidDay = $make->getInvalidDay();
$cache = Cache::store('file');