增加:开通共享股东 赠送餐费积分

This commit is contained in:
wuhui_zzw 2024-06-19 16:59:17 +08:00
parent d5fbab7a1d
commit eed4a097fd
6 changed files with 236 additions and 15 deletions

View File

@ -0,0 +1,48 @@
<?php
namespace app\common\dao\system\merchant;
use app\common\dao\BaseDao;
use app\common\model\system\merchant\MerchantShareholderIntegral;
class MerchantShareholderIntegralDao extends BaseDao{
protected function getModel(): string{
return MerchantShareholderIntegral::class;
}
/**
* Common: 公共查询模型
* Author: wu-hui
* Time: 2024/06/19 16:01
* @param array $params
* @return MerchantShareholderIntegral
*/
public function searchModel(array $params){
return (new MerchantShareholderIntegral())
->when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){
$query->where('id', (int)$params['id']);
})
->when(isset($params['uid']) && $params['uid'] !== '',function($query) use ($params){
$query->where('uid', (int)$params['uid']);
})
->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){
$query->where('mer_id', (int)$params['mer_id']);
})
->when(isset($params['level_id']) && $params['level_id'] !== '',function($query) use ($params){
$query->where('level_id', (int)$params['level_id']);
})
->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){
$query->where('status', (int)$params['status']);
})
->order('create_time DESC,id DESC');
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace app\common\model\system\merchant;
use app\common\model\BaseModel;
class MerchantShareholderIntegral extends BaseModel{
public static function tablePk(): string{
return 'id';
}
public static function tableName(): string{
return 'merchant_shareholder_integral';
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace app\common\repositories\system\merchant;
use app\common\dao\system\merchant\MerchantShareholderIntegralDao;
use app\common\repositories\BaseRepository;
class MerchantShareholderIntegralRepository extends BaseRepository{
public function __construct(MerchantShareholderIntegralDao $dao){
$this->dao = $dao;
}
/**
* Common: 公共查询模型
* Author: wu-hui
* Time: 2024/06/19 16:04
* @param $search
* @return \app\common\model\system\merchant\MerchantShareholderIntegral
*/
public function getSearchModel($search){
return $this->dao->searchModel($search);
}
}

View File

@ -86,6 +86,60 @@ class MerchantShareholderLevelRepository extends BaseRepository{
->getSearch(['mer_id' => request()->merId(), 'status' => 1, 'is_del' => 0])
->column('title as label,coupon_id as value');
})->col(24)->multiple(true)->filterable(true),
// 餐费积分
Elm::radio('integral_switch','是否赠送餐费积分',0)
->setOptions([['value' => 0,'label' => '关闭'],['value' => 1,'label' => '开启']])
->control([
[
'value' => 1,
'rule' => [
Elm::radio('integral_give_type','赠送方式',0)
->setOptions([['value' => 0,'label' => '一次性全部赠送'],['value' => 1,'label' => '周期赠送']])
->control([
[
'value' => 0,
'rule' => [
Elm::number('integral_give_num','赠送数量')->required()->min(0)->step(0.01)->precision(2)->col(24),
Elm::number('integral_overdue_day','过期时间(天)')->required()->min(0)->max(50000)->col(24)->appendRule('suffix',[
'type' => 'div',
'style' => ['color' => '#999999'],
'domProps' => [
'innerHTML' => '赠送后多少天过期为0则永不过期',
]
]),
]
],
[
'value' => 1,
'rule' => [
Elm::number('integral_cycle_num','周期数量')->required()->min(1)->max(100)->col(12),
Elm::number('integral_give_num','每期赠送数量')->required()->min(0)->step(0.01)->precision(2)->col(12)->appendRule('suffix',[
'type' => 'div',
'style' => ['color' => '#999999'],
'domProps' => [
'innerHTML' => '每个周期赠送的数量!',
]
]),
Elm::number('integral_give_day','周期间隔(天)')->required()->min(0)->max(100)->col(24)->appendRule('suffix',[
'type' => 'div',
'style' => ['color' => '#999999'],
'domProps' => [
'innerHTML' => '多少天为一个周期填写10则10天为一个周期7月1日12时12分成为共创股东并且支付成功则在7月11日12时12分解冻第二笔餐费积分',
]
]),
Elm::number('integral_overdue_day','过期时间')->required()->min(0)->max(50000)->col(24)->appendRule('suffix',[
'type' => 'div',
'style' => ['color' => '#999999'],
'domProps' => [
'innerHTML' => '每个周期解冻后多少天过期为0则永不过期',
]
]),
]
],
]),
]
],
]),
];
$form->setRule($rules);
@ -106,16 +160,22 @@ class MerchantShareholderLevelRepository extends BaseRepository{
if($params['weight'] <= 0) throw new ValidateException('等级权重必须大于0');
// 数据生成
$data = [
'title' => $params['title'],
'weight' => $params['weight'],
'mer_quota' => $params['mer_quota'] ?? 0,
'price' => $params['price'] ?? 0,
'quota' => $params['quota'],
'vegetable_quota' => $params['vegetable_quota'],
'oil_quota' => $params['oil_quota'],
'wine_quota' => $params['wine_quota'],
'coupon_ids' => is_array($params['coupon_ids']) ? implode(',',$params['coupon_ids']) : $params['coupon_ids'],
'merchant_type' => $params['merchant_type'],
'title' => $params['title'],
'weight' => $params['weight'],
'mer_quota' => $params['mer_quota'] ?? 0,
'price' => $params['price'] ?? 0,
'quota' => $params['quota'],
'vegetable_quota' => $params['vegetable_quota'],
'oil_quota' => $params['oil_quota'],
'wine_quota' => $params['wine_quota'],
'coupon_ids' => is_array($params['coupon_ids']) ? implode(',',$params['coupon_ids']) : $params['coupon_ids'],
'merchant_type' => $params['merchant_type'],
'integral_switch' => $params['integral_switch'],
'integral_give_type' => $params['integral_give_type'],
'integral_give_num' => $params['integral_give_num'],
'integral_give_day' => $params['integral_give_day'],
'integral_overdue_day' => $params['integral_overdue_day'],
'integral_cycle_num' => $params['integral_cycle_num']
];
// 判断:权重值是否已经存在
$isHas = $this->getSearchModel(['merchant_type' => $params['merchant_type'],'weight' => $params['weight']])

View File

@ -5,6 +5,7 @@ namespace app\common\repositories\system\merchant;
use app\common\dao\system\merchant\MerchantShareholderDao;
use app\common\model\marketing\activity\Activity;
use app\common\model\system\merchant\MerchantShareholder;
use app\common\model\system\merchant\MerchantShareholderIntegral;
use app\common\model\user\ExchangeQuotaRecord;
use app\common\repositories\BaseRepository;
use app\common\repositories\store\coupon\StoreCouponRepository;
@ -205,9 +206,9 @@ class MerchantShareholderRepository extends BaseRepository{
app()->make(StoreCouponRepository::class)->sendCoupon($coupon, $uid,StoreCouponUserRepository::SEND_TYPE_BUY, $params);
}
}
// 修改信息
// 是否赠送餐费积分
if((int)$levelInfo['integral_switch'] == 1) $this->giveIntegral($info,$levelInfo);
// 修改信息加入信息
MerchantShareholder::update([
'price' => $levelInfo['price'],
'quota' => $levelInfo['quota'],
@ -218,16 +219,70 @@ class MerchantShareholderRepository extends BaseRepository{
'status' => 1,
],['id' => $id]);
Db::commit();
}catch(\Exception $e){
Db::rollback();
Log::info('支付成功处理加入成功后的信息 - 错误: '.var_export([
Log::info('共创股东支付成功 - 处理加入成功后的信息 - 错误: '.var_export([
'id' => $id,
'msg' => $e->getMessage()
],1));
}
}
/**
* Common: 赠送餐费积分
* Author: wu-hui
* Time: 2024/06/19 16:48
* @param array $info
* @param array $levelInfo
* @return bool
*/
public function giveIntegral(array $info,array $levelInfo){
$giveType = $levelInfo['integral_give_type'] ?? 0;// 赠送方式0=一次性赠送1=周期赠送
$giveNum = $levelInfo['integral_give_num'] ?? 0;// 赠送数量
$giveDay = $levelInfo['integral_give_day'] ?? 0;// 周期间隔(天)
$giveOverdueDay = $levelInfo['integral_overdue_day'] ?? 0;// 领取(解冻)后多少天过期
$cycleNum = $levelInfo['integral_cycle_num'] ?? 1;// 周期数量
// 根据赠送方式赠送积分赠送方式0=一次性赠送1=周期赠送
$insertData = [];// 赠送记录新增列表
if($giveType == 1){
// 周期赠送
$expectThawTime = date("Y-m-d H:i:s",time());// 第一期预计解冻时间
$expectOverdueTime = date("Y-m-d H:i:s",strtotime("+{$giveOverdueDay} day"));// 第一期预计过期时间
// 循环处理
for($i = 1;$i <= $cycleNum;$i++){
$insertData[] = [
'uid' => $info['uid'],
'mer_id' => $info['mer_id'],
'level_id' => $info['level_id'],
'integral_total' => $giveNum,
'status' => $i == 1 ? 1 : 0,// 第一期默认直接解冻
'expect_thaw_time' => $expectThawTime,
'real_thaw_time' => $i == 1 ? $expectThawTime : null,// 第一期默认直接解冻,
'expect_overdue_time' => $expectOverdueTime,
];
// 预计解冻和过期时间增加
$expectThawTime = date("Y-m-d H:i:s",strtotime($expectThawTime." +{$giveDay} day"));// 第一期预计解冻时间
$expectOverdueTime = date("Y-m-d H:i:s",strtotime($expectOverdueTime." +{$giveOverdueDay} day"));// 第一期预计过期时间
}
}else{
// 一次性全部赠送
$insertData[] = [
'uid' => $info['uid'],
'mer_id' => $info['mer_id'],
'level_id' => $info['level_id'],
'integral_total' => $giveNum,
'status' => 1,
'expect_thaw_time' => date("Y-m-d H:i:s",time()),
'real_thaw_time' => date("Y-m-d H:i:s",time()),
'expect_overdue_time' => $giveOverdueDay > 0 ? date("Y-m-d H:i:s",strtotime("+{$giveOverdueDay} day")) : '',
];
}
// 记录
if(count($insertData) > 0) MerchantShareholderIntegral::insertAll($insertData);
return true;
}
/**
* Common: 各种额度变更(赠送变更)
* Author: wu-hui

View File

@ -67,6 +67,12 @@ class ShareholderLevel extends BaseController{
'wine_quota',
'coupon_ids',
'merchant_type',
'integral_switch',
'integral_give_type',
'integral_give_num',
'integral_give_day',
'integral_overdue_day',
'integral_cycle_num'
]);
$this->repository->submitEditFormData($params);