pageList($condition, $field, $order, $page, $page_size); return $this->success($list); } public function getOrderInfo($condition = [], $field = '*') { $info = model('manage_order')->getInfo($condition, $field); return $this->success($info); } /*** * 计算佣金订单,仅算芝麻流水签约流水佣金 * @param $data * @return array */ public function calculate($data = []) { if (isset($data['order_status']) && $data['order_status'] == 'ORDERED') { //下单成功 return $this->success(); //获取分销基础配置 $siteInfo = model("site")->getInfo([['site_id', '=', $data['site_id']]]); if (!$siteInfo['manage_id']) return $this->success(); //对应拓客管理员 $agent_id = $siteInfo['agent_id']; if (!$agent_id) return $this->success(); $where = [ ['order_id', '=', $data['order_id']], ['order_no', '=', $data['third_order_no']] ]; $manage_order_id = model('manage_order')->getValue($where, 'id'); //这里不对 if ($manage_order_id) return $this->success(); $commission_rate = model('pay_shop')->getValue(['site_id' => $data['site_id']], 'service_commission');//当前商家费率 if (!$commission_rate) return $this->success(); $config_model = new Config(); $basic_config = $config_model->getBasicsConfig($agent_id)['data']['value']; if (empty($basic_config) || $basic_config['is_open'] == 0) return $this->success(); $level_config = model('manage_level')->getColumn([['site_id', '=', $agent_id]], '*', 'level_id'); if (!$level_config) return $this->success(); //获取三层关系图 $manageInfo = Db::view('manage_user a', 'id,level_id as one_level_id,real_name as one_real_name,parent,grand_parent,status') ->view('manage_user b', 'level_id as two_level_id,real_name as two_real_name', 'a.parent=b.id', 'left') ->view('manage_user c', 'level_id as three_level_id,real_name as three_real_name', 'a.grand_parent=c.id', 'left') ->where('a.id', '=', $siteInfo['manage_id']) ->find(); $levelInnfo = $level_config[$manageInfo['one_level_id']] ?? ''; if (empty($levelInnfo)) return $this->success(); if ($manageInfo['status'] != 1) return $this->success(); $commission = round($data['amount'] * $commission_rate / 100, 2); //总佣金 $one_rate = $levelInnfo['direct_trade_rate'] ?? 0; $two_rate = $levelInnfo['indirect_trade_rate'] ?? 0; if ($manageInfo['two_level_id'] == $manageInfo['one_level_id']) { //同级处理 官方特性 $two_rate = $levelInnfo['same_trade_rate'] ?? 0; } $three_rate = $levelInnfo['direct_trade_rate'] ?? 0; if ($manageInfo['three_level_id'] == $manageInfo['three_level_id']) { $three_rate = $levelInnfo['same_trade_rate'] ?? 0; } $one_commission = round($data['amount'] * $one_rate / 100, 2); //一级佣金 $two_commission = round($data['amount'] * $two_rate / 100, 2); //二级佣金 $three_commission = round($data['amount'] * $three_rate / 100, 2); //三级佣金 $orderGoodsInfo = model('order_goods')->getInfo([['order_id', '=', $data['order_id']]]); /*** * 城市服务商佣金奖励 */ $province_rate = $levelInnfo['province_trade_rate']; $city_rate = $levelInnfo['city_trade_rate']; $district_rate = $levelInnfo['district_trade_rate']; $province_commission = round($data['amount'] * $province_rate / 100, 2); $city_commission = round($data['amount'] * $city_rate / 100, 2); $district_commission = round($data['amount'] * $district_rate / 100, 2); //启动分销 $addData = [ 'order_id' => $data['order_id'], 'order_no' => $data['third_order_no'], 'order_goods_id' => $orderGoodsInfo['order_goods_id'], 'site_id' => $siteInfo['site_id'], 'ag_site_id' => $siteInfo['agent_id'], 'site_name' => $siteInfo['site_name'], 'goods_id' => $orderGoodsInfo['order_goods_id'], 'sku_id' => $orderGoodsInfo['sku_id'], 'sku_name' => $orderGoodsInfo['sku_name'], 'sku_image' => $orderGoodsInfo['sku_image'], 'price' => $data['amount'], 'num' => 1, 'real_goods_money' => $orderGoodsInfo['goods_money'], 'member_id' => $orderGoodsInfo['member_id'], 'member_name' => $data['name'], 'member_mobile' => $data['mobile'], 'full_address' => $data['full_address'] . $data['address'], 'province_id' => $data['province_id'], 'city_id' => $data['city_id'], 'district_id' => $data['district_id'], 'promotion_type' => $data['promotion_type'] ?? '', 'promotion_type_name' => $data['promotion_type_name'] ?? '', 'one_manage_id' => $manageInfo['id'], 'two_manage_id' => $manageInfo['parent'], 'three_manage_id' => $manageInfo['grand_parent'], 'commission' => $commission, //总佣金 'commission_rate' => $commission_rate,//总费率 'one_manage_name' => $manageInfo['one_real_name'], 'two_manage_name' => $manageInfo['two_real_name'], 'three_manage_name' => $manageInfo['three_real_name'], 'one_commission' => $one_commission, 'two_commission' => $two_commission, 'three_commission' => $three_commission, 'province_commission' => $province_commission, 'city_commission' => $city_commission, 'district_commission' => $district_commission, 'one_rate' => $one_rate, 'two_rate' => $two_rate, 'three_rate' => $three_rate, 'trade_form' => 'zmxx', 'create_time' => time() ]; $res = model("manage_order")->add($addData); // 分销商检测升级 if ($level_config['upgrade_type'] > 0) { event('UpgradeManagelevel', $siteInfo['manage_id']); } return $this->success($res); } } /**** * 按周结算佣金 * @param $agent_id * @return array|void */ public function SaasCronOrderSettlement($agent_id = 0) { if ($agent_id) { $config_model = new Config(); $basic_config = $config_model->getBasicsConfig($agent_id)['data']['value']; if (empty($basic_config) || $basic_config['is_open'] == 0) return $this->success(); } } /*** * 常规订单结算佣金 * @param $params * @return void */ public function OrderSettlementByOrder($params = []) { if (isset($params['order_id'])) { $where = [ ['order_id', '=', $params['order_id']], ['is_settlement', '=', 0], ['is_refund', '=', 0], ]; $field = 'id,one_manage_id,one_commission,one_manage_name,two_manage_id,two_commission,two_manage_name,three_manage_id,three_commission,three_manage_name'; $manage_order_info = model('manage_order')->getList($where, $field); if ($manage_order_info) { $account = new ManageAccount(); model('manage_order')->update(['is_settlement' => 1], $where);//变更结算状态 foreach ($manage_order_info as $k => $v) { $one_manage_id = $v['one_manage_id']; if ($one_manage_id && $v['one_commission']) { //添加直连佣金 $account->addAccount($one_manage_id, $v['one_manage_name'], 'order', $v['one_commission'], $v['id']); } $two_manage_id = $v['two_manage_id']; if ($two_manage_id && $v['two_commission']) { //添加贡献值 $account->addContribute($two_manage_id, $v['two_manage_name'], 'two_contribute', $v['two_commission'], $v['id']); } $three_manage_id = $v['three_manage_id']; if ($three_manage_id && $v['three_commission']) {//添加贡献值 $account->addContribute($three_manage_id, $v['three_manage_name'], 'three_contribute', $v['three_commission'], $v['id']); } } return $this->success('OrderSettlementByOrder'); } } return $this->error('OrderSettlementByOrder'); } /*** * 签约订扣款成功结算佣金 * @param $param * @return void */ public function CloudOrderSettlement($param = []) { if (isset($param['order_status']) && $param['order_status'] == 'PAID') { $where = [ ['order_id', '=', $param['order_id']], ['order_no', '=', $param['third_order_no']], ['is_settlement', '=', 0], ['is_refund', '=', 0], ]; $manage_order_info = model('manage_order')->getInfo($where, '*'); if ($manage_order_info) { $account = new ManageAccount(); $one_manage_id = $manage_order_info['one_manage_id']; if ($one_manage_id && $manage_order_info['one_commission']) { //添加直连佣金 $account->addAccount($one_manage_id, $manage_order_info['one_manage_name'], 'order', $manage_order_info['one_commission'], $manage_order_info['id']); } $two_manage_id = $manage_order_info['two_manage_id']; if ($two_manage_id && $manage_order_info['two_commission']) { $account->addAccount($two_manage_id, $manage_order_info['two_manage_name'], 'order', $manage_order_info['two_commission'], $manage_order_info['id']); } $three_manage_id = $manage_order_info['three_manage_id']; if ($three_manage_id && $manage_order_info['three_commission']) { $account->addAccount($three_manage_id, $manage_order_info['three_manage_name'], 'order', $manage_order_info['three_commission'], $manage_order_info['id']); } $this->SiteRewardPoints($manage_order_info['ag_site_id'], $manage_order_info['site_id'], $manage_order_info['commission']); return $this->success('CloudOrderSettlement'); } } return $this->error('CloudOrderSettlement'); } /*** * 站点奖励积分 * @param $agent_id * @param $site_id * @param $commission * @return void */ public function SiteRewardPoints($agent_id, $site_id, $commission) { $config_model = new Config(); $basic_config = $config_model->getBasicsConfig($agent_id)['data']['value']; if ($basic_config['is_point_cash']) { $point_cash_rate = $basic_config['point_cash_rate']; $point = $commission; if ($point_cash_rate) { $point = $commission * $point_cash_rate / 100; } model('site')->update(['point' => ['exp', 'integral+' . round($point)]], ['site_id' => $site_id]); } } }