123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- use app\common\model\OrderGoods;
- use app\common\model\OrderRefund;
- use app\common\model\ShopIdentity;
- use app\common\model\Shops;
- use app\common\model\store\Setting;
- use app\common\model\user\CommissionsDetailOld;
- use think\migration\Seeder;
- class MigrateOldCommissionDetailToNewSeeder extends Seeder
- {
- /**
- * Run Method.
- *
- * Write your database seeder using this method.
- *
- * More information on writing seeders is available here:
- * http://docs.phinx.org/en/latest/seeding.html
- */
- public function run()
- {
- $list = CommissionsDetailOld::alias('commissions_detail')
- ->leftJoin('user us','commissions_detail.user_id=us.user_id')
- ->leftJoin('order_goods od','commissions_detail.order_goods_id=od.order_goods_id')
- ->field('commissions_detail.*,od.create_time as order_create_time,od.commission_settlement_time,od.commission_settlement_status,us.seller_grade')
- ->order(['commissions_detail.order_id'=>'asc','od.commission_settlement_time'=>'desc'])
- ->select();
- $ratios = Setting::getItem('distributor_grade', 10001)['distributor'];
- if (count($list)){
- $data = $orderUpdate = $orderIds = [];
- $commDetailM = new \app\common\model\user\CommissionsDetail();
- $orderM = new \app\common\model\Order();
- foreach ($list as $item){
- $temp['user_id'] = $item['user_id'];
- $temp['clearing_money'] = $item['clearing_money'];
- $temp['clearing_money_amount'] = $item['clearing_money_amount'];
- $temp['create_time'] = strtotime($item['create_time']);
- $temp['update_time'] = strtotime($item['update_time']);
- $temp['clearing_status'] = $item['clearing_status'];
- $temp['order_id'] = $item['order_id'];
- $temp['shop_id'] = $item['shop_id'];
- $temp['role'] = $item['role'];
- $temp['buyer_user_id'] = $item['buyer_user_id'];
- $temp['commission_level'] = $item['commission_level'];
- $temp['commission_percent'] = 0;
- if ($item['commission_level'] == 1){
- $temp['commission_percent'] = $ratios[$item['seller_grade']-1]['first_commission']??0;;
- }
- if ($item['commission_level'] == 2){
- $temp['commission_percent'] = $ratios[$item['seller_grade']-1]['second_commission']??0;;
- }
- if ($item['role'] == 2){
- $shop = Shops::find($item['shop_id']);
- $temp['commission_percent'] = $shop->boss_percent;
- }
- if ($item['role'] == 3){
- $shop = Shops::find($item['shop_id']);
- $temp['commission_percent'] = $shop->manager_percent;
- }
- if ($item['role'] == 4){
- $shop = Shops::find($item['shop_id']);
- $temp['commission_percent'] = $shop->staff_percent;
- }
- if ($item['role'] == 5){
- $md = new ShopIdentity();
- $pers = $md->field('shop_id,role_id as role,fc_percent as percent')
- ->where('shop_id',$item['shop_id'])
- ->where('role_id',5)->find();
- $temp['commission_percent'] = $pers->percent??0;
- }
- $temp['seller_grade'] = $item['seller_grade'];
- $temp['order_create_time'] = $item['order_create_time'];
- //计算销售额
- $orderGoods = OrderGoods::field('order_goods_id,total_num,total_pay_price,rice_card_money,total_pay_price,frozen_status')
- ->where('order_id',$item['order_id'])->select();
- $saleVolume = '0';
- foreach ($orderGoods as $og){
- $rate = 1;
- $refund = OrderRefund::where('order_goods_id',$og->order_goods_id)
- ->where('finance_refund',10)->find();
- $ogSale = bcadd($og['total_pay_price'],$og['rice_card_money'],4);
- if ($refund){
- $rate = bcdiv(strval($og['total_num'] - $refund['goods_num']),strval($og['total_num']),4);
- }
- if ($rate <= 1 && $rate >= 0){
- $saleVolume = bcadd(bcmul($ogSale,strval($rate),4),strval($saleVolume),4);
- }
- }
- $temp['order_sale_volume'] = $saleVolume;
- $data[] = $temp;
- if (!in_array($temp['order_id'],$orderIds)){
- $orderTemp['order_id'] = $item['order_id'];
- $orderTemp['commission_settlement_time'] = $item['commission_settlement_time'];
- $orderTemp['commission_settlement_status'] = $item['commission_settlement_status'];
- $orderUpdate[] = $orderTemp;
- $orderIds[] = $item['order_id'];
- }
- }
- //新增到新分佣表
- $commDetailM->insertAll($data);
- //更新order新增字段
- $orderM->saveAll($orderUpdate);
- }
- }
- }
|