ci = &get_instance(); $this->init($params); $class_name = lcfirst(get_class($this));//调用类的名称,子类或者当前类名称 $this->log_file = "libraris_{$class_name}.log"; } public function init($params) { if ($params['app_id']) { $this->app_id = $params['app_id']; $this->load->model('app/App_model', 'mdApp'); $this->app_config = $this->ci->mdApp->appConfig()[$this->app_id]; } } /** * Notes:增加分销记录 * Created on: 2020/7/8 15:21 * Created by: dengbw * @param $params * @return bool */ public function deal_log($params) { if (!$params['sid']) { return array('code' => 0, 'msg' => '参数错误'); } $this->load->model('order/order_purchase_model', 'mdOrderPurchase'); $this->load->model($this->app_config['model'], 'mdUser'); $this->load->model('app/Deal_log_model', 'mdDealLog'); $this->load->model('apporder/order_exchange_model', 'mdOrderExchange'); $order = $this->ci->mdOrderPurchase->get(array('sid' => $params['sid'], 'app_id' => $this->app_id)); if (!$order) { return array('code' => 0, 'msg' => '订单不存在'); } $item = $this->ci->mdItems->get(array('id' => $order['item_id'], 'app_id' => $this->app_id)); if (!$item) { return array('code' => 0, 'msg' => '商品不存在'); } if (!$item['is_deal']) { return array('code' => 0, 'msg' => '不是分销商品'); } if ($item['type'] == 1) {//实物 if ($order['status_detail'] != 25) { return array('code' => 0, 'msg' => '不是待发货'); } } else if ($item['type'] == 2) {//虚似商品 if ($order['status_detail'] != 21) { return array('code' => 0, 'msg' => '不是待核销'); } } if ($order['sku_id']) { $reIs = $this->ci->mdItemStock->get(array('id' => $order['sku_id']), 'brokerage_1,brokerage_2'); } else { $reIs = $this->ci->mdItemStock->get(array('item_id' => $order['item_id'], 'sku_ids' => 0), 'brokerage_1,brokerage_2'); } $app = $this->ci->mdApp->get(array('id' => $this->app_id)); $json = $app['jsondata'] ? json_decode($app['jsondata'], true) : array(); $lock_fans = $json['lock_fans'] ? $json['lock_fans'] : 0; //1锁粉 $app_uid = $order['app_uid']; if ($lock_fans == 0) {//没锁粉操作 if ($order['cf_uid']) { $app_uid = $order['cf_uid']; } else { $order['cf_uid'] = $app_uid; } } $reU = $this->ci->mdUser->get(array('id' => $app_uid), 'dealer,up_uid'); if (!$reU) { //debug_log("[error] " . __FUNCTION__ . ":{$order['app_uid']}_用户不存在", $this->log_file); return array('code' => 0, 'msg' => '用户不存在'); } if ($lock_fans == 0 && $reU['dealer'] == 0) {//没锁粉操作 return array('code' => 0, 'msg' => '不是分销用户'); } $res = array(); $brokerage_1 = $reIs['brokerage_1']; $brokerage_2 = $reIs['brokerage_2']; $brokerage = $reIs['brokerage_1'] + $reIs['brokerage_2']; //直销 if ($item['type'] == 2 && $item['code_num'] == 1) {//虚似商品且一个核销码 $where = array('status' => 0, 'app_id' => $this->app_id, 'sid' => $params['sid'], 'order_type' => 'purchase'); $res = $this->ci->mdOrderExchange->select($where, 'id DESC', 0, 0, 'id');///未核销 } else { //商品多个核销码数量或实物商品,只算订算数 for ($x = 0; $x < $order['item_num']; $x++) { $res[] = array("id" => 0); } } //type 0自己购买 1团员购买 2粉丝购买 3团员粉丝购买 if ($res) { foreach ($res as $key => $value) { if ($lock_fans == 1) {//1锁粉 if ($reU['dealer'] == 1) { if ($reU['up_uid'] == 0) {//团长自己购买直销 $this->set_deal_log(array(0, $order['app_uid'], 0, $brokerage, $value['id'], $order['sid'], $order['app_id'])); } else {//团员自己购买 $this->set_deal_log(array(0, $order['app_uid'], 0, $brokerage_1, $value['id'], $order['sid'], $order['app_id'])); } if ($reU['up_uid']) {//团员购买团长2级 $reU3 = $this->ci->mdUser->get(array('id' => $reU['up_uid']), 'dealer');//团长 if ($reU3['dealer'] == 1 && $reU3['up_uid'] == 0) {//判断是否团长 $this->set_deal_log(array(1, $reU['up_uid'], $order['app_uid'], $brokerage_2, $value['id'], $order['sid'], $order['app_id'])); } } } else if ($reU['dealer'] == 0 && $reU['up_uid']) { //粉丝购买直销 $this->set_deal_log(array(2, $reU['up_uid'], $order['app_uid'], $brokerage, $value['id'], $order['sid'], $order['app_id'])); $reU2 = $this->ci->mdUser->get(array('id' => $reU['up_uid']), 'up_uid');//团员 $reU3 = $this->ci->mdUser->get(array('id' => $reU2['up_uid']), 'dealer');//团长 if ($reU3['dealer'] == 1 && $reU3['up_uid'] == 0) {//团员粉丝购买团长2级 $this->set_deal_log(array(3, $reU2['up_uid'], $reU['up_uid'], $brokerage_2, $value['id'], $order['sid'], $order['app_id'])); } } } else if ($lock_fans == 0) { if ($order['cf_uid'] == $order['app_uid']) {//自己购买 if ($reU['up_uid'] == 0) {//团长自己购买直销 $this->set_deal_log(array(0, $order['app_uid'], 0, $brokerage, $value['id'], $order['sid'], $order['app_id'])); } else {//团员自己购买1级 $this->set_deal_log(array(0, $order['app_uid'], 0, $brokerage_1, $value['id'], $order['sid'], $order['app_id'])); } if ($reU['up_uid']) {//团员购买团长2级 $reU3 = $this->ci->mdUser->get(array('id' => $reU['up_uid']), 'dealer'); if ($reU3['dealer'] == 1 && $reU3['up_uid'] == 0) {//判断是否团长 $this->set_deal_log(array(1, $reU['up_uid'], $order['app_uid'], $brokerage_2, $value['id'], $order['sid'], $order['app_id'])); } } } else { if ($reU['up_uid'] == 0) {//团长自己分享出去直销 $this->set_deal_log(array(2, $order['cf_uid'], $order['app_uid'], $brokerage, $value['id'], $order['sid'], $order['app_id'])); } else {//团员分享出去 //团员1级 $this->set_deal_log(array(2, $order['cf_uid'], $order['app_uid'], $brokerage_1, $value['id'], $order['sid'], $order['app_id'])); //团长2级 $reU3 = $this->ci->mdUser->get(array('id' => $reU['up_uid']), 'dealer'); if ($reU3['dealer'] == 1 && $reU3['up_uid'] == 0) {//判断是否团长 $this->set_deal_log(array(3, $reU['up_uid'], $order['cf_uid'], $brokerage_2, $value['id'], $order['sid'], $order['app_id'])); } } } } } } if ($this->data) { $res2 = $this->ci->mdDealLog->add_batch($this->data); if (!$res2) { debug_log("[error] " . __FUNCTION__ . ":err_sql:" . $this->ci->mdDealLog->db->last_query(), $this->log_file); } } } private function set_deal_log($params) { if ($params[3]) { $this->data[] = array('type' => $params[0], 'app_uid' => $params[1], 't_uid' => $params[2], 'money' => $params[3] , 'ex_id' => $params[4], 'cf_sid' => $params[5], 'app_id' => $params[6], 'status' => 0, 'c_time' => time()); } } /** * Notes:核销成功/确认收货后加佣金 * Created on: 2020/7/9 16:30 * Created by: dengbw * @param $params * @return bool */ public function deal_log_code($params) { if (!$params['sid']) { return array('code' => 0, 'msg' => '参数错误'); } $this->load->model('appitem/items_model', 'mdItems'); $this->load->model('order/order_purchase_model', 'mdOrderPurchase'); $order = $this->ci->mdOrderPurchase->get(array('sid' => $params['sid'], 'app_id' => $this->app_id)); $item = $this->ci->mdItems->get(array('id' => $order['item_id'], 'app_id' => $this->app_id)); if (!$order) { return array('code' => 0, 'msg' => '订单不存在'); } if (!$item) { return array('code' => 0, 'msg' => '商品不存在'); } if (!$item['is_deal']) { return array('code' => 0, 'msg' => '不是分销商品'); } $where = array("app_id" => $this->app_id, "cf_sid" => $params['sid'], "status" => 0); if ($item['type'] == 1) {//实物 if ($order['status_detail'] != 27) { return array('code' => 0, 'msg' => '未收货'); } } else if ($item['type'] == 2) {//虚似商品 if ($item['code_num'] == 1 && $params['ex_id']) { $this->load->model('apporder/order_exchange_model', 'mdOrderExchange'); $re_exchange = $this->ci->mdOrderExchange->get(array('id' => $params['ex_id'])); if ($re_exchange['status'] != 1) { return array('code' => 0, 'msg' => '未核销'); } $where['ex_id'] = $params['ex_id']; //虚似商品且一个核销码,根据核销码加佣金 } } $this->load->model('app/User_account_model', 'mdUserAccount'); $this->load->model('app/User_accountlog_model', 'mdUserAccountLog'); $this->load->model('app/Deal_log_model', 'mdDealLog'); $res = $this->ci->mdDealLog->select($where, 'id DESC', 0, 0, 'id,app_uid,money'); if ($res) { foreach ($res as $key => $value) { $reUa = $this->ci->mdUserAccount->get(array('app_id' => $this->app_id, 'app_uid' => $value['app_uid'])); if ($reUa['id']) { $aid = $reUa['id']; $money_total = $reUa['money_total'] + $value['money']; $money_left = $reUa['money_left'] + $value['money']; } else { $money_total = $value['money']; $money_left = $value['money']; $addData = array('app_id' => $this->app_id, 'app_uid' => $value['app_uid'], 'status' => 1, 'c_time' => time()); $aid = $this->ci->mdUserAccount->add($addData); } if ($aid) { $this->ci->mdUserAccountLog->db->trans_begin(); $this->ci->mdUserAccount->db->trans_begin(); $this->ci->mdDealLog->db->trans_begin(); //增加资金流水表 $this->ci->mdUserAccountLog->add(array('account_id' => $aid, 'trade_type' => 1, 'money_in' => $value['money'] , 'money_left' => $money_left, 'status' => 1, 'c_time' => time())); //更新账户表 $this->ci->mdUserAccount->update(array('money_total' => $money_total, 'money_left' => $money_left), array('id' => $aid)); //更新分销记录表 $this->ci->mdDealLog->update(array('status' => 1), array('id' => $value['id'])); if ($this->ci->mdUserAccountLog->db->trans_status() && $this->ci->mdUserAccount->db->trans_status() && $this->ci->mdDealLog->db->trans_status()) { $this->ci->mdUserAccountLog->db->trans_commit(); $this->ci->mdUserAccount->db->trans_commit(); $this->ci->mdDealLog->db->trans_commit(); debug_log("[success] " . __FUNCTION__ . ":操作成功,account_id={$aid}", $this->log_file); } else { $this->ci->mdUserAccountLog->db->trans_rollback(); $this->ci->mdUserAccount->db->trans_rollback(); $this->ci->mdDealLog->db->trans_rollback(); debug_log("[finish] " . __FUNCTION__ . ":执行失败回滚,account_id={$aid}", $this->log_file); } } } } } /** * Notes:更新分销记录状态 -1无效 * Created on: 2020/7/13 15:37 * Created by: dengbw * @param $params * @return array */ public function deal_log_status($params) { $this->load->model('appdistribution/Deal_log_model', 'mdDealLog'); $this->load->model('appitem/items_model', 'mdItems'); $this->load->model('order/order_purchase_model', 'mdOrderPurchase'); if (!$params['id']) { return array('code' => 0, 'msg' => '参数错误'); } $order = $this->ci->mdOrderPurchase->get(array('id' => $params['id'])); if (!$order) { return array('code' => 0, 'msg' => '订单不存在'); } $item = $this->ci->mdItems->get(array('id' => $order['item_id'], 'app_id' => $this->app_id)); if (!$item) { return array('code' => 0, 'msg' => '商品不存在'); } if (!$item['is_deal']) { return array('code' => 0, 'msg' => '不是分销商品'); } if (($order['status'] == 3 && $order['status_detail'] == 33) //申请退款 已退款 || ($order['status'] == 2 && $order['status_detail'] == 23) //支付后环节 核销码过期未退款 || ($order['status'] == 2 && $order['status_detail'] == 24) //支付后环节 核销码过期已退款 ) { //更新分销状态失效 $this->ci->mdDealLog->update(array('status' => -1), array('app_id' => $order['app_id'], 'cf_sid' => $order['sid'])); debug_log("[success] " . __FUNCTION__ . ":操作成功,sid={$order['sid']}", $this->log_file); } else { debug_log("[error] " . __FUNCTION__ . ":{$order['sid']}_更新分销记录状态失败", $this->log_file); } } public function __get($name) { if ('_model' === substr($name, -6)) { return $this->ci->$name; } elseif ('load' == $name) { return $this->ci->load; } return null; } }