| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052 |
- <?php
- /**
- * @package merchant
- *
- * @author xaboy
- * @day 2020-04-16
- *
- *
- */
- namespace app\common\repositories\merchant;
- use app\common\dao\system\merchant\MerchantDao;
- use app\common\repositories\BaseRepository;
- use app\common\repositories\user\UserRepository;
- use think\exception\ValidateException;
- use think\facade\Db;
- use think\facade\Log;
- /**
- * Class MerchantRepository
- * @package app\common\repositories\system\merchant
- * @mixin MerchantDao
- * @author xaboy
- * @day 2020-04-16
- */
- class MerchantRepository extends BaseRepository
- {
- /**
- * MerchantRepository constructor.
- * @param MerchantDao $dao
- */
- public function __construct(MerchantDao $dao)
- {
- $this->dao = $dao;
- }
- //商户统计
- public function report_form($uid,$merId,$day){
- $payPrice = getModelTime(Db::name("store_order")->where('paid', 1)->where("status","<>",-1)->when($merId, function ($query, $merId) {
- $query->where('mer_id', $merId);
- }), $day, 'pay_time')->sum('mer_money');
- if($payPrice <= 0){
- //支付金额 //也就是应到金额 //也可以是已到金额
- $payPrice=getModelTime(Db::name("store_order")->where('paid', 1)->where("status","<>",-1)->when($merId, function ($query, $merId) {
- $query->where('mer_id', $merId);
- }), $day, 'pay_time')->sum('pay_price');
- $extension_one=getModelTime(Db::name("store_order")->where('paid', 1)->where("status","<>",-1)->when($merId, function ($query, $merId) {
- $query->where('mer_id', $merId);
- }), $day, 'pay_time')->sum('extension_one');
- $payPrice = $payPrice - $extension_one;
- }
- if ($day=="today"){
- $day_where=[
- date("Y-m-d")." 0:0:0",
- date("Y-m-d")." 23:59:59"
- ];
- }elseif ($day=="yesterday"){
- $day_where=[
- date("Y-m-d",strtotime("-1 day"))." 0:0:0",
- date("Y-m-d",strtotime("-1 day"))." 23:59:59"
- ];
- }else{
- $day_where=[
- $day." 0:0:0",
- $day." 23:59:59"
- ];
- }
- //锁定会员
- $userlist=Db::name("store_order")
- ->alias("so")
- ->join("user u","u.uid=so.uid")
- ->where(['paid'=>1,"so.mer_id"=>$merId])
- ->where("so.create_time","between time",$day_where)
- ->group("so.uid")
- ->field("u.mer_id,u.uid")
- ->select();
- $lockUserNo=0;
- $lockUser=Db::name("user")
- ->where(["mer_id"=>$merId])
- ->whereTime('locktime','between',$day_where)
- ->count();
- $lockunion_users=Db::name("union_users")
- ->where(["lock_mer_id"=>$merId])
- ->whereTime('lock_time','between',$day_where)
- ->count();
- $lockUser=$lockUser+$lockunion_users;
- $payYang=Db::name("user_bill")
- ->where(["commission_type"=>3,"uid"=>$uid])
- ->where('create_time','between time',$day_where)
- ->sum("number");
- //会员数
- $userCount=$lockUser+$lockUserNo;
- //储蓄金额
- $chuxu=0;
- //储蓄人数
- $chuxuren=0;
- //锁定会员返利
- $lockUserfan=Db::name("user_bill")->where("uid",$uid) ->where("create_time","between time",$day_where)->sum("number");
- //跨店收入
- $kuadian=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>7]) ->where("create_time","between time",$day_where)->sum("number");
- //推荐人
- $recommender=Db::name("merchant")->where("mer_id",$merId) ->where("create_time","between time",$day_where)->value("recommender");
- $jiangli=Db::name("user_bill")
- ->alias("ub")
- ->join("store_order so","so.order_sn=ub.order_sn")
- ->where(["so.uid"=>$recommender,"commission_type"=>3,"so.mer_id"=>$merId])
- ->where("so.create_time","between time",$day_where)
- ->count();
- //商家线下充值获得金额
- $offlineRecharge1 = Db::name('order_merchant')
- ->where("mer_id", $merId)
- ->where('status', 1)
- ->where("create_time","between time",$day_where)
- ->sum('money');
- $offlineRecharge2 = Db::name('order_merchant')
- ->where("mer_id", $merId)
- ->where('status', 1)
- ->where("create_time","between time",$day_where)
- ->sum('available');
- $souxufee = Db::name('order_merchant')
- ->where("mer_id", $merId)
- ->where('status', 1)
- ->where("create_time","between time",$day_where)
- ->sum('swipe_fee');
- //sat刷卡手续费比例
- // $souxufee = systemConfig('yanglao');
- // $offlineRecharge = bcmul($offlineRecharge1, (100 - $souxufee) * 0.01, 2);
- // $offlineRecharge = bcsub($offlineRecharge, $offlineRecharge2, 2);
- $offlineRecharge=bcsub($offlineRecharge1,bcadd($offlineRecharge2,$souxufee,2),2);
- //消费分
- $startTime = strtotime('today');
- $endTime = strtotime('tomorrow -1second');
- $score = Db::name('merchant_consumption_score_log')
- -> where('mer_id',$merId)
- ->where('status','<>',2)
- ->where("add_time >= '$startTime' and add_time <= '$endTime'")
- -> sum('consumption_score');
- return ["score"=>$score,"payPrice"=>$payPrice,"realtoPrice"=>$kuadian,"lockUser"=>$lockUser,"lockUserNo"=>$lockUserNo,"payYang"=>$payYang,"userCount"=>$userCount,"chuxu"=>$chuxu,"chuxuren"=>$chuxuren,"lockUserfan"=>$lockUserfan,"jiangli"=>$jiangli,"xiaofei"=>0,"offlineRecharge"=>$offlineRecharge];
- }
- //商户
- public function index($uid,$where)
- {
- if ($where["mer_id"]){
- // $where["branch"]=1;
- }else{
- $where=[];
- $where["branch"]=0;
- $where["uid"]=$uid;
- }
- $mer=Db::name("merchant")
- ->alias("m")
- ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
- ->where($where)
- ->field("mer_id,mer_name,mer_avatar,m.create_time,mc.category_name,mer_phone,consumption_score")->find();
- if ($mer){
- $mer["paycode"]="";
- $base_commission=Db::name("system_config_value")
- ->where(["mer_id"=>$mer["mer_id"],"config_key"=>"base_commission"])
- ->value("value");
- $mer["base_commission"]=floatval($base_commission)?$base_commission:0;
- $yx = Db::name("merchant_yx")
- ->where(["mer_id"=>$mer["mer_id"],"status"=>1])
- ->value("sn");
- $mer["yx_sn"] = $yx;
- return $mer;
- }else{
- // return $uid;
- $mer_id=Db::name("store_staff")->where("uid",$uid)->value("mer_id");
- $where=["mer_id"=>$mer_id];
- $mer=Db::name("merchant")
- ->alias("m")
- ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
- ->where($where)
- ->field("mer_id,mer_name,mer_avatar,m.create_time,mc.category_name,mer_phone")->find();
- $mer["paycode"]="";
- $base_commission=Db::name("system_config_value")
- ->where(["mer_id"=>$mer["mer_id"],"config_key"=>"base_commission"])
- ->value("value");
- $mer["base_commission"]=floatval($base_commission)?$base_commission:0;
- $yx = Db::name("merchant_yx")
- ->where(["mer_id"=>$mer["mer_id"],"status"=>1])
- ->value("sn");
- $mer["yx_sn"] = $yx;
- return $mer;
- }
- }
- public function set_rebate($uid,$data){
- $where=[];
- $where["mer_id"]=$data["mer_id"];
- $where["config_key"]="base_commission";
- $merbili=Db::name("system_config_value")
- ->where($where)->count();
- $base_commission = systemConfig('extension_one_rate');
- $consumption_score = Db::name('merchant') -> where('uid',$uid) -> where('mer_id',$data['mer_id']) -> field('consumption_score') -> find();
- if($consumption_score['consumption_score'] == 1){
- $base_commission = $base_commission > 2 ? $base_commission : 2;
- }
- if($base_commission>0&&$base_commission>$data["value"]){
- return ["code"=>0,"msg"=>"设置比例不可低于".$base_commission."%"];
- }
- if ($merbili){
- $mer=Db::name("system_config_value")
- ->where($where)
- ->update(
- [
- "value"=>$data["value"]
- ]
- );
- }else{
- $mer=Db::name("system_config_value")
- ->insert(
- [
- "config_key"=>"base_commission",
- "mer_id"=>$data["mer_id"],
- "value"=>$data["value"]
- ]
- );
- }
- if ($mer){
- // return $mer;
- return ["code"=>1,"msg"=>"设置成功"];
- }else{
- // return [];
- return ["code"=>0,"msg"=>"设置失败"];
- }
- }
- public function newest_data($uid,$data){
- $where=[];
- $where["so.mer_id"]=$data["mer_id"];
- $where["paid"]=1;
- $page=empty($data["page"])?1:$data["page"];
- $limit=empty($data["limit"])?10:$data["limit"];
- $list=Db::name("store_order")
- ->alias("so")
- ->where($where)
- ->join("user u","u.uid=so.uid")
- // ->group("so.uid")
- ->field("so.pay_price as ying_price,so.total_price as xf_price,u.uid,u.nickname,u.avatar,u.mer_id")
- ->page($page,$limit)
- ->select()->toArray();
- // $count=Db::name("store_order")
- // ->alias("so")
- // ->where($where)
- // ->join("user u","u.uid=so.uid")
- // ->group("so.uid")
- // ->count();
- $list2=Db::name("order_merchant")
- ->alias("so")
- ->where($where)
- ->where(["paid"=>1])
- ->field("so.money as ying_price,so.money as xf_price,uid,nickname,avatar,mer_id,pay_user_id")
- ->page($page,1000)
- ->order("id desc")
- ->select()->toArray();
- // $users=[];
- foreach ($list2 as $k=>&$v){
- if ($v["uid"]==0){
- $v["uid"]=$v["pay_user_id"];
- }
- $mer_id=Db::name("user")->where(["mer_id"=>$v["mer_id"],"uid"=>$v["uid"]])->count();
- $mer_id2=Db::name("union_users")->where(["lock_mer_id"=>$v["mer_id"],"unionid"=>$v["uid"]])->count();
- if(!$mer_id&&!$mer_id2){
- $v["mer_id"]=0;
- }
- unset($list2[$k]["pay_user_id"]);
- }
- // if ($users){
- // $users=implode(",",$users);
- // $union_users=Db::name("union_users")->field("lock_time,uid,nickname,avatar,lock_mer_id as mer_id,balance as xf_price")->where(["lock_mer_id"=>$data["mer_id"],"uid"=>["not in",$users]])->select()->toArray();
- // }else{
- // $union_users=Db::name("union_users")->field("lock_time,uid,nickname,avatar,lock_mer_id as mer_id,balance as xf_price")->where(["lock_mer_id"=>$data["mer_id"]])->select()->toArray();
- // }
- // $newstafflsit=array_merge($union_users,$stafflsit);
- // foreach ($union_users as &$v){
- // $v["ying_price"]=$v["xf_price"];
- //// $user_certification=Db::name("mer_id")->where(["uid"=>$v["uid"],"status"=>1])->count();
- //// $v["mer_id"] =$user_certification;
- // }
- $list=array_merge($list2,$list);
- // $list=array_merge($list,$union_users);
- if ($list){
- return ["list"=>$list,"count"=>count($list)];
- }else{
- return [];
- }
- }
- public function branch_list($uid,$data){
- $where=[];
- // $where["uid"]=$uid;
- $where["branch"]=$data["mer_id"];
- $list=Db::name("merchant")
- ->where($where)
- ->field("mer_id,mer_name,mer_avatar,create_time")
- ->select();
- if ($list){
- return $list;
- }else{
- return [];
- }
- }
- public function recharge_list($uid,$data){
- $where=[];
- $where["mer_id"]=$data["mer_id"];
- $list=Db::name("recharge")
- ->where($where)
- ->select()->toArray();
- foreach ($list as &$v){
- $v["statime"]=date("Y-m-d",$v["statime"]);
- $v["endtime"]=date("Y-m-d",$v["endtime"]);
- }
- if ($list){
- return $list;
- }else{
- return [];
- }
- }
- public function add_recharge($uid,$data){
- $where=[];
- $where["mer_id"]=$data["mer_id"];
- if (!empty($data["statime"])){
- $data["statime"]=strtotime($data["statime"]);
- }
- if (!empty($data["endtime"])){
- $data["endtime"]=strtotime($data["endtime"]);
- }
- if ($data["id"]){
- $res=Db::name("recharge")->where("id",$data["id"])->update($data);
- }else{
- $res=Db::name("recharge")->insert($data);
- }
- if ($res){
- return $res;
- }else{
- return [];
- }
- }
- public function get_recharge_on($uid,$data){
- $res=Db::name("recharge")->where($data)->find();
- if ($res){
- return $res;
- }else{
- return [];
- }
- }
- public function del_recharge($uid,$data){
- $one=Db::name("recharge")->where("id","in",$data['id'])->find();
- if ($one){
- $res=Db::name("recharge")->where("id","in",$data['id'])->delete();
- }else{
- $res='';
- }
- if ($res){
- return $res;
- }else{
- return [];
- }
- }
- public function add_staff($uid,$data){
- $user= Db::name("user")->where("account",$data["phone"])->find();
- if ($user){
- $isMerchant = Db::name("merchant") -> where(['uid'=>$user['uid']]) -> find();
- if($isMerchant){
- throw new ValidateException('此账户是商户,无法添加为员工');
- }
- $staff= Db::name("store_staff")->where("uid",$user["uid"])->find();
- if ($staff){
- return [];
- }
- $data["uid"]=$user["uid"];
- }else{
- $repository = app()->make(\app\common\repositories\user\UserRepository::class);
- $user = $repository->registr($data['phone'], $data['password'],'APP',"");
- $data["uid"]=$user["uid"];
- }
- if (!empty($data["password"])){
- unset($data["password"]);
- }
- $res=Db::name("store_staff")->insert($data);
- return $res;
- }
- public function staff_list($uid,$data){
- $where["sos.mer_id"]=$data["mer_id"];
- $where["sos.status"]=1;
- $page = empty($data["page"])?1:$data["page"];
- $limit= empty( $data["limit"])?10:$data["limit"];
- $stafflsit= Db::name("store_staff")
- ->alias("sos")
- ->join("store_branch sob","sob.id=sos.department")
- ->join("user u","u.uid=sos.uid")
- ->where($where)
- ->page($page,$limit)
- ->field("sos.*,sob.branch,u.avatar")
- ->select()->toArray();
- $count= Db::name("store_staff")
- ->alias("sos")
- ->join("store_branch sob","sob.id=sos.department")
- ->where($where)
- ->count();
- foreach ($stafflsit as &$v){
- $v["pwd"]="******";
- }
- if ($stafflsit){
- return ["list"=>$stafflsit,"count"=>$count];
- }else{
- return [];
- }
- }
- public function get_staff_one($uid,$data){
- $staff= Db::name("store_staff")
- ->where(["id"=>$data["id"]])
- ->find();
- return $staff;
- }
- public function edit_staff($uid,$data){
- $staff= Db::name("store_staff")
- ->where("id",$data["id"])
- ->update(
- $data
- );
- return $staff;
- }
- public function del_staff($uid,$data){
- if ($data["id"]){
- $staff= Db::name("store_staff")
- ->where("id","in",$data["id"])
- ->delete();
- }else{
- $staff=[];
- }
- return $staff;
- }
- public function mer_user($uid,$data){
- // $where["paid"]=1;
- $where[]=["u.mer_id","=",$data["mer_id"]];
- // $where["u.mer_id"]=["in","0,".$data["mer_id"]];
- if ($data["search"]){
- // $where["u.nickname"] =["like","%".$data["search"]."%"];
- $where[] =["u.nickname","like","%".$data["search"]."%"];
- }
- $page = empty($data["page"])?1:$data["page"];
- $limit= empty( $data["limit"])?10:$data["limit"];
- $stafflsit= Db::name("user")
- ->alias("u")
- ->where($where)
- // ->join("store_order so","so.uid=u.uid")
- // ->page($page,$limit)
- // sum(so.pay_price) as ying_price,sum(so.total_price) as xf_price
- ->field("u.uid,u.nickname,u.avatar,u.mer_id")
- ->select()->toArray();
- $count= Db::name("user")
- ->alias("u")
- // ->join("store_order so","so.uid=u.uid")
- ->where($where)
- ->count();
- foreach ($stafflsit as &$v){
- if($v["uid"]){
- $xf_price=Db::name("order_merchant")->where(["paid"=>1,"uid"=>$v["uid"]])->sum("money");
- $xf_price2=Db::name("store_order")->where(["paid"=>1,"uid"=>$v["uid"]])->sum("total_price");
- $v["xf_price"]=$xf_price+$xf_price2;
- }
- }
- $wheres=[];
- if ($data["search"]){
- $wheres[] =["nickname","like","%".$data["search"]."%"];
- }
- $union_users=Db::name("union_users")->where($wheres)->field("uid,nickname,avatar,unionid,lock_mer_id as mer_id,balance as xf_price")->where(["lock_mer_id"=>$data["mer_id"],"uid"=>0])->select()->toArray();
- foreach ($union_users as &$v){
- $v["uid"]=$v["unionid"];
- $v["xf_price"]=Db::name("order_merchant")->where(["paid"=>1,"pay_user_id"=>$v["unionid"]])->sum("money");
- }
- $newstafflsit=array_merge($union_users,$stafflsit);
- if ($newstafflsit){
- return ["list"=>$newstafflsit,"count"=>count($newstafflsit)];
- }else{
- return [];
- }
- }
- public function mer_user_info($uid,$data){
- $userinfo=Db::name("user")->where("uid",$data["uid"]) ->field("uid,nickname,avatar,create_time,mer_id")->find();
- $list=Db::name("user_recharge")->where(["mer_id"=>$data["mer_id"],"uid"=>$data["uid"],"paid"=>1])->select()->toArray();
- $chonglist=[];
- foreach ($list as $v){
- $chonglist[]= [
- "title"=>"充值",
- "refund_price"=>$v["refund_price"],
- "price"=>$v["price"]+$v["give_price"],
- "create_time"=>$v["create_time"]
- ];
- }
- if(!$userinfo){
- $userinfo=Db::name("union_users")->where("unionid",$data["uid"]) ->field("unionid as uid,nickname,avatar,create_time,lock_mer_id as mer_id")->find();
- $lists=Db::name("order_merchant")->where(["pay_user_id"=>$data["uid"],"paid"=>1])->select()->toArray();
- // $chonglist=[];
- foreach ($lists as $vs){
- $chonglist[]= [
- "title"=>"充值",
- "refund_price"=>$vs["money"],
- "price"=>$vs["money"]+$vs["give_money"],
- "create_time"=>$vs["create_time"]
- ];
- }
- }else{
- $lists=Db::name("order_merchant")->where(["uid"=>$data["uid"],"paid"=>1])->select()->toArray();
- // $chonglist=[];
- foreach ($lists as $vs){
- $chonglist[]= [
- "title"=>"充值",
- "refund_price"=>$vs["money"],
- "price"=>$vs["money"]+$vs["give_money"],
- "create_time"=>$vs["create_time"]
- ];
- }
- }
- return ["user_info"=>$userinfo,"consumption"=>$chonglist];
- }
- public function add_branch($uid,$data){
- $store_branch=Db::name("store_branch")->where(["branch"=>$data["branch"],"mer_id"=>$data["mer_id"]])->find();
- if ($store_branch){
- return [];
- }
- $res=Db::name("store_branch")->insert($data);
- return $res;
- }
- public function get_branch($uid,$data){
- $res=Db::name("store_branch")->where(["mer_id"=>$data["mer_id"]])->select();
- return $res;
- }
- public function del_branch($uid,$data){
- $store_branch=Db::name("store_branch")->where(["id"=>$data["id"],"mer_id"=>$data["mer_id"]])->find();
- if ($store_branch){
- $res=Db::name("store_branch")->where(["id"=>$store_branch["id"]])->delete();
- }else{
- $res=[];
- }
- return $res;
- }
- public function branch_quanxian($uid){
- $res=Db::name("store_branch_jurisdiction")->select();
- return $res;
- }
- public function lock_count($uid,$data){
- //今日新增锁定:会员
- // $daylock=Db::name("store_order")
- // ->alias("so")
- // ->join("user u","u.uid=so.uid")
- // ->where(["so.mer_id"=>$data["mer_id"],'paid'=>1,"so.mer_id"=>0])
- // ->whereTime("pay_time",'today')
- // ->group("so.mer_id")
- // ->count();
- $lockUser=Db::name("user")
- ->where(["mer_id"=>$data["mer_id"]])
- ->whereTime("locktime",'today')
- ->count();
- $lockunion_users=Db::name("union_users")
- ->where(["lock_mer_id"=>$data["mer_id"]])
- ->whereTime('lock_time','today')
- ->count();
- $daylock=$lockUser+$lockunion_users;
- //累计锁定:会员
- $lockUsers=Db::name("user")
- ->where(["mer_id"=>$data["mer_id"]])
- ->count();
- $lockunion_userss=Db::name("union_users")
- ->where(["lock_mer_id"=>$data["mer_id"],"uid"=>0])
- ->count();
- $countlock=$lockUsers+$lockunion_userss;
- //今日线下奖励
- $offlineRecharge1 =Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>3,"type"=>'commission',"source"=>1])->whereTime("create_time",'today')->sum("number");
- $dayprice = $offlineRecharge1;
- // $dayprice=$offlineRecharge;
- //累计线下奖励
- $offlineRecharge22=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>3,"type"=>'commission',"source"=>1])->sum("number");
- $countprice = $offlineRecharge22;
- // $countprice=0;
- //今日线上奖励
- $dayupprice=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>["in","2,3,4"],"type"=>'commission'])->whereTime("create_time",'today')->sum("number");
- //线上累计奖励
- $countupprice=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>["in","2,3,4"],"type"=>'commission'])->sum("number");
- //线上已到账奖励
- $daoupprice=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>["in","2,3,4"],"type"=>'commission'])->where(["uid"=>$uid,"status"=>1])->sum("number");
- return [
- "daylock"=> $daylock,
- "countlock"=> $countlock,
- "dayprice"=>$dayprice,
- "countprice"=>$countprice,
- "dayupprice"=>$dayupprice,
- "countupprice"=>$countupprice,
- "daoupprice"=>$daoupprice
- ];
- }
- public function count_price($uid,$data){
- $uids=Db::name("merchant")->where("mer_id",$data["mer_id"])->value("uid");
- $daoupprice=Db::name("user")->where(["uid"=>$uids])->value("brokerage_price");
- // $qiyeprice=Db::name("merchant_reconciliation")->where(["mer_id"=>$data["mer_id"],"status"=>2])->sum("price");
- // $daoupprice=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>3,"type"=>'commission',"source"=>1])->sum("number");
- //商家线下充值获得金额
- //商家线下充值获得金额
- $offlineRecharge1 = Db::name('order_merchant')
- ->where("mer_id", $data["mer_id"])
- ->where('status', '>', 0)
- ->sum('money');
- $offlineRecharge2 = Db::name('order_merchant')
- ->where("mer_id", $data["mer_id"])
- ->where('status', '>', 0)
- ->sum('available');
- // $payPrice=getModelTime(Db::name("store_order")->where('paid', 1)->when($merId, function ($query, $merId) {
- // $query->where('mer_id', $merId);
- // }), $day, 'pay_time')->sum('pay_price');
- $payPrice=Db::name("store_order")->where('mer_id', $data["mer_id"])->where('paid', 1)->sum('pay_price');
- $offlineRecharge = bcsub($offlineRecharge1, $offlineRecharge2, 2);
- $qiyeprice=bcadd($offlineRecharge,$payPrice,2);
- return ["daoupprice"=>$daoupprice,"qiyeprice"=>$qiyeprice];
- }
- public function msg_notice($uid,$data){
- $page = empty($data["page"])?1:$data["page"];
- $limit= empty( $data["limit"])?10:$data["limit"];
- $list=Db::name("notice_shop")->where(["mer_id"=>$data["mer_id"],"is_del"=>0,"status"=>1])->page($page,$limit)->select()->toArray();
- $count=Db::name("notice_shop")->where(["mer_id"=>$data["mer_id"],"is_del"=>0,"status"=>1])->count();
- return ["list"=>$list,"count"=>$count];
- }
- public function del_notice($uid,$data){
- $list=Db::name("notice_shop")->where(["mer_id"=>$data["mer_id"],"is_del"=>0])->update(["is_del"=>1]);
- return $list;
- }
- public function tuijian($uid,$data){
- $res=Db::name("user")
- ->where(["mer_id"=>$data["mer_id"]])
- ->field("nickname,avatar,uid")
- ->select()->toArray();
- foreach ($res as &$v){
- $v["lock"]=1;
- }
- return $res;
- }
- public function add_user($uid,$data){
- $spread_uid=Db::name("merchant")->where("mer_id",$data["mer_id"])->value("uid");
- $user= Db::name("user")->where("account",$data["phone"])->find();
- if ($user){
- return false;
- }else{
- $data["spread"]=$spread_uid;
- $repository = app()->make(\app\common\repositories\user\UserRepository::class);
- $res = $repository->addregistr($data);
- }
- return $res;
- }
- //商户统计
- public function statistical_chart($uid,$merId){
- $date=$this->get_weeks();
- $categories=$date;
- $payPrice=[];
- $lockUser=[];
- $lockUserNo=[];
- foreach ($date as $v){
- $payPrice[]=$this->payPrice($uid,$merId,$v);
- $lockUser[]=$this->lockUser($uid,$merId,$v);
- $lockUserNo[]=$this->lockUserNo($uid,$merId,$v);
- $payYang[]=$this->payYang($uid,$merId,$v);
- }
- $ydPrice=[0,0,0,0,0,0,0];
- $series=[
- [
- "name"=>"营业收入",
- "data"=>$ydPrice
- ],
- [
- "name"=>"跨店收入",
- "data"=>$payPrice
- ],
- [
- "name"=>"锁定会员数",
- "data"=>$lockUser
- ],
- [
- "name"=>"待锁定会员",
- "data"=>$lockUserNo
- ],
- [
- "name"=>"推广收入",
- "data"=>$payYang
- ]
- ];
- return [
- "categories"=>$categories,
- "series"=>$series
- ];
- }
- function get_weeks($time = '', $format='Y-m-d'){
- $time = $time != '' ? $time : time();
- //组合数据
- $date = [];
- for ($i=1; $i<=7; $i++){
- $date[] = date($format ,strtotime( '+' . $i-7 .' days', $time));
- }
- return $date;
- }
- public function payPrice($uid,$merId,$day)
- {
- //支付金额 //也就是应到金额 //也可以是已到金额
- // $payPrice = getModelTime(Db::name("store_order")->where('paid', 1)->when($merId, function ($query, $merId) {
- // $query->where('mer_id', $merId);
- // }), $day, 'pay_time')->sum('pay_price');
- $payPrice =Db::name("store_order")
- ->where(['paid'=>1,"mer_id"=>$merId])
- ->whereTime('pay_time','between',[$day." 0:0:0",$day." 23:59:59"])
- ->sum('pay_price');
- return $payPrice;
- }
- public function lockUser($uid,$merId,$day)
- {
- //支付金额 //也就是应到金额 //也可以是已到金额
- // $lockUser=Db::name("store_order")
- // ->alias("so")
- // ->join("user u","u.uid=so.uid")
- // ->where(['paid'=>1,"so.mer_id"=>$merId,"u.mer_id"=>$merId])
- // ->whereTime('so.create_time','between',[$day." 0:0:0",$day." 23:59:59"])
- // ->group("so.uid")
- // ->count();
- $lockUser=Db::name("user")
- ->where(["mer_id"=>$merId])
- ->whereTime('locktime','between',[$day." 0:0:0",$day." 23:59:59"])
- ->count();
- // $lockUsers
- $lockunion_users=Db::name("union_users")
- ->where(["lock_mer_id"=>$merId])
- ->whereTime('lock_time','between',[$day." 0:0:0",$day." 23:59:59"])
- ->count();
- $lockUser=$lockUser+$lockunion_users;
- return $lockUser;
- }
- public function lockUserNo($uid,$merId,$day)
- {
- //待锁定
- $lockUserNo =Db::name("store_order")
- ->alias("so")
- ->join("user u","u.uid=so.uid")
- ->where(['paid'=>1,"so.mer_id"=>$merId,"u.mer_id"=>0])
- ->where('so.create_time','between time',[$day." 0:0:0",$day." 23:59:59"])
- ->group("so.uid")
- ->count();
- return $lockUserNo;
- }
- public function payYang($uid,$merId,$day)
- {
- //贡献养老金
- // $payYang=Db::name("store_order")
- // ->alias("so")
- // ->join("user_bill u","u.order_sn=so.order_sn")
- // ->where(['paid'=>1,"u.commission_type"=>3,"so.mer_id"=>$merId])
- // $uid
- $payYang=Db::name("user_bill")
- ->where(["commission_type"=>3,"uid"=>$uid])
- ->where('create_time','between time',[$day." 0:0:0",$day." 23:59:59"])
- ->sum("number");
- return $payYang;
- }
- public function get_mer_info($merId){
- if ($merId){
- $mer=Db::name("merchant")
- ->where("mer_id",$merId)
- ->field("mer_name,mer_id,mer_address,mer_avatar as mer_banner")
- ->find();
- if ($mer){
- // "statime"=>["<",time()],"endtime"=>[">",time()],
- $mer["recharge"]=Db::name("recharge")
- ->where(["mer_id"=>$merId])
- ->whereTime('statime', '<=', time()) ->whereTime('endtime', '>=', time())
- ->select();
- }
- return $mer;
- }else{
- return [];
- }
- }
- /**
- * 根据商户id获取锁定用户数
- * ljj
- * 2021-2-25
- * @param $mer_id 商户号
- * @return int
- */
- public function get_lock_num($mer_id){
- $lockUser=Db::name("user")
- ->where(["mer_id"=>$mer_id])
- ->count();
- $lockunion_users=Db::name("union_users")
- ->where(["lock_mer_id"=>$mer_id])
- ->count();
- $daylock=$lockUser+$lockunion_users;
- return $daylock?$daylock:0;
- }
- /**
- * 商户端调整
- * 商户会员列表
- * ljj 2021/2/27
- */
- public function new_mer_user($uid,$data){
- $where[]=["mer_id","=",$data["mer_id"]];
- if ($data["search"]){
- $where[] =["u.name","like","%".$data["search"]."%"];
- }
- $page = empty($data["page"])?1:$data["page"];
- $limit= empty( $data["limit"])?10:$data["limit"];
- $lsit= Db::name("merchant_user")
- ->where($where)
- ->page($page,$limit)
- ->select()->toArray();
- $count= Db::name("merchant_user")
- ->where($where)
- ->count();
- if ($lsit){
- return ["list"=>$lsit,"count"=>$count];
- }else{
- return [];
- }
- }
- /**
- * 商户端
- * ljj 2021/2/27
- */
- public function new_add_mer_user($uid,$data){
- $count=Db::name("merchant_user")->where("phone",$data["phone"])->count();
- if($count){
- return [];
- }
- $id = Db::name("merchant_user")->insertGetId(
- [
- "phone"=>$data["phone"],
- "mer_id"=>$data["mer_id"],
- "sex"=>$data["sex"],
- "birthday"=>$data["birthday"],
- "name"=>$data["name"],
- ]
- );
- $MerchantRepository = app()->make( \app\common\repositories\system\merchant\MerchantRepository::class);
- $codeurl=$MerchantRepository->offlineUserQrcode(intval($data["mer_id"]),$id);
- return Db::name("merchant_user")->where('id', $id)->update(["codeurl"=>$codeurl]);
- }
- /**
- * 商户端
- * ljj 2021/2/27
- * 会员详情
- */
- public function merchant_user_log($uid,$data){
- $userinfo=Db::name("merchant_user")->where("id",$data["uid"]) ->find();
- if($userinfo){
- $lists=Db::name("merchant_user_log")->where("uid",$userinfo["id"]) ->select()->toArray();
- $chonglist=[];
- foreach ($lists as $vs){
- $chonglist[]= [
- "title"=>$vs["pm"]?"充值":"消费",
- "refund_price"=>$vs["number"],
- "price"=>$vs["number"],
- "mark"=>$vs["mark"],
- "create_time"=>$vs["create_time"],
- "pm"=>$vs["pm"]
- ];
- }
- return ["user_info"=>$userinfo,"consumption"=>$chonglist];
- }else{
- return ["user_info"=>[],"consumption"=>[]];
- }
- }
- /**
- * 会员管理
- * 操作金额 减
- */
- public function reduce_money($uid,$data){
- $money=Db::name("merchant_user")->where("id",$data["id"])->value("money");
- if ($money<$data["money"]){
- return [];
- }
- $number=round($data["money"],2);
- $data=[
- "uid"=>$data["id"],
- "pm"=>0,
- "title"=>"消费",
- "number"=>$number,
- "mark"=>"消费",
- "status"=>1,
- "mer_id"=>$data["mer_id"],
- ];
- Db::name("merchant_user_log")->insert($data);
- Db::name("merchant_user")->where("id",$uid)->dec('money', $number) ->update();
- return true;
- }
- /**
- * 绑定音响
- * @Author:lin
- * @Date: 2021/3/29
- */
- public function set_yx($data){
- $where=[];
- $where["mer_id"]=$data["mer_id"];
- $where['status'] = 1;
- $check=Db::name("merchant_yx")
- ->where($where)
- ->find();
- if($check){
- return ["code"=>0,"msg"=>"此商户已绑定音响"];
- }
- $check1 = Db::name("merchant_yx")
- ->where('sn',$data['sn'])
- ->where('status',1)
- ->find();
- Log::info("=====================".Db::name("merchant_yx") -> getLastSql());
- if($check1){
- return ["code"=>0,"msg"=>"此音响已被绑定"];
- }
- if(!is_numeric($data['sn'])){
- return ["code"=>0,"msg"=>"二维码无效"];
- }
- $mer=Db::name("merchant_yx")
- ->insert(
- [
- "uid"=>$data['uid'],
- "mer_id"=>$data["mer_id"],
- "sn"=>$data['sn'],
- "status"=>1
- ]
- );
- if ($mer){
- return ["code"=>1,"msg"=>"绑定成功"];
- }
- return ["code"=>0,"msg"=>"绑定失败"];
- }
- //每周需释放消费分列表
- public function consumptionScoreList(){
- return Db::name('merchant_consumption_score') -> where('stages > 0 and surplus_score > 0') -> select();
- }
- //消费分处理
- public function consumptionScore($mer_id,$uid,$consumption_score,$surplus_score,$stages,$id=0){
- if($id == 0){
- $ins = [
- 'mer_id' => $mer_id,
- 'uid' => $uid,
- 'consumption_score' => $consumption_score,
- 'surplus_score' => $surplus_score,
- 'stages' => $stages,
- 'add_time' => time()
- ];
- Db::name('merchant_consumption_score') -> insert($ins);
- //商户表增加相应消费分
- Db::name('merchant') -> where('mer_id',$mer_id) -> inc('score',$consumption_score);
- }else{
- $c = Db::name('merchant_consumption_score') -> where('id',$id) -> find();
- $sf = bcdiv($c['surplus_score'] , $c['stages'],2);//释放分 剩余分 除以 剩余期数
- $update = [
- 'surplus_score' => bcsub($c['surplus_score'],$sf,2),
- 'stages' => $c['stages'] - 1
- ];
- //消费分表修改期数与剩余消费分
- Db::name('merchant_consumption_score') -> where('id',$id) -> update($update);
- //商户表减少相应消费分
- Db::name('merchant') -> where('mer_id',$mer_id) -> dec('score',$sf);
- //消费分记录表
- $this -> consumptionScoreLog($mer_id,$uid,$sf,'释放消费分',1,2);
- //消费分变成积分
- $userRepository = app()->make(UserRepository::class);
- $userRepository -> sign_add($uid,$sf,1,'商户释放消费分','','','');
- //消费分状态改为已释放
- $startTime = strtotime('last week 00:00:00');
- $endTime = strtotime('this week 00:00:00 -1second');
- Db::name('merchant_consumption_score_log')
- -> where('mer_id',$mer_id)
- ->where('status',3)
- ->where("update_time >= '$startTime' and update_time <= '$endTime'")
- -> update(['status'=>1]);
- }
- }
- public function getConsumptionScoreLog($mer_id){
- $startTime = strtotime('last week 00:00:00');
- $endTime = strtotime('this week 00:00:00 -1second');
- return Db::name('merchant_consumption_score_log')
- -> where('mer_id',$mer_id)
- ->where('status',3)
- ->where("update_time >= '$startTime' and update_time <= '$endTime'")
- -> sum('consumption_score');
- }
- public function consumptionScoreLog($mer_id,$uid,$consumption_score,$mark,$status=1,$pm=1,$order_id='',$source=0){
- $merchant = Db::name('merchant') -> where('mer_id',$mer_id) -> field('score,uid,consumption_score') -> find();
- if($merchant['consumption_score'] != 1) return false;
- if($uid == 0){
- $uid = $merchant['uid'];
- }
- $ins = [
- 'mer_id' => $mer_id,
- 'uid' => $uid,
- 'consumption_score' => $consumption_score,
- 'pm' => $pm,
- 'mark' => $mark,
- 'status' => $status,
- 'order_id' => $order_id,
- 'add_time' => time(),
- 'source' => $source,
- 'update_time' => time(),
- 'surplus' => $merchant['score']
- ];
- Db::name('merchant_consumption_score_log') -> insert($ins);
- }
- }
|