| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977 |
- <?php
- /**
- * @package merchant
- *
- * @author xaboy
- * @day 2020-04-28
- *
- *
- */
- namespace app\common\repositories\user;
- use app\common\dao\user\UserThirdDao;
- use app\common\model\user\User;
- use app\common\repositories\BaseRepository;
- use app\common\repositories\store\order\StoreOrderRepository;
- use app\common\repositories\store\product\ProductRepository;
- use app\model\common\TbOrderModel;
- use think\exception\ValidateException;
- use think\facade\Log;
- use think\test\queue\LoopBreakerException;
- use function GuzzleHttp\Psr7\str;
- use think\facade\Db;
- //use think\Db;
- /**
- * Class UserRepository
- * @package app\common\repositories\user
- * @author xaboy
- * @day 2020-04-28
- * @mixin UserThirdDao
- */
- class UserThirdRepository extends BaseRepository
- {
- /**
- * UserRepository constructor.
- * @param UserThirdDao $dao
- */
- public function __construct(UserThirdDao $dao)
- {
- $this->dao = $dao;
- }
- /*创建用户第三方pid*/
- public function createPid($data = [])
- {
- $res = Db::name("user_third")->insertGetId($data);
- return $res;
- }
- /*获取第三方pid*/
- public function getDetail($where = [], $field = "*")
- {
- $res = Db::name("user_third")->where($where)->field($field)->find();
- return $res;
- }
- /*获取配置信息*/
- public function config()
- {
- $config = $data = [
- 'promoter_rate_technology' => systemConfig('promoter_rate_technology'), //技术服务费
- 'yanglao_Meeting' => systemConfig('yanglao_Meeting'),//会费比例
- 'yanglao_Meeting_total' => systemConfig('yanglao_Meeting_total'),//会费总金额
- 'yanglaojin_admin' => systemConfig('yanglaojin_admin'), //养老金比例
- 'mer_rate' => systemConfig('mer_rate'), //商家比例
- 'third_day' => systemConfig('third_day'), //第三方订单结算天数
- ];
- return $config;
- }
- /*获取信息*/
- public function getOrderDetail($table, $where = [], $field = "*")
- {
- $res = DB::name("$table")->where($where)->field($field)->find();
- return $res;
- }
- /*创建订单*/
- public function createOrder($table, $data, $time = 0)
- {
- //获取订单结算时间
- $day = $this->config();
- if ($time > 0) {
- $data['bill_end_time'] = $time + $day['third_day'] * 24 * 60 * 60;
- }
- $res = Db::name("$table")->insertGetId($data);
- return $res;
- }
- //获取第三方订单的计算时间
- public function getSettleTime($time)
- {
- //获取订单结算时间
- $day = $this->config();
- if ($time > 0) {
- $time = $time + $day['third_day'] * 24 * 60 * 60;
- }
- return $time;
- }
- /*修改订单*/
- public function saveOrder($table, $where = [], $data = [])
- {
- $res = Db::name("$table")->where($where)->update($data);
- return $res;
- }
- /*计算用户本年已经扣除的会费*/
- public function getTotalHui($uid)
- {
- $data = Db::name("admin_bill")->where(['pm' => 0, 'status' => 1, 'type' => 2, 'link_id' => $uid])->count("number");
- return $data;
- }
- /*获取用户商家信息*/
- public function getMer($uid)
- {
- $data = Db::name("user")->where(['uid' => $uid])->value("mer_id");
- return $data;
- }
- /*处理订单反养老金逻辑
- *$order_id 订单id
- *$commission 佣金
- * $pid 用户广告位id
- * $order_sn 订单号
- * $table 表名
- */
- public function successOrder($order_id, $commission, $pid, $order_sn, $type, $table)
- {
- try {
- $bill= Db::name("user_bill")->where("order_sn",$order_sn)->select();
- foreach ($bill as $v){
- if ($v["commission_type"]==5){
- Db::name("user")->where("uid",$v["uid"])->inc('annuity',$v["number"]) ->update();
- Db::name("user")->where("uid",$v["uid"])->inc('annuity_num', 1) ->update();
- }else{
- if($v['title']!='平台奖励'){
- Db::name("user")->where("uid",$v["uid"])->inc('brokerage_price', $v["number"]) ->update();
- }else{
- Db::name("user")->where("uid",$v["uid"])->inc('now_score', $v["number"]) ->update();
- }
- }
- $annuity_once = Db::name("user")->where("uid",$v['uid'])->value('annuity_once');
- if($annuity_once == 0){
- $spreadUid = Db::name('user') -> where('uid',$v['uid']) -> value('spread_uid');
- // Db::name('user')->where('uid',$spreadUid)->inc('score', systemConfig('ylj_first_score'))->update();
- // $ins_data['uid'] = $spreadUid;
- // $ins_data['reward_socre'] = systemConfig('ylj_first_score');
- // $ins_data['addtime'] = time();
- // $ins_data['status'] = 1;
- // $ins_data['mark'] = '好友首次获得已结算养老金奖励积分';
- // Db::name('user_sign_score')->insert($ins_data);
- $userRepository = app()->make(UserRepository::class);
- $userRepository -> sign_add($spreadUid,systemConfig('ylj_first_score'),1,'好友首次获得已结算养老金奖励积分','','','');
- Db::name("user")->where("uid",$v['uid'])->update(['annuity_once'=>1]);
- }
- }
- Db::name("user_bill")->where("order_sn",$order_sn)->update(["status"=>1]);
- $orderUpdate = ['bill_status' => 1];
- if ($type == 6) {//京东订单
- $orderUpdate['bill_create_time'] = time();
- } else {
- $orderUpdate['bill_create_time'] = date("Y-m-d H:i:s");
- }
- Db::name("$table")->where($table . "_id", $order_id)->update($orderUpdate);
- } catch (\Exception $e) {
- log::error($e->getFile().':'.$e->getLine().'【'.$e->getMessage().'】');
- throw new ValidateException($e->getMessage());
- }
- }
- public function invalidOrder($order_sn){
- return Db::name("user_bill")->where("order_sn",$order_sn)->update(["status"=>-1]);
- }
- /*处理订单预估反养老金逻辑
- *$order_id 订单id
- *$commission 佣金
- * $pid 用户广告位id
- * $order_sn 订单号
- * $table 表名
- */
- public function yuguOrder($order_id, $commission, $pid, $order_sn, $type, $table)
- {
- //配置信息
- // $config = $this->config();
- //用户pid信息
- // if ($type == 6) {//京东联盟改成京推推
- // $user['uid'] = intval($pid - pow(10, 5));
- // } else {
- // $user = $this->getDetail(['pid' => $pid, 'type' => $type]);
- // }
- //用户商家信息
- $user_mer = $this->getMer($pid);
- try {
- $money=$commission;
- //返佣比例
- $base_commission= floatval(systemConfig('extension_tao_rate'));
- //刷卡手续费
- $souxufees=0;
- $souxufee =floatval(systemConfig('yanglao'));
- if ($souxufee){
- $souxufees = bcmul($money, $souxufee * 0.01, 3);
- }
- //返佣总额 返利总额=(交易金额-手续费)*返利比例
- $moneys=bcmul($money-$souxufees,$base_commission/100,3);
- $extension_one=$moneys;
- $order=[
- "order_sn"=>$order_sn,
- "order_id"=>$order_id,
- "uid"=>$pid,
- "mer_id"=>$user_mer,
- "total_price"=>$commission,
- "extension_one"=>$extension_one,
- "type_shop"=>$type,
- "table"=>$table
- ];
- $StoreOrderRepository = app()->make(StoreOrderRepository::class);
- // $StoreOrderRepository->yugu_rebate($order);
- log::info("===待进入养老金22222222222");
- $StoreOrderRepository->yugu_rebate_gong_fu($order);
- // $money_hui = 0;
- // $money_user = 0;
- // $money_jishu = 0;
- // $money_mer = 0;
- // //给用户返
- // $huiTotal = $this->getTotalHui($user['uid']); //计算已经扣除的会费
- // if ($huiTotal < $config['yanglao_Meeting_total']) {
- // $money_hui = $commission * ($config['yanglaojin_admin'] / 100) * ($config['yanglao_Meeting'] / 100);//会费
- // //存储会费记录
- // if (number_format($money_hui, 2) >= 0.01) {
- // $this->admin_bill($user['uid'], $money_hui, '养老金扣除会费' . $config['yanglao_Meeting'] . '%', '第三方平台', $order_sn, '2');
- // }
- // $money_user = ($commission * $config['yanglaojin_admin']) / 100 - $money_hui;//养老金
- // } else {
- // $money_user = $commission * $config['yanglaojin_admin'] / 100;
- // }
- //// if (number_format($money_user, 2) >= 0.01) {
- //// $this->add_bill($order_id, $user['uid'], $money_user, $order_sn, $type, '购买商品获得养老金' . $config['yanglaojin_admin'] . '%', '第三方平台',$type,0);
- //// //修改用户养老金信息
- //// Db::name("user")->where("uid", $user['uid'])->inc('annuity', $money_user)->update();
- //// }
- // //给用户所属商家返
- // if ($user_mer) {
- // $money_jishu = $commission * $config['mer_rate'] / 100 * $config['promoter_rate_technology'] / 100;
- // $money_mer = $commission * $config['mer_rate'] / 100 - $money_jishu;
- // if (number_format($money_jishu, 2) >= 0.01) {
- // $this->admin_bill($user_mer, $money_jishu, '佣金扣除技术服务费' . $config['yanglao_Meeting'] . '%', '第三方平台', $order_sn, '4');
- // }
- // if (number_format($money_mer, 2) >= 0.01) {
- // $this->add_bill($order_id, $user_mer, $money_mer, $order_sn, $type, '用户购买商品获得佣金' . $config['mer_rate'] . '%', '第三方平台',$type,0);
- // //修改商户佣金
- // Db::name("user")->where("uid", $user_mer)->inc('brokerage_price', $money_mer)->update();
- // }
- // }
- // //所有金额都小于0.01 佣金金额全归平台所有
- // if (number_format($money_hui, 2) <= 0 && number_format($money_jishu, 2) <= 0 && number_format($money_user, 2) <= 0 && number_format($money_mer, 2) <= 0) {
- // $this->admin_bill($user['uid'], $commission, '分成后所有金额小于一分存于平台', '第三方平台,不参与用户分成', $order_sn, '5');
- // }
- //修改订单结算状态
- // $orderUpdate = ['bill_status' => 1];
- // if ($type == 6) {//京东订单
- // $orderUpdate['bill_create_time'] = time();
- // } else {
- // $orderUpdate['bill_create_time'] = date("Y-m-d H:i:s");
- // }
- // Db::name("$table")->where($table . "_id", $order_id)->update($orderUpdate);
- } catch (\Exception $e) {
- throw new ValidateException($e->getMessage());
- }
- }
- /**
- * 平台账单记录
- * `type` int(1) DEFAULT '0' COMMENT '类型 1刷卡手续费 2 会费',
- * `number` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '明细数字',
- * `title` varchar(64) NOT NULL COMMENT '账单标题',
- * `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0 = 待确定 1 = 有效 -1 = 无效',
- */
- public function admin_bill($uid, $number, $title, $mark, $order_sn, $type)
- {
- $number = round($number, 2);
- $data = [
- 'link_id' => $uid,
- "pm" => 1,
- "title" => $title,
- // "category"=>"now_money",
- "type" => $type,
- "number" => $number,
- // "balance"=>0,
- "mark" => $mark,
- "status" => 1,
- "order_sn" => $order_sn,
- ];
- Db::name("admin_bill")->insert($data);
- }
- /**
- * 账单记录
- * @param $order
- * @param $spread_uid
- * @param $commission
- * @param string $title
- * @param $mark
- * @throws \think\db\exception\DbException
- */
- public function add_bill($order_id, $uid, $commission, $order_sn, $type, $title = "养老金", $mark = '',$type_shop=0,$status=1)
- {
- $data = [
- 'link_id' => $order_id,
- "uid" => $uid,
- "title" => $title,
- "category" => "now_money",
- "type" => "commission",
- "number" => $commission,
- "balance" => 0,
- "mark" => $mark,
- "status" =>$status,
- // 'type' => $type,
- "commission_type" => 3,
- "order_sn" => $order_sn,
- "type_shop"=>$type_shop
- ];
- Db::name("user_bill")->insert($data);
- // Db::name("user")->where("uid",$spread_uid)->inc('brokerage_price', $commission) ->update();
- }
- /*淘宝物料分类*/
- public function getMaterial()
- {
- $data = Db::name("material")->where(['status' => 1])->select();
- return $data;
- }
- /*京东订单*/
- public function GetJdOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_jd");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })->when(isset($where['status']) && $where['status'] != '', function ($query) use ($where) {
- $query->where('status', $where['status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("shop_name|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('order_jd_id DESC')->select();
- $sql = $query->getLastSql();
- $userList = User::whereIn('uid', $list->column('uid'))->column('*', 'uid');
- $list->each(function ($value) use ($userList) {
- $info = $userList[$value['uid']] ?? [];
- if ($info) {
- $value['account'] = $info['account'];
- } else {
- $value['account'] = '匹配用户不存在';
- }
- return $value;
- });
- return compact('count', 'list', 'sql');
- }
- /*拼多多订单*/
- public function GetPddOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_pdd");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })->when(isset($where['pin_order_status']) && $where['pin_order_status'] != '', function ($query) use ($where) {
- $query->where('pin_order_status', $where['pin_order_status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("goods_name|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('create_time DESC')->select();
- $userList = User::whereIn('uid', $list->column('uid'))->column('*', 'uid');
- $list->each(function ($value) use ($userList) {
- $info = $userList[$value['uid']] ?? [];
- if ($info) {
- $value['account'] = $info['account'];
- } else {
- $value['account'] = '匹配用户不存在';
- }
- return $value;
- });
- return compact('count', 'list');
- }
- /*唯品会订单*/
- public function GetVipOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_vip");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })
- ->when(isset($where['settled']) && $where['settled'] != '', function ($query) use ($where) {
- $query->where('settled', $where['settled']);
- })->when(isset($where['order_status']) && $where['order_status'] != '', function ($query) use ($where) {
- $query->where('order_status', $where['order_status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("goods_name|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('order_vip_id DESC')->select()->each(function ($value) {
- $orderTime = $value['order_time'];
- // $value['order_time'] = date('Y-m-d H:i:s', $orderTime);
- //订单关联用户信息
- $value['account'] = User::where('uid', $value['uid'])->value('account', '匹配用户不存在');
- return $value;
- });
- return compact('count', 'list');
- }
- /*苏宁订单*/
- public function GetSuOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_su");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })->when(isset($where['status']) && $where['status'] != '', function ($query) use ($where) {
- $query->where('status', $where['status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("goods_name|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('create_time DESC')->select()->each(function ($value) {
- $orderTime = $value['order_time'];
- $value['order_time'] = date('Y-m-d H:i:s', $orderTime);
- $payTime = $value['pay_time'];
- $value['pay_time'] = date('Y-m-d H:i:s', $payTime);
- //订单关联用户信息
- $value['account'] = User::where('uid', $value['uid'])->value('account', '匹配用户不存在');
- return $value;
- });
- return compact('count', 'list');
- }
- /*淘宝订单*/
- public function GetTbOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_tb");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })->when(isset($where['tk_status']) && $where['tk_status'] != '', function ($query) use ($where) {
- $query->where('tk_status', $where['tk_status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("item_title|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('create_time DESC')->select()->each(function ($value) {
- $orderTime = $value['create_time'];
- // $value['create_time'] = date('Y-m-d H:i:s', $orderTime);
- //淘客订单状态
- $tkStatus = $value['tk_status'];
- $tkStatusName = TbOrderModel::$statusName[$tkStatus] ?? '未知状态';
- $value['status_name'] = $tkStatusName;
- //订单关联用户信息
- $value['account'] = User::where('uid', $value['uid'])->value('account', '匹配用户不存在');
- return $value;
- });
- return compact('count', 'list');
- }
- /*话费订单*/
- public function GetHfOrder($where = [], $page = 1, $limit = 10)
- {
- $query = Db::name("order_huafei");
- $query = $query->when(isset($where['date']) && $where['date'] != '', function ($query) use ($where) {
- getModelTime($query, $where['date']);
- })->when(isset($where['status']) && $where['status'] != '', function ($query) use ($where) {
- $query->where('status', $where['status']);
- })->when(isset($where['order_sn']) && $where['order_sn'] != '', function ($query) use ($where) {
- $query->where('order_sn', $where['order_sn']);
- })->when($where['bill_status'] != '', function ($query) use ($where) {
- $query->where('bill_status', $where['bill_status']);
- })->when(isset($where['keywords']) && $where['keywords'] != '', function ($query) use ($where) {
- $query->whereLike("mobile|uid", "%" . $where['keywords'] . "%");
- });
- $count = $query->count();
- $list = $query->page($page, $limit)->order('create_time DESC')->select()->each(function ($value) {
- $value['create_time'] = date('Y-m-d H:i:s', $value['create_time']);
- //淘客订单状态
- // $tkStatus = $value['status'];
- // $tkStatusName = TbOrderModel::$statusName[$tkStatus] ?? '未知状态';
- // $value['status_name'] = $tkStatusName;
- //订单关联用户信息
- $value['account'] = User::where('uid', $value['uid'])->value('account', '匹配用户不存在');
- return $value;
- });
- return compact('count', 'list');
- }
- /*详情*/
- public function GetThirdDetail($id, $table)
- {
- $data = Db::name("order_" . $table)->where(['order_' . $table . '_id' => $id])->find();
- //养老金修改
- $commission = $data['commission'];
- $yanglao = 0;
- if ($commission) {
- $yanglao = app()->make(ProductRepository::class)->yanglaojin(0, $commission);
- }
- $data['yanglao'] = $yanglao;
- switch ($table) {
- case 'jd':
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- case 'vip':
- $orderTime = $data['order_time'];
- $data['order_time'] = date('Y-m-d H:i:s', $orderTime);
- $updateTime = $data['last_update_time'];
- $data['last_update_time'] = date('Y-m-d H:i:s', $updateTime);
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- case 'pdd':
- $payTime = $data['pay_time'];
- $data['pay_time'] = $payTime ? date('Y-m-d H:i:s', $payTime) : '';
- $groupTime = $data['group_time'];
- $data['group_time'] = $groupTime ? date('Y-m-d H:i:s', $groupTime) : '';
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- case 'su':
- $payTime = $data['pay_time'];
- $data['pay_time'] = $payTime ? date('Y-m-d H:i:s', $payTime) : '';
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- case 'tb':
- $createTime = $data['create_time'];
- $data['create_time'] = $createTime ? $createTime : '';
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- case 'huafei':
- $createTime = $data['create_time'];
- $data['create_time'] = $createTime ? $createTime : '';
- $billEndTime = $data['bill_end_time'];
- $data['bill_end_time'] = $billEndTime ? date('Y-m-d H:i:s', $billEndTime) : '';
- break;
- }
- return $data;
- }
- /*pdd满足分佣的订单*/
- public function pddOrder()
- {
- $query = Db::name("order_pdd");
- $data = $query->where(['pin_order_status' => 5, 'bill_status' => 0])
- ->whereTime("bill_end_time", '<=', time())
- ->order('create_time DESC')
- ->select()->toArray();
- return $data;
- }
- /*京东满足分佣的订单*/
- public function JdOrder()
- {
- $query = Db::name("order_jd");
- $data = $query->where(['status' => 17, 'bill_status' => 0])
- ->whereTime("bill_end_time", '<=', time())
- ->order('order_jd_id DESC')
- ->select()->toArray();
- return $data;
- }
- /*抖音满足分佣的订单*/
- public function dyOrder()
- {
- $query = Db::name("order_dy");
- $data = $query->where(['flow_point' => 'SETTLE', 'bill_status' => 0])
- ->whereTime("bill_end_time", '<=', time())
- ->order('order_dy_id DESC')
- ->select()->toArray();
- return $data;
- }
- /*苏宁满足分佣的订单*/
- public function SuOrder()
- {
- $query = Db::name("order_su");
- $data = $query->where(['status' => '已结算', 'bill_status' => 0])
- ->whereTime("bill_end_time", '<=', time())
- ->order('create_time DESC')
- ->select()->toArray();
- return $data;
- }
- /**
- * 修改积分,养老金,贡献值记录状态
- */
- public static function updateJilu($user_id,$order_sn,$type_shop){
- // if (empty($user_id)) {
- // Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, $order_sn, 修改积分,养老金,贡献值记录, 不存在用户ID"]);
- // return false;
- // }
- log::info("订单修改开始");
- // 更新养老金
- Db::name("user_bill")->where("type_shop", $type_shop)->where("order_sn", $order_sn)->update(['status'=>-1]);
- //更新积分
- Db::name("user_sign_score")->where("order_type", $type_shop)->where("order_id", $order_sn)->update(['status'=>0]);
- //更新贡献值
- Db::name("user_sign_gongxian")->where("order_type", $type_shop)->where("order_id", $order_sn)->update(['status'=>0]);
- //更新红包
- Db::name("user_sign_hongbao")->where("order_type", $type_shop)->where("order_id", $order_sn)->update(['status'=>0]);
- log::info("订单 {$order_sn} 用户id ={$user_id} 三方来源={$type_shop} 积分,贡献值,养老金,红包更新更新");
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, $order_sn, 修改积分,养老金,贡献值,红包记录, 更新成功!!!"]);
- }
- /**
- * 添加预估积分记录
- */
- //预估养老金
- public static function yuguJifen($price,$user_id,$order_sn,$type_shop)
- {
- if (empty($user_id)) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, $order_sn, 赠送积分, 不存在用户ID"]);
- return false;
- }
- //查询用户是否已经存在该订单
- $user_sign_score_list = Db::name('user_sign_score')
- ->where('uid', $user_id)
- ->where('order_type', $type_shop)
- ->where('order_id', $order_sn)
- ->find();
- if (!empty($user_sign_score_list)) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, $order_sn, 赠送积分, 订单已存在积分发放记录"]);
- return false;
- }
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, $order_sn, 赠送积分, $price"]);
- try {
- //更新用户积分
- $user = Db::name('user')->where('uid', $user_id)->find();
- $systemvalueObj= $goods_obj = Db::name('system_config_value')
- -> where('config_key','sanfangfenpei')->find();;
- $sanfangfenpei=json_decode($systemvalueObj['value'],true);
- $inc_score = round($price*$sanfangfenpei['pv'],2);//pv=佣金的50%=积分=贡献值
- // log::info("===========dddddddddddddddddddd");
- //每个表的统计值
- $jfzongwei=Db::name('user_sign_score')->where('status', -1)->where('uid', $user_id)->sum('reward_socre');
- $gxzongwei=Db::name('user_sign_gongxian')->where('status', -1)->where('uid', $user_id)->sum('number');
- // type_shop 1 拼多多 ,5淘宝
- // log::info("==========={$jfzongwei}");
- $make="";
- if($type_shop==1){
- $make="拼多多";
- }else if($type_shop==5){
- $make="淘宝";
- }else if($type_shop==6){
- $make="京东";
- }else if($type_shop==3){
- $make="苏宁";
- }else if($type_shop==2){
- $make="唯品会";
- }else if($type_shop==9){
- $make="话费";
- }
- $user_score = $user['score'];
- $surplus=$user_score + $inc_score+$jfzongwei;
- $surplusgongxian=$user['contribute'] + $gxzongwei;
- $data = [
- "uid" => $user_id,
- "reward_socre" => $inc_score,
- "addtime" => time(),
- "status" => -1,
- "order_type" => $type_shop,
- "order_id" => $order_sn,
- "mark" => "购买{$make}商品赠送积分",
- "surplus" => $surplus,
- "pm" => 1,
- "source_type" => 3
- ];
- log::info("{$make}==准备开始添加积分,贡献");
- Db::name("user_sign_score")->insert($data);//添加积分记录
- log::info("准备开始添加积分");
- // $ins_data['uid'] = $user_id;
- // $ins_data['reward_socre'] = $inc_score;
- // $ins_data['addtime'] = time();
- // $ins_data['status'] = -1;
- // $ins_data['order_type'] = $type_shop;
- // $ins_data['order_id'] = $order_sn;
- // $ins_data['mark'] = "购买三方商品赠送积分";
- // $ins_data['desc'] = '';
- // $ins_data['surplus'] = $user_score + $inc_score;
- // $ins_data['type'] = 1;
- // $ins_data['pm'] = 1;
- // $ins_data['source_type'] =3;
- //赠送贡献值
- $gongxian_data = [
- "uid" =>$user_id,
- "number" => $inc_score,
- "addtime" =>time(),
- "status" =>-1,
- "order_type" =>$type_shop,
- "order_id" =>$order_sn,
- "mark" =>"购买{$make}商品赠送贡献值",
- "desc" =>'',
- "surplus" =>$surplusgongxian+$gxzongwei,
- "type" =>1
- ];
- // $gongxian_data['uid'] = $user_id;
- // $gongxian_data['number'] = $inc_score;
- // $gongxian_data['addtime'] = time();
- // $gongxian_data['status'] = -1;
- // $gongxian_data['order_type'] = $type_shop;
- // $gongxian_data['order_id'] = $order_sn;
- // $gongxian_data['mark'] = "购买三方商品赠送贡献值";
- // $gongxian_data['desc'] = '';
- // $gongxian_data['surplus'] = $user_score + $inc_score;
- // $gongxian_data['type'] = 1;
- // $gongxian_data['pm'] = 1;
- // $gongxian_data['source_type'] =3;
- Db::name("user_sign_gongxian")->insert($gongxian_data);//添加贡献记录
- log::info("===添加完积分和贡献值");
- //判断是否是老用户 is_old=1是1.0的用户,1.0的用户要总pv*45%的红包
- if($user["is_old"]==1){
- //添加红包
- $hongbao=round($inc_score*0.45,2);
- $hongbao_data = [
- "uid" =>$user_id,
- "number" => $hongbao,
- "addtime" =>time(),
- "status" =>-1,
- "order_type" =>$type_shop,
- "order_id" =>$order_sn,
- "mark" =>"购买{$make}商品赠送红包",
- "desc" =>'',
- "surplus" =>$hongbao,
- "type" =>1
- ];
- Db::name("user_sign_hongbao")->insert($hongbao_data);//添加贡献记录
- log::info("===添加完红包奖励");
- }
- // 添加推荐奖励
- $zijiUser=Db::name("user")->where('uid',$user_id)->find();
- $sprerdUser= Db::name("user")->where('uid',$zijiUser['spread_uid'])->find();
- //不为空的时候进行添加推荐奖励
- if($sprerdUser){
- //奖励推广佣金
- $yongjinbili=0;
- //普通用户
- if($sprerdUser["user_group"]==1){
- $yongjinbili=5;
- }
- //业务员
- if($sprerdUser["user_group"]==2){
- $yongjinbili=7;
- }
- //业务经理
- if($sprerdUser["user_group"]==3){
- $yongjinbili=9;
- }
- //初级合伙人
- if($sprerdUser["user_group"]==4){
- $yongjinbili=11;
- }
- //中级合伙人
- if($sprerdUser["user_group"]==5){
- $yongjinbili=13;
- }
- //高级合伙人
- if($sprerdUser["user_group"]==6){
- $yongjinbili=15;
- }
- //懂事
- if($sprerdUser["user_group"]==7){
- $yongjinbili=17;
- }
- $tuiguanyongjin=round($yongjinbili*$inc_score/100,2);//按照身份获得佣金
- //添加推广积分
- $tuijifendata = [
- "uid" => $sprerdUser['uid'],
- "reward_socre" => $tuiguanyongjin,
- "addtime" => time(),
- "status" => -1,
- "order_type" => $type_shop,
- "order_id" => $order_sn,
- "mark" => "推广消费从{$make}购买商品赠送积分",
- "surplus" => $surplus,
- "pm" => 1,
- "source_type" => 4
- ];
- log::info("{$make}==准备开始添加推广积分,贡献");
- Db::name("user_sign_score")->insert($tuijifendata);//添加积分记录
- //添加推荐献值
- $tuigangongxian_data = [
- "uid" =>$sprerdUser['uid'],
- "number" => $tuiguanyongjin,
- "addtime" =>time(),
- "status" =>-1,
- "order_type" =>$type_shop,
- "order_id" =>$order_sn,
- "mark" =>"推广消费从{$make}购商品赠送贡献值",
- "desc" =>'',
- "surplus" =>$surplusgongxian+$gxzongwei,
- "type" =>1
- ];
- Db::name("user_sign_gongxian")->insert($tuigangongxian_data);//添加贡献记录
- log::info("===添加完积分和贡献值");
- }
- //
- // Db::name('user')->where('uid', $user_id)->inc('score', $inc_score)->update();
- // Db::name('user')->where('uid', $user_id)->inc('contribute', $inc_score)->update();
- // $now_score= Db::name('user')->where('uid',$user_id)->value('now_score_estimate');
- // $now_score_no= Db::name('user')->where('uid',$user_id)->value('now_score');
- // Db::name('user')->where('uid',$user_id)->update(['now_score_estimate'=>$now_score+$price]);
- // $insertDta=[
- // 'user_id'=>$user_id,
- // 'before_price'=>$now_score,//变化前的积分
- // 'price'=>$price,//此次变化的积分
- // 'after_price'=>$now_score+$price,//变化后的积分
- // 'type'=>$type,// 类型 1自营订单 2 第三方订单 3 签到积分 6 其它渠道的积分
- // 'third_type'=>$third_type,//第三方的类型 1 淘宝 2 京东 3 唯品会 4 拼多多 5 苏宁易购
- // 'other'=>$order_sn,//商城订单 记录订单号 签到记录日期 其它渠道记录获取方式
- // 'ctime'=>time(),//创建时间
- // 'thaw_time'=>$bill_end_time,//结算的时间
- // ];
- // $billData=[
- // 'uid'=>$user_id,
- // 'link_id'=>1,
- // 'pm'=>1,
- // 'title'=>'平台奖励',
- // 'category'=>'now_money',
- // 'type'=>'integral',
- // 'number'=>$price,
- // 'balance'=>$now_score_no,
- // 'mark'=>'购买商品获得积分 比例 1:1',
- // 'create_time'=>date("Y-m-d H:i:s",time()),
- // 'status'=>0,
- // 'order_sn'=>$order_sn,
- // 'type_shop'=>$type_shop,
- // 'commission_type'=>8,
- // 'order_type'=>2
- // ];
- // Db::name('integral_log')->insert($insertDta);
- // Db::name('user_bill')->insert($billData);
- } catch (Exception $e) {
- return app("json")->fail($e->getMessage());
- }
- }
- public static function yuguZhitui($commission, $user_id, $type_shop, $order_sn, $order_id)
- {
- //查询直推人身份
- $user_info = Db::name('user')->where('uid', $user_id)->find();
- if (empty($user_info)) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, 三方订单直推奖, 用户信息不存在"]);
- return false;
- }
- $spread_uid = $user_info['spread_uid'];
- $spread_info = Db::name('user')->where('uid', $spread_uid)->find();
- if (empty($user_info)) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, 三方订单直推奖, 不存在推荐人"]);
- return false;
- }
- $user_bill = Db::name('user_bill')->where('uid', $spread_uid)->where('order_sn', $order_sn)->where('type_shop', $type_shop)->find();
- if (!empty($user_bill)) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, 订单已分润"]);
- return false;
- }
- $base_commission = 0;
- if ($spread_info['user_group'] == 2) {
- $base_commission = 20;
- }
- if ($spread_info['user_group'] >= 3) {
- $base_commission = 30;
- }
- if ($base_commission == 0) {
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_sn, 三方订单直推奖, 收益比例不能为0"]);
- return false;
- }
- $souxufees=0;
- $souxufee =floatval(systemConfig('yanglao'));
- if ($souxufee){
- $souxufees = bcmul($commission, $souxufee * 0.01, 3);
- }
- $zhitui_money = bcmul($commission-$souxufees,$base_commission/100,3);
- if (empty($user_id)) {
- return false;
- }
- Db::name('log')->insert(['data' => "type_shop:{$type_shop}, $order_id, 三方订单直推奖, 收益:{$commission},手续费:{$souxufees},分润比例:{$base_commission},最终收益:{$zhitui_money}"]);
- $StoreOrderRepository = app()->make(StoreOrderRepository::class);
- $mark = $user_info['nickname'] . '购买商品';
- $title = "直推奖".date('m.d');
- $commission_type = 3;
- $StoreOrderRepository->add_bill_gongfu($title, $zhitui_money, $spread_uid, $mark, $commission_type, $order_sn, $order_id, 0, 0, 0, $type_shop);
- }
- }
|