进货系统问题修改
This commit is contained in:
parent
0c8996e665
commit
528b846ec3
|
|
@ -338,21 +338,11 @@ class Fenxiao extends BaseApi
|
|||
$model = new FenxiaoModel();
|
||||
$fenxiao_info = $model->getFenxiaoInfo([ [ 'member_id', '=', $this->member_id ] ], 'fenxiao_id')[ 'data' ];
|
||||
if (empty($fenxiao_info)) return $this->response($this->error('', 'MEMBER_NOT_IS_FENXIAO'));
|
||||
$parent_fenxiao_id = [ $fenxiao_info[ 'fenxiao_id' ] ]; // 上级分销商id集合
|
||||
// 查询分销基础配置
|
||||
$config_model = new Config();
|
||||
$fenxiao_basic_config = $config_model->getFenxiaoBasicsConfig($this->site_id)[ 'data' ][ 'value' ];
|
||||
$level = $fenxiao_basic_config[ 'level' ];
|
||||
if ($level == 2) {
|
||||
// 二级分销商id集合
|
||||
$one_level_fenxiao = model('fenxiao')->getColumn([ [ 'parent', '=', $fenxiao_info[ 'fenxiao_id' ] ] ], 'fenxiao_id');
|
||||
if (!empty($one_level_fenxiao)) {
|
||||
$parent_fenxiao_id = array_merge($parent_fenxiao_id, $one_level_fenxiao);
|
||||
}
|
||||
}
|
||||
|
||||
$condition = [
|
||||
[ 'f.site_id', '=', $this->site_id ],
|
||||
[ 'f.parent', 'in', $parent_fenxiao_id ],
|
||||
[ 'f.chain', 'like', '%'.$fenxiao_info[ 'fenxiao_id' ].'%' ],
|
||||
[ 'm.is_delete', '=', 0 ]
|
||||
];
|
||||
$field = 'm.nickname,m.headimg,m.member_id,m.order_num,m.order_money,f.fenxiao_id,f.audit_time,f.level_name,m.is_fenxiao,m.bind_fenxiao_time,f.one_child_num,f.one_child_fenxiao_num';
|
||||
|
|
|
|||
|
|
@ -80,6 +80,9 @@ return [
|
|||
],
|
||||
'NodeParent'=>[
|
||||
'addon\fenxiao\event\NodeParent',
|
||||
],
|
||||
'WeightOrder' => [
|
||||
'addon\fenxiao\event\WeightOrder'
|
||||
]
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace addon\fenxiao\event;
|
||||
class WeightOrder
|
||||
{
|
||||
public function handle($param)
|
||||
{
|
||||
if (isset($param['relate_id'])) {
|
||||
$model = new \addon\fenxiao\model\WeightOrder();
|
||||
$result = $model->calculate($param['relate_id']);
|
||||
return $result;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
@ -70,8 +70,9 @@ class Config extends BaseModel
|
|||
];
|
||||
$res = $config->setConfig($relation_data, '分销上下级关系配置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'FENXIAO_RELATION_CONFIG' ] ]);
|
||||
$cron = new Cron();
|
||||
// $cron->deleteCron([ [ 'event', '=', 'WeightOrder' ], [ 'relate_id', '=', $param[ 'bale_id' ] ] ]);
|
||||
// $cron->addCron(1, 0, '订单售后自动关闭', 'CronOrderAfterSaleClose', $execute_time, $order_id);
|
||||
$cron->deleteCron([ [ 'event', '=', 'WeightOrder' ], [ 'relate_id', '=', $site_id ] ]);
|
||||
$execute_time = strtotime(date('Y-m-d 00:00:00') . ' +1 day');
|
||||
$cron->addCron(2, 1, '计算加权分红', 'WeightOrder', $execute_time, $site_id,3);
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,6 +82,9 @@ class FenxiaoOrder extends BaseModel
|
|||
'founder_rate' => 0,
|
||||
'founder_commission' => 0,
|
||||
'founder_fenxiao_detail' => [],
|
||||
'weight_money' => 0,
|
||||
// 'weight_fenxiao_id' => [],
|
||||
'is_weight' => 0
|
||||
];
|
||||
|
||||
$goods_info = model('goods')->getInfo([['goods_id','=',$v['goods_id']]],'is_fenxiao, fenxiao_type,goods_kind_id');
|
||||
|
|
@ -126,6 +129,9 @@ class FenxiaoOrder extends BaseModel
|
|||
'founder_rate' => $order_fenxiao_data['founder_rate'],
|
||||
'founder_commission' => $order_fenxiao_data['founder_commission'],
|
||||
'founder_fenxiao_detail' => json_encode($order_fenxiao_data['founder_fenxiao_detail']),
|
||||
'is_weight' => $order_fenxiao_data['is_weight'],
|
||||
// 'weight_fenxiao_id' => json_encode($order_fenxiao_data['weight_fenxiao_id']),
|
||||
'weight_money' => $order_fenxiao_data['weight_money'],
|
||||
'create_time' => time()
|
||||
];
|
||||
model("fenxiao_order")->add($data);
|
||||
|
|
@ -218,7 +224,7 @@ class FenxiaoOrder extends BaseModel
|
|||
->join('fenxiao_level l', 'f.level_id = l.level_id', 'right')
|
||||
->where('f.fenxiao_id', '<>', $fenxiao_info['fenxiao_id'])
|
||||
->whereIn('f.fenxiao_id', $chain)
|
||||
->field('f.fenxiao_id,f.fenxiao_name,f.member_id,f.level_id,f.site_id,f.fenxiao_name,f.status,l.level_num,l.rank')
|
||||
->field('f.fenxiao_id,f.fenxiao_name,f.member_id,f.level_id,f.site_id,f.fenxiao_name,f.status,l.level_num,l.rank,l.is_weight')
|
||||
->select(); //获取上级用户
|
||||
$nodeUser = $nodeUser ? $nodeUser->toArray() : [];
|
||||
if(count($nodeUser) > 0){
|
||||
|
|
@ -265,6 +271,15 @@ class FenxiaoOrder extends BaseModel
|
|||
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission;
|
||||
$order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission];
|
||||
}
|
||||
//计算加权分红
|
||||
if(!$order_fenxiao_data['is_weight'] && $goods_kind === 0){
|
||||
$is_weight = $user['is_weight'];
|
||||
if($is_weight){
|
||||
$weight_money = $config['weight_rate'] * $v[ 'real_goods_money' ] / 100;
|
||||
$order_fenxiao_data['weight_money'] = $weight_money;
|
||||
}
|
||||
$order_fenxiao_data['is_weight'] = $is_weight;
|
||||
}
|
||||
}
|
||||
return $order_fenxiao_data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
/**
|
||||
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.gobuysaas.com
|
||||
* =========================================================
|
||||
*/
|
||||
namespace addon\fenxiao\model;
|
||||
use app\model\BaseModel;
|
||||
use app\model\message\Message;
|
||||
use app\model\system\Stat;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 分销商品
|
||||
*/
|
||||
class WeightOrder extends BaseModel{
|
||||
/**
|
||||
* 加权订单计算
|
||||
* @param $site_id
|
||||
*/
|
||||
public function calculate($site_id){
|
||||
//获取分销基础配置
|
||||
$config_model = new Config();
|
||||
$fenxiao_basic_config = $config_model->getFenxiaoBasicsConfig($site_id)['data']['value'];
|
||||
$time_type = $fenxiao_basic_config['time'];
|
||||
$is_settlement = false;
|
||||
switch($time_type){
|
||||
//按天分配
|
||||
case '1':
|
||||
$is_settlement = true;
|
||||
// $order_list = model('fenxiao_order')->getList([['is_weight' , '=' , 1] ,['weight_money' , '>' ,0] ,['weight_log_id' ,'=' ,0]]);
|
||||
break;
|
||||
//按周分配
|
||||
case '2':
|
||||
$week = date('w',time());
|
||||
if($week){
|
||||
$is_settlement = true;
|
||||
}
|
||||
break;
|
||||
//按月分配
|
||||
case '3':
|
||||
$currentDate = date('Y-m-d'); // 获取当前日期
|
||||
$firstDayOfMonth = date('Y-m-01');
|
||||
if($currentDate == $firstDayOfMonth){
|
||||
$is_settlement = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
//符合条件
|
||||
if($is_settlement){
|
||||
$total_weight_money = model('fenxiao_order')->getSum([['site_id' ,'=' , $site_id],['is_weight' ,'=' ,1],['weight_log_id' ,'=' ,0]],'weight_money');
|
||||
$total_order_money = model('fenxiao_order')->getSum([['site_id' ,'=' , $site_id],['is_weight' ,'=' ,1],['weight_log_id' ,'=' ,0]],'real_goods_money');
|
||||
$alias = 'f';
|
||||
$join = [
|
||||
['fenxiao_level l', 'f.level_id = l.level_id', 'right']
|
||||
];
|
||||
$fenxiao_list = model('fenxiao')->getList([ [ 'l.is_weight', '=', 1 ], [ 'f.is_delete', '=', 0 ] ],'f.fenxiao_id,f.fenxiao_name','',$alias,$join);
|
||||
if($fenxiao_list && $total_weight_money){
|
||||
$fenxiao_ids = $detail = $order_ids = [];
|
||||
$total_commission = 0;
|
||||
Db::startTrans();
|
||||
try {
|
||||
foreach($fenxiao_list as $key => $val){
|
||||
$condition = [
|
||||
['site_id', '=', $site_id],
|
||||
['chain' , 'like' ,'%' . $val['fenxiao_id']. ',%'],
|
||||
['is_delete' ,'=' ,0]
|
||||
];
|
||||
$ids = model('fenxiao')->getColumn($condition,'member_id');
|
||||
$weight_con = [
|
||||
['site_id' ,'=' , $site_id],
|
||||
['is_weight' ,'=' ,1],
|
||||
['weight_log_id' ,'=' ,0],
|
||||
['member_id', 'in' ,$ids]
|
||||
];
|
||||
$weight_money = model('fenxiao_order')->getSum($weight_con,'weight_money');
|
||||
$order_ids = $key === 0 ?? model('fenxiao_order')->getColumn($weight_con,'order_id');
|
||||
$fenxiao_ids[] = $val['fenxiao_id'];
|
||||
$commission = $weight_money / $total_weight_money * $total_order_money;
|
||||
$total_commission += $commission;
|
||||
$detail[] = [
|
||||
'fenxiao_id' => $val['fenxiao_id'],
|
||||
'name' => $val['fenxiao_name'],
|
||||
'commission' => $commission
|
||||
];
|
||||
}
|
||||
$add = [
|
||||
'order_ids' => json_encode($order_ids),
|
||||
'fenxiao_ids' => json_encode($fenxiao_ids),
|
||||
'total_money' => $total_commission,
|
||||
'detail' => $detail,
|
||||
'create_time' => time()
|
||||
];
|
||||
$log_id = model('weight_order_log')->add($add);
|
||||
model('fenxiao_order')->update(['weight_log_id' => $log_id],[['order_id', 'IN' , $order_ids]]);
|
||||
Db::commit();
|
||||
return $log_id;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return error(-1, $e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $this->success();
|
||||
}
|
||||
}
|
||||
|
|
@ -84,6 +84,7 @@ class Level extends BaseShop
|
|||
'one_child_num' => input('one_child_num',''),
|
||||
'one_child_fenxiao_num' => input('one_child_fenxiao_num',''),
|
||||
'one_child_fenxiao_equal' => input('one_child_fenxiao_equal',0),
|
||||
'is_weight' => input('is_weight',0),
|
||||
'goods_ids' => input('goods_ids',''),
|
||||
];
|
||||
$res = $model->addLevel($data);
|
||||
|
|
@ -132,6 +133,7 @@ class Level extends BaseShop
|
|||
'one_child_num' => input('one_child_num',''),
|
||||
'one_child_fenxiao_num' => input('one_child_fenxiao_num',''),
|
||||
'one_child_fenxiao_equal' => input('one_child_fenxiao_equal',0),
|
||||
'is_weight' => input('is_weight',0),
|
||||
'goods_ids' => input('goods_ids',''),
|
||||
];
|
||||
$level_id = input('level_id', '');
|
||||
|
|
|
|||
|
|
@ -59,6 +59,13 @@
|
|||
</div>
|
||||
<div class="word-aux">
|
||||
<p>会员购买后当前等级分销商的最多能获取几层</p>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否参与加权分红分配:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_weight" value="0" lay-filter="withdraw_type" title="否" checked />
|
||||
<input type="radio" name="is_weight" value="1" lay-filter="withdraw_type" title="是" />
|
||||
</div>
|
||||
</div>
|
||||
<!--{if $basics_info.level == 1}-->
|
||||
<!--<div class="layui-form-item">-->
|
||||
|
|
|
|||
|
|
@ -64,6 +64,13 @@
|
|||
<div class="word-aux">
|
||||
<p>会员购买后当前等级分销商的最多能获取几层</p>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否参与加权分红分配:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_weight" value="0" lay-filter="is_weight" title="否" checked />
|
||||
<input type="radio" name="is_weight" value="1" lay-filter="is_weight" {if $info.is_weight == 1} checked {/if} title="是" />
|
||||
</div>
|
||||
</div>
|
||||
<!--{if $basics_info.level == 1}-->
|
||||
<!--<div class="layui-form-item">-->
|
||||
<!--<label class="layui-form-label"><span class="required">*</span>一级佣金比例:</label>-->
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ Order.prototype.cols = [
|
|||
}else{
|
||||
html += '<div>进货分佣:'+ ' ¥--' +'</div>';
|
||||
}
|
||||
|
||||
if(orderitem.founder_commission > 0){
|
||||
var array_detail = $.parseJSON(orderitem.founder_fenxiao_detail);
|
||||
for(var i=0;i<array_detail.length;i++){
|
||||
|
|
@ -129,6 +130,12 @@ Order.prototype.cols = [
|
|||
}else{
|
||||
html += '<div>创始人分佣:'+ ' ¥--' +'</div>';
|
||||
}
|
||||
|
||||
if(orderitem.is_weight){
|
||||
html += '<div>入池分红:'+ (orderitem.weight_money > 0 ? ' ¥' + orderitem.weight_money : '--') +'</div>';
|
||||
}else{
|
||||
html += '<div>入池分红:'+ ' ¥--' +'</div>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ class Model
|
|||
* @param string $key 索引
|
||||
* @return array
|
||||
*/
|
||||
final public function getColumn($where = [], $field = '', $key = '')
|
||||
final public function getColumn($where = [], $field = '', $key = '',$or = [])
|
||||
{
|
||||
if ($this->is_cache) {
|
||||
$cache_name = $this->table . '_' . __FUNCTION__ . '_' . serialize(func_get_args());
|
||||
|
|
@ -314,7 +314,9 @@ class Model
|
|||
return $cache;
|
||||
}
|
||||
}
|
||||
|
||||
if($or){
|
||||
Db::name($this->table)->whereOr($or);
|
||||
}
|
||||
$result = Db::name($this->table)->where($where)->column($field, $key);
|
||||
if ($this->is_cache && $result) {
|
||||
Cache::tag("cache_table" . $this->table)->set($cache_name, $result, 300);
|
||||
|
|
|
|||
|
|
@ -675,6 +675,7 @@ class Upload extends BaseModel
|
|||
'original' => null
|
||||
);
|
||||
$compress = $this->config['upload']['compress'] ?? 'original';
|
||||
|
||||
if ($compress == 'original' && !empty($tmp_file)) {
|
||||
\think\facade\Filesystem::disk('public')->putFileAs('', $tmp_file, $file);
|
||||
} else {
|
||||
|
|
@ -735,6 +736,9 @@ class Upload extends BaseModel
|
|||
return $this->success($file, "UPLOAD_SUCCESS");
|
||||
}
|
||||
}
|
||||
if (empty($put_result)) {
|
||||
$put_result = $this->success($file, "UPLOAD_SUCCESS");
|
||||
}
|
||||
|
||||
//云上传没有成功 保存到本地
|
||||
return $put_result;
|
||||
|
|
@ -941,6 +945,7 @@ class Upload extends BaseModel
|
|||
$new_file = $file_name . ".png";
|
||||
|
||||
$image = $this->getImageService($file);
|
||||
|
||||
$result = $this->imageCloud($image, $new_file);//原图云上传(文档流上传)
|
||||
if ($result["code"] < 0)
|
||||
return $result;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ use extend\Kdzhushou;
|
|||
use think\Exception;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
|
||||
use addon\fenxiao\model\WeightOrder;
|
||||
use EasyWeChat\Kernel\Messages\TextCard;
|
||||
|
||||
class Test{
|
||||
|
|
@ -28,10 +28,11 @@ class Test{
|
|||
$order_info = model('order')->getInfo(['order_id' => $orderId]);
|
||||
// $fenxiao_order = new OrderPay();
|
||||
// $res = $fenxiao_order->handle($order_info);
|
||||
// $fenxiao_order = new FenxiaoOrder();
|
||||
// $res = $fenxiao_order->calculate($order_info);
|
||||
$fenxiao_order_model = new FenxiaoOrder();
|
||||
$res = $fenxiao_order_model->calculateOrder($order_info['order_id']);
|
||||
$fenxiao_order = new WeightOrder();
|
||||
$res = $fenxiao_order->calculate(1);
|
||||
// $fenxiao_order_model = new FenxiaoOrder();
|
||||
// $res = $fenxiao_order_model->calculate($order_info);
|
||||
// $res = $fenxiao_order_model->calculateOrder($order_info['order_id']);
|
||||
dump($res);die;
|
||||
$fenxiao_id = 195;
|
||||
$fenxiao = new Fenxiao();
|
||||
|
|
|
|||
Loading…
Reference in New Issue