parent
20c77494a7
commit
b16c757028
|
|
@ -243,7 +243,7 @@ if (!function_exists('getModelTime')) {
|
||||||
$model->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('yesterday')), date('Y-m-d H:i:s', strtotime('today -1second'))]);
|
$model->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('yesterday')), date('Y-m-d H:i:s', strtotime('today -1second'))]);
|
||||||
break;
|
break;
|
||||||
case 'quarter':
|
case 'quarter':
|
||||||
list($startTime, $endTime) = getMonth();
|
[$startTime, $endTime] = getMonth();
|
||||||
$model = $model->where($prefix, '>', $startTime);
|
$model = $model->where($prefix, '>', $startTime);
|
||||||
$model = $model->where($prefix, '<', $endTime);
|
$model = $model->where($prefix, '<', $endTime);
|
||||||
break;
|
break;
|
||||||
|
|
@ -255,7 +255,7 @@ if (!function_exists('getModelTime')) {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (strstr($section, $field) !== false) {
|
if (strstr($section, $field) !== false) {
|
||||||
list($startTime, $endTime) = explode($field, $section);
|
[$startTime, $endTime] = explode($field, $section);
|
||||||
if (strlen($startTime) == 4) {
|
if (strlen($startTime) == 4) {
|
||||||
$model->whereBetweenTime($prefix, date('Y-m-d H:i:s', strtotime($section)), date('Y-m-d H:i:s', strtotime($section . ' +1day -1second')));
|
$model->whereBetweenTime($prefix, date('Y-m-d H:i:s', strtotime($section)), date('Y-m-d H:i:s', strtotime($section . ' +1day -1second')));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -427,7 +427,7 @@ if (!function_exists('getStartModelTime')) {
|
||||||
case 'year':
|
case 'year':
|
||||||
return date('Y-m-d', strtotime('this year 1/1'));
|
return date('Y-m-d', strtotime('this year 1/1'));
|
||||||
case 'quarter':
|
case 'quarter':
|
||||||
list($startTime, $endTime) = getMonth();
|
[$startTime, $endTime] = getMonth();
|
||||||
return $startTime;
|
return $startTime;
|
||||||
case 'lately7':
|
case 'lately7':
|
||||||
return date('Y-m-d', strtotime("-7 day"));
|
return date('Y-m-d', strtotime("-7 day"));
|
||||||
|
|
@ -435,7 +435,7 @@ if (!function_exists('getStartModelTime')) {
|
||||||
return date('Y-m-d', strtotime("-30 day"));
|
return date('Y-m-d', strtotime("-30 day"));
|
||||||
default:
|
default:
|
||||||
if (strstr($section, '-') !== false) {
|
if (strstr($section, '-') !== false) {
|
||||||
list($startTime, $endTime) = explode('-', $section);
|
[$startTime, $endTime] = explode('-', $section);
|
||||||
return date('Y-m-d H:i:s', strtotime($startTime));
|
return date('Y-m-d H:i:s', strtotime($startTime));
|
||||||
}
|
}
|
||||||
return date('Y-m-d H:i:s');
|
return date('Y-m-d H:i:s');
|
||||||
|
|
@ -779,7 +779,7 @@ if (!function_exists('setSharePoster')) {
|
||||||
if (isset($config['text']) && !empty($config['text'])) {
|
if (isset($config['text']) && !empty($config['text'])) {
|
||||||
foreach ($config['text'] as $key => $val) {
|
foreach ($config['text'] as $key => $val) {
|
||||||
$val = array_merge($textDefault, $val);
|
$val = array_merge($textDefault, $val);
|
||||||
list($R, $G, $B) = explode(',', $val['fontColor']);
|
[$R, $G, $B] = explode(',', $val['fontColor']);
|
||||||
$fontColor = imagecolorallocate($imageRes, $R, $G, $B);
|
$fontColor = imagecolorallocate($imageRes, $R, $G, $B);
|
||||||
$val['left'] = $val['left'] < 0 ? $backgroundWidth - abs($val['left']) : $val['left'];
|
$val['left'] = $val['left'] < 0 ? $backgroundWidth - abs($val['left']) : $val['left'];
|
||||||
$val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) : $val['top'];
|
$val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) : $val['top'];
|
||||||
|
|
@ -1233,4 +1233,17 @@ if (!function_exists('get_file_link')) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Common: 下划线字符串 转 驼峰字符串
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2023/12/26 11:23
|
||||||
|
* @param $string
|
||||||
|
* @param string $separator
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
if (!function_exists('camelize')) {
|
||||||
|
function camelize($string,$separator = '_'){
|
||||||
|
$string = $separator. str_replace($separator, " ", strtolower($string));
|
||||||
|
return ltrim(str_replace(" ", "", ucwords($string)), $separator );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@ namespace app\common\repositories\user;
|
||||||
|
|
||||||
|
|
||||||
use app\common\dao\user\UserBrokerageDao;
|
use app\common\dao\user\UserBrokerageDao;
|
||||||
|
use app\common\model\store\order\StoreOrder;
|
||||||
|
use app\common\model\store\order\StoreOrderProduct;
|
||||||
|
use app\common\model\store\product\Spu;
|
||||||
use app\common\model\user\User;
|
use app\common\model\user\User;
|
||||||
use app\common\model\user\UserBrokerage;
|
use app\common\model\user\UserBrokerage;
|
||||||
use app\common\repositories\BaseRepository;
|
use app\common\repositories\BaseRepository;
|
||||||
|
|
@ -13,6 +16,7 @@ use app\common\repositories\system\CacheRepository;
|
||||||
use FormBuilder\Factory\Elm;
|
use FormBuilder\Factory\Elm;
|
||||||
use think\exception\ValidateException;
|
use think\exception\ValidateException;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
use think\facade\Log;
|
||||||
use think\facade\Route;
|
use think\facade\Route;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,6 +25,7 @@ use think\facade\Route;
|
||||||
class UserBrokerageRepository extends BaseRepository
|
class UserBrokerageRepository extends BaseRepository
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// 基本升级条件 所有内容走基本升级条件流程统一处理,未添加到该数组中的升级条件为特殊升级条件,全部单独处理
|
||||||
public const BROKERAGE_RULE_TYPE = ['spread_user', 'pay_money', 'pay_num', 'spread_money', 'spread_pay_num'];
|
public const BROKERAGE_RULE_TYPE = ['spread_user', 'pay_money', 'pay_num', 'spread_money', 'spread_pay_num'];
|
||||||
|
|
||||||
public function __construct(UserBrokerageDao $dao)
|
public function __construct(UserBrokerageDao $dao)
|
||||||
|
|
@ -51,6 +56,7 @@ class UserBrokerageRepository extends BaseRepository
|
||||||
return $this->dao->search(['type' => $type])->order('brokerage_level ASC,create_time DESC')->select();
|
return $this->dao->search(['type' => $type])->order('brokerage_level ASC,create_time DESC')->select();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function inc(User $user, $type, $inc)
|
public function inc(User $user, $type, $inc)
|
||||||
{
|
{
|
||||||
$nextLevel = $this->getNextLevel($user->brokerage_level);
|
$nextLevel = $this->getNextLevel($user->brokerage_level);
|
||||||
|
|
@ -72,7 +78,6 @@ class UserBrokerageRepository extends BaseRepository
|
||||||
|
|
||||||
return $this->checkLevel($user, $nextLevel);
|
return $this->checkLevel($user, $nextLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkLevel(User $user, UserBrokerage $nextLevel)
|
public function checkLevel(User $user, UserBrokerage $nextLevel)
|
||||||
{
|
{
|
||||||
$info = app()->make(UserBillRepository::class)->search(['uid' => $user->uid, 'category' => 'sys_brokerage', 'link_id' => $nextLevel->user_brokerage_id])
|
$info = app()->make(UserBillRepository::class)->search(['uid' => $user->uid, 'category' => 'sys_brokerage', 'link_id' => $nextLevel->user_brokerage_id])
|
||||||
|
|
@ -96,6 +101,125 @@ class UserBrokerageRepository extends BaseRepository
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Common: 分销商升级 - 流程开始
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2023/12/26 14:20
|
||||||
|
* @param User $user
|
||||||
|
* @param $data
|
||||||
|
* @return bool|void
|
||||||
|
*/
|
||||||
|
public function incV2(User $user, $data){
|
||||||
|
$type = $data['type'] ?? '';
|
||||||
|
$inc = $data['inc'] ?? 0;
|
||||||
|
// 判断:不存在下一级 升级失败
|
||||||
|
$nextLevel = $this->getNextLevel($user->brokerage_level);
|
||||||
|
if (!$nextLevel) return false;
|
||||||
|
// 判断:是否为基本升级条件 是则进行统一账单处理
|
||||||
|
if(in_array($type,self::BROKERAGE_RULE_TYPE)){
|
||||||
|
$make = app()->make(UserBillRepository::class);
|
||||||
|
$bill = $make->getWhere(['uid' => $user->uid, 'link_id' => $nextLevel->user_brokerage_id, 'category' => 'sys_brokerage', 'type' => $type]);
|
||||||
|
if ($bill) {
|
||||||
|
$bill->number = bcadd($bill->number, $inc, 2);
|
||||||
|
$bill->save();
|
||||||
|
} else {
|
||||||
|
$make->incBill($user->uid, 'sys_brokerage', $type, [
|
||||||
|
'number' => $inc,
|
||||||
|
'title' => $type,
|
||||||
|
'balance' => 0,
|
||||||
|
'status' => 0,
|
||||||
|
'link_id' => $nextLevel->user_brokerage_id
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 升级判断流程开始
|
||||||
|
return $this->checkLevelV2($user, $nextLevel, $data);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Common: 分销商升级 - 升级判断及修改等级信息
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2023/12/26 14:20
|
||||||
|
* @param User $user
|
||||||
|
* @param UserBrokerage $nextLevel
|
||||||
|
* @param $data
|
||||||
|
* @return bool|void
|
||||||
|
*/
|
||||||
|
public function checkLevelV2(User $user, UserBrokerage $nextLevel, $data){
|
||||||
|
// 分销商升级条件判断
|
||||||
|
try{
|
||||||
|
// 循环判断是否达成所有升级条件 全部达成为true-成功升级,未全部达成为false-升级失败;为空则未设置升级条件-不允许升级
|
||||||
|
$info = app()->make(UserBillRepository::class)->search(['uid' => $user->uid, 'category' => 'sys_brokerage', 'link_id' => $nextLevel->user_brokerage_id])->column('number', 'type');
|
||||||
|
$completeResult = [];// 每个条件达成情况:达成=true;未达成=false;未开启=空
|
||||||
|
foreach ($nextLevel['brokerage_rule'] as $upgradeKey => $rule) {
|
||||||
|
// 是否开启
|
||||||
|
if($rule['is_open'] != 1) continue;
|
||||||
|
// 根据类型进行对应的处理
|
||||||
|
if(in_array($upgradeKey,self::BROKERAGE_RULE_TYPE)){
|
||||||
|
// 基本升级条件 统一处理
|
||||||
|
if((float)$rule['num'] <= 0) continue;// 条件无效
|
||||||
|
// 判断:条件是否达标
|
||||||
|
$num = $info[$upgradeKey] ?? 0;
|
||||||
|
$completeResult[$upgradeKey] = (float)$rule['num'] >= (float)$num;
|
||||||
|
}else{
|
||||||
|
// 特殊升级条件 全部单独处理
|
||||||
|
$funName = 'upgradeJudge'.ucfirst(camelize($upgradeKey));
|
||||||
|
$judgeResult = $this->$funName($rule,$data);
|
||||||
|
if(gettype($judgeResult) == 'boolean') $completeResult[$upgradeKey] = $judgeResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 判断:是否成功升级
|
||||||
|
if(array_sum($completeResult) != count($completeResult)) return false;// 结果为空,无有效升级条件;禁止升级
|
||||||
|
// 升级成功
|
||||||
|
$nextLevel->user_num++;
|
||||||
|
Db::transaction(function () use ($nextLevel, $user) {
|
||||||
|
$nextLevel->save();
|
||||||
|
if ($user->brokerage && $user->brokerage->user_num > 0) {
|
||||||
|
$user->brokerage->user_num--;
|
||||||
|
$user->brokerage->save();
|
||||||
|
}
|
||||||
|
// 不是推广员 开启推广员身份
|
||||||
|
if((int)$user->is_promoter != 1){
|
||||||
|
$user->is_promoter = 1;
|
||||||
|
$user->promoter_time = date('Y-m-d H:i:s');
|
||||||
|
}
|
||||||
|
$user->brokerage_level = $nextLevel->brokerage_level;
|
||||||
|
$user->save();
|
||||||
|
|
||||||
|
$key = 'notice_brokerage_level_' . $user->uid;
|
||||||
|
app()->make(CacheRepository::class)->save($key,$nextLevel->brokerage_level);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}catch(\Exception $e){
|
||||||
|
Log::info('分销商升级 - 错误: '.var_export([
|
||||||
|
'uid' => $user->uid,
|
||||||
|
'type' => $data['type'],
|
||||||
|
'msg' => $e->getMessage(),
|
||||||
|
],1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Common: 分销商升级 - 升级条件判断 - 购买某个商品之一
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2023/12/26 14:35
|
||||||
|
* @param $rule
|
||||||
|
* @param $data
|
||||||
|
* @return bool|string
|
||||||
|
*/
|
||||||
|
private function upgradeJudgeManyGoods($rule,$data){
|
||||||
|
// 判断:条件是否有效
|
||||||
|
if(count($rule['ids']) <= 0) return '';// 条件无效 未设置商品
|
||||||
|
// 判断:是否存在订单信息 不存在直接返回false
|
||||||
|
if(!array_key_exists('group_order_id',$data)) return false;
|
||||||
|
// 处理订单信息
|
||||||
|
$orderIds = StoreOrder::where('group_order_id',$data['group_order_id'])->column('order_id');// 获取订单id
|
||||||
|
$productIds = StoreOrderProduct::whereIn('order_id',$orderIds)->column('product_id');// 获取当前订单中所有商品ID
|
||||||
|
$setNeedProductIds = Spu::whereIn('spu_id',$rule['ids'])->column('product_id');// 设置的需求商品ID
|
||||||
|
$intersectData = array_intersect($productIds,$setNeedProductIds);
|
||||||
|
return count($intersectData) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function getLevelRate(User $user, UserBrokerage $nextLevel)
|
public function getLevelRate(User $user, UserBrokerage $nextLevel)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@
|
||||||
namespace app\controller\api;
|
namespace app\controller\api;
|
||||||
|
|
||||||
|
|
||||||
|
use app\common\repositories\store\order\StoreGroupOrderRepository;
|
||||||
use app\common\repositories\store\order\StoreOrderRepository;
|
use app\common\repositories\store\order\StoreOrderRepository;
|
||||||
use app\common\repositories\store\order\StoreRefundOrderRepository;
|
use app\common\repositories\store\order\StoreRefundOrderRepository;
|
||||||
use app\common\repositories\system\notice\SystemNoticeConfigRepository;
|
use app\common\repositories\system\notice\SystemNoticeConfigRepository;
|
||||||
|
use app\common\repositories\user\UserBrokerageRepository;
|
||||||
use app\common\repositories\user\UserRepository;
|
use app\common\repositories\user\UserRepository;
|
||||||
use app\common\repositories\user\UserSignRepository;
|
use app\common\repositories\user\UserSignRepository;
|
||||||
use app\common\repositories\wechat\RoutineQrcodeRepository;
|
use app\common\repositories\wechat\RoutineQrcodeRepository;
|
||||||
|
|
@ -16,6 +18,7 @@ use app\common\repositories\wechat\WechatUserRepository;
|
||||||
use app\validate\api\ChangePasswordValidate;
|
use app\validate\api\ChangePasswordValidate;
|
||||||
use app\validate\api\UserAuthValidate;
|
use app\validate\api\UserAuthValidate;
|
||||||
use crmeb\basic\BaseController;
|
use crmeb\basic\BaseController;
|
||||||
|
use crmeb\jobs\UserBrokerageLevelJob;
|
||||||
use crmeb\services\MiniProgramService;
|
use crmeb\services\MiniProgramService;
|
||||||
use crmeb\services\SmsService;
|
use crmeb\services\SmsService;
|
||||||
use crmeb\services\WechatService;
|
use crmeb\services\WechatService;
|
||||||
|
|
@ -43,8 +46,7 @@ use crmeb\jobs\SendSmsJob;
|
||||||
*/
|
*/
|
||||||
class Auth extends BaseController
|
class Auth extends BaseController
|
||||||
{
|
{
|
||||||
public function test()
|
public function test(){
|
||||||
{
|
|
||||||
// $data = [
|
// $data = [
|
||||||
// 'tempId' => '',
|
// 'tempId' => '',
|
||||||
// 'id' => '',
|
// 'id' => '',
|
||||||
|
|
@ -60,6 +62,20 @@ class Auth extends BaseController
|
||||||
// if ($status['notice_routine'] == 1) {
|
// if ($status['notice_routine'] == 1) {
|
||||||
// app()->make(WechatTemplateMessageService::class)->subscribeSendTemplate($data);
|
// app()->make(WechatTemplateMessageService::class)->subscribeSendTemplate($data);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 分销商升级模拟
|
||||||
|
// $user = app()->make(UserRepository::class)->get(327706);
|
||||||
|
// $res = app()->make(UserBrokerageRepository::class)->incV2($user, [
|
||||||
|
// 'type' => 'pay_num',
|
||||||
|
// 'inc' => 0
|
||||||
|
// ]);
|
||||||
|
// debug(['升级结果'=>$res]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -225,7 +241,7 @@ class Auth extends BaseController
|
||||||
*/
|
*/
|
||||||
public function mpAuth()
|
public function mpAuth()
|
||||||
{
|
{
|
||||||
list($code, $post_cache_key) = $this->request->params([
|
[$code, $post_cache_key] = $this->request->params([
|
||||||
'code',
|
'code',
|
||||||
'cache_key',
|
'cache_key',
|
||||||
], true);
|
], true);
|
||||||
|
|
@ -506,7 +522,7 @@ class Auth extends BaseController
|
||||||
if (count($tks) != 3) {
|
if (count($tks) != 3) {
|
||||||
throw new ValidateException('Wrong number of segments');
|
throw new ValidateException('Wrong number of segments');
|
||||||
}
|
}
|
||||||
list($headb64, $bodyb64, $cryptob64) = $tks;
|
[$headb64, $bodyb64, $cryptob64] = $tks;
|
||||||
if (null === ($payload = JWT::jsonDecode(JWT::urlsafeB64Decode($bodyb64)))) {
|
if (null === ($payload = JWT::jsonDecode(JWT::urlsafeB64Decode($bodyb64)))) {
|
||||||
throw new ValidateException('Invalid header encoding');
|
throw new ValidateException('Invalid header encoding');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ namespace app\listener\platformCommission;
|
||||||
use app\common\model\store\platformCommission\Record;
|
use app\common\model\store\platformCommission\Record;
|
||||||
use app\common\model\system\merchant\Merchant;
|
use app\common\model\system\merchant\Merchant;
|
||||||
use app\common\repositories\store\platformCommission\RecordRepository;
|
use app\common\repositories\store\platformCommission\RecordRepository;
|
||||||
|
use crmeb\jobs\UserBrokerageLevelJob;
|
||||||
use think\facade\Log;
|
use think\facade\Log;
|
||||||
|
use think\facade\Queue;
|
||||||
|
|
||||||
class OrderPaySuccessEvent{
|
class OrderPaySuccessEvent{
|
||||||
public $groupOrder;
|
public $groupOrder;
|
||||||
|
|
@ -13,8 +15,14 @@ class OrderPaySuccessEvent{
|
||||||
public function handle($groupOrder){
|
public function handle($groupOrder){
|
||||||
$groupOrder = $groupOrder['groupOrder'];
|
$groupOrder = $groupOrder['groupOrder'];
|
||||||
Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
|
Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
|
||||||
|
|
||||||
$this->orderPaySuccessHandle($groupOrder);
|
$this->orderPaySuccessHandle($groupOrder);
|
||||||
|
// 订单支付成功 触发购买商品升级
|
||||||
|
Queue::push(UserBrokerageLevelJob::class,[
|
||||||
|
'uid' => $groupOrder->uid,
|
||||||
|
'type' => 'many_goods',
|
||||||
|
'inc' => 0,
|
||||||
|
'group_order_id' => $groupOrder->group_order_id
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Common: 支付成功 - 平台抽成处理
|
* Common: 支付成功 - 平台抽成处理
|
||||||
|
|
|
||||||
|
|
@ -15,31 +15,31 @@ class UserBrokerageValidate extends Validate
|
||||||
protected $rule = [
|
protected $rule = [
|
||||||
'brokerage_level|会员等级' => 'require|integer|>:0',
|
'brokerage_level|会员等级' => 'require|integer|>:0',
|
||||||
'brokerage_name|会员名称' => 'require|max:16',
|
'brokerage_name|会员名称' => 'require|max:16',
|
||||||
'brokerage_icon|会员图标' => 'require',
|
// 'brokerage_icon|会员图标' => 'require',
|
||||||
'brokerage_rule|会员升级规则' => 'requireIf:type,0|array|checkBrokerageRule',
|
'brokerage_rule|会员升级规则' => 'requireIf:type,0|array',// checkBrokerageRule todo: 取消升级条件验证 如果不存在升级条件则不允许升级到该等级
|
||||||
'extension_one|一级佣金比例' => 'requireIf:type,0|float|>=:0|<=:100',
|
'extension_one|一级佣金比例' => 'requireIf:type,0|float|>=:0|<=:100',
|
||||||
'extension_two|二级佣金比例' => 'requireIf:type,0|float|>=:0|<=:100',
|
'extension_two|二级佣金比例' => 'requireIf:type,0|float|>=:0|<=:100',
|
||||||
'image|背景图' => 'requireIf:type,1|max:128',
|
'image|背景图' => 'requireIf:type,1|max:128',
|
||||||
'value|会员成长值' => 'requireIf:type,1|float|>=:0',
|
'value|会员成长值' => 'requireIf:type,1|float|>=:0',
|
||||||
'type|类型' => 'require|in:0,1',
|
'type|类型' => 'require|in:0,1',
|
||||||
];
|
];
|
||||||
|
// todo 2023-12-25 重构升级条件,这里的验证不在使用 因此未修改验证内容,这里的验证已失效
|
||||||
|
public function checkBrokerageRule($value, $rlue, $data){
|
||||||
|
|
||||||
public function checkBrokerageRule($value, $rlue, $data)
|
|
||||||
{
|
|
||||||
if (!$data['type']) {
|
if (!$data['type']) {
|
||||||
|
// 基本升级条件:不在列表中的升级条件,不进行统一升级条件判断
|
||||||
$types = UserBrokerageRepository::BROKERAGE_RULE_TYPE;
|
$types = UserBrokerageRepository::BROKERAGE_RULE_TYPE;
|
||||||
if (count($types) != count($value)) {
|
// if (count($types) != count($value)) return '升级任务设置错误';
|
||||||
return '请输入正确的升级任务';
|
|
||||||
}
|
|
||||||
$flag = 0;
|
$flag = 0;
|
||||||
foreach ($types as $type) {
|
foreach ($types as $type) {
|
||||||
$val = $value[$type] ?? '';
|
$val = $value[$type] ?? '';
|
||||||
if (!is_array($val) || !isset($val['name'], $val['num'], $val['info']) || count($val) != 3) return '请输入正确的升级任务';
|
if (!is_array($val) || !isset($val['name'], $val['num'], $val['info']) || count($val) != 3) return '请输入正确的升级任务';
|
||||||
if ($val['num'] < 0)
|
if ($val['num'] < 0) return '请输入正确的任务数量';
|
||||||
return '请输入正确的任务数量';
|
|
||||||
if ($val['num'] > 0 && !$val['name']) return '请输入任务名称';
|
if ($val['num'] > 0 && !$val['name']) return '请输入任务名称';
|
||||||
if ($val['num'] > 0) $flag++;
|
if ($val['num'] > 0) $flag++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!$flag) return '请至少设置一个升级任务';
|
if (!$flag) return '请至少设置一个升级任务';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,20 +18,15 @@ class UserBrokerageLevelJob implements JobInterface
|
||||||
try {
|
try {
|
||||||
$user = app()->make(UserRepository::class)->get($data['uid']);
|
$user = app()->make(UserRepository::class)->get($data['uid']);
|
||||||
if ($user) {
|
if ($user) {
|
||||||
|
// 修改用户信息
|
||||||
$flag = true;
|
$flag = true;
|
||||||
if ($data['type'] == 'spread_money') {
|
if ($data['type'] == 'spread_money') $user->spread_pay_price = bcadd($user->spread_pay_price, $data['inc'], 2);
|
||||||
$user->spread_pay_price = bcadd($user->spread_pay_price, $data['inc'], 2);
|
else if ($data['type'] == 'spread_pay_num') $user->spread_pay_count = bcadd($user->spread_pay_count, $data['inc'], 0);
|
||||||
} else if ($data['type'] == 'spread_pay_num') {
|
else $flag = false;
|
||||||
$user->spread_pay_count = bcadd($user->spread_pay_count, $data['inc'], 0);
|
if ($flag) $user->save();
|
||||||
} else {
|
// todo: 2023-12-25 分销商升级重构 旧版本弃用,改为使用v2版本升级流程
|
||||||
$flag = false;
|
// app()->make(UserBrokerageRepository::class)->inc($user, $data);
|
||||||
}
|
app()->make(UserBrokerageRepository::class)->incV2($user, $data);
|
||||||
if ($flag) {
|
|
||||||
$user->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($user && $user->is_promoter) {
|
|
||||||
app()->make(UserBrokerageRepository::class)->inc($user, $data['type'], $data['inc']);
|
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::info('分销等级同步失败: ' . var_export($data, 1) . $e->getMessage());
|
Log::info('分销等级同步失败: ' . var_export($data, 1) . $e->getMessage());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue