ServiceproviderRepository.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020-04-16
  7. *
  8. *
  9. */
  10. namespace app\common\repositories\serviceprovider;
  11. use app\common\model\store\product\ProductReply;
  12. use app\common\repositories\BaseRepository;
  13. use function Symfony\Component\String\s;
  14. use think\facade\Db;
  15. use think\facade\Route;
  16. /**
  17. * Class MerchantRepository
  18. * @package app\common\repositories\system\merchant
  19. * @mixin MerchantDao
  20. * @author xaboy
  21. * @day 2020-04-16
  22. */
  23. class ServiceproviderRepository extends BaseRepository
  24. {
  25. /**
  26. * MerchantRepository constructor.
  27. * @param MerchantDao $dao
  28. */
  29. public function __construct()
  30. {
  31. }
  32. //统计
  33. public function report_form($uid,$day){
  34. if ($day=="today"){
  35. $day_where=[
  36. date("Y-m-d")." 0:0:0",
  37. date("Y-m-d h:i:s")
  38. ];
  39. }elseif ($day=="yesterday"){
  40. $day_where=[
  41. date("Y-m-d",strtotime("-1 day"))." 0:0:0",
  42. date("Y-m-d",strtotime("-1 day"))." 23:23:23"
  43. ];
  44. }else{
  45. $day_where=[
  46. $day." 0:0:0",
  47. $day." 23:23:23"
  48. ];
  49. }
  50. $mer_ids=self::get_down_mer($uid);
  51. //新增商户数
  52. $countmer=Db::name("merchant")->where("mer_id","in",$mer_ids)->where("create_time","between time",$day_where)->count();
  53. //新增锁定会员数
  54. // $usercount=Db::name("user")->where("locktime","between time",$day_where)->where("mer_id","in",$mer_ids)->count();
  55. // $userlock=Db::name("user")
  56. // ->alias("u")
  57. // ->join("user_certification uc","uc.uid=u.uid")
  58. // ->where("uc.create_time","between time",$day_where)
  59. // ->where(["spread_uid"=>$uid])
  60. // ->count();
  61. //待锁定会员数
  62. $userlockno=Db::name("store_order")
  63. ->alias("so")
  64. ->join("user u","so.uid=u.uid")
  65. ->where("so.status","in","0,1,2,3")
  66. ->where("so.mer_id","in",$mer_ids)
  67. ->where("u.mer_id",0)
  68. ->group("so.uid")
  69. ->where("so.create_time","between time",$day_where)
  70. ->count();
  71. $userlock= Db::name("user")->where("locktime","between time",$day_where)->where("mer_id","in",$mer_ids)->count();
  72. //新增收益
  73. $userbill=Db::name("user_bill")->where(["uid"=>$uid,"commission_type"=>3])->where("create_time","between time",$day_where)->count();
  74. // $userlockno=$userlockno;
  75. //产生分佣
  76. $userfen=Db::name("user_bill")->where(["uid"=>$uid])->where("create_time","between time",$day_where)->where(["type"=>"commission","commission_type"=>["in","1,2,3,4"]])->sum("number");
  77. //产生消费养老金
  78. $useryanglao=Db::name("user_bill")->where("create_time","between time",$day_where)->where(["uid"=>$uid,"commission_type"=>5])->count();
  79. //产生消费
  80. $userxiaofei=Db::name("user_bill")->where(["uid"=>$uid])->where("create_time","between time",$day_where)->group("link_id")->count();
  81. return ["countmer"=>$countmer,"userlock"=>$userlock,"userbill"=>$userbill,"userlockno"=>$userlockno,"userfen"=>$userfen,"useryanglao"=>$useryanglao,"userxiaofei"=>$userxiaofei];
  82. }
  83. //商户
  84. public function index($uid,$where)
  85. {
  86. if ($where["mer_id"]){
  87. // $where["branch"]=1;
  88. }else{
  89. $where=[];
  90. $where["branch"]=0;
  91. $where["uid"]=$uid;
  92. }
  93. $mer=Db::name("merchant")
  94. ->alias("m")
  95. ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
  96. ->where($where)
  97. ->field("mer_id,mer_name,mer_avatar,m.create_time,mc.category_name")->find();
  98. if ($mer){
  99. $mer["paycode"]="";
  100. $base_commission=Db::name("system_config_value")
  101. ->where(["mer_id"=>$mer["mer_id"],"config_key"=>"base_commission"])
  102. ->value("value");
  103. $mer["base_commission"]=(int)$base_commission?$base_commission:0;
  104. return $mer;
  105. }else{
  106. return $uid;
  107. }
  108. }
  109. public function news_mer($uid,$data){
  110. // $where=["recommender"=>$uid];
  111. $mer_ids=self::get_down_mer($uid);
  112. $page=empty($data["page"])?1:$data["page"];
  113. $limit=empty($data["limit"])?10:$data["limit"];
  114. $list=Db::name("merchant")
  115. ->where("mer_id","in",$mer_ids)
  116. ->page($page,$limit)
  117. ->field("mer_avatar,mer_name,addr,mer_phone")
  118. ->select()->toArray();
  119. $count=Db::name("merchant")
  120. ->where("mer_id","in",$mer_ids)
  121. ->count();
  122. if ($list){
  123. return ["list"=>$list,"count"=>$count];
  124. }else{
  125. return [];
  126. }
  127. }
  128. public function news_lockuser($uid,$data){
  129. // $where=["spread_uid"=>$uid];
  130. $mer_ids=self::get_down_mer($uid);
  131. $page=empty($data["page"])?1:$data["page"];
  132. $limit=empty($data["limit"])?10:$data["limit"];
  133. $list=Db::name("user")
  134. // ->where($where)
  135. ->where("mer_id","in",$mer_ids)
  136. ->page($page,$limit)
  137. ->field("nickname,uid")
  138. ->select()->toArray();
  139. $count=Db::name("user")
  140. // ->where($where)
  141. ->where("mer_id","in",$mer_ids)
  142. ->count();
  143. foreach ($list as &$v){
  144. // $v["countprice"]=Db::name("store_order")->where(["uid"=>$v["uid"],"paid"=>1,"status"=>["<>",-1]])->sum("pay_price");
  145. $v["countprice"]=Db::name("store_order")->where(["paid"=>1,"uid"=>$v["uid"]])->where("status","in","0,1,2,3")->sum("pay_price");
  146. }
  147. if ($list){
  148. return ["list"=>$list,"count"=>$count];
  149. }else{
  150. return [];
  151. }
  152. }
  153. public function user_consume($uid,$data){
  154. $mer_ids=self::get_down_mer($uid);
  155. $where=["paid"=>1];
  156. $page=empty($data["page"])?1:$data["page"];
  157. $limit=empty($data["limit"])?10:$data["limit"];
  158. $list=Db::name("store_order")
  159. ->alias("so")
  160. ->join("user u","so.uid=u.uid")
  161. ->where($where)
  162. ->where("so.mer_id","in",$mer_ids)
  163. ->where("u.mer_id","in",$mer_ids)
  164. ->where("so.status","in","0,1,2,3")
  165. ->page($page,$limit)
  166. ->group("so.order_sn")
  167. ->field("order_sn,so.pay_price,nickname,so.create_time")
  168. ->select()->toArray();
  169. $count=Db::name("store_order")
  170. ->alias("so")
  171. ->join("user u","so.uid=u.uid")
  172. ->where("so.status","in","0,1,2,3")
  173. ->where($where)
  174. ->group("so.order_sn")
  175. ->where("so.mer_id","in",$mer_ids)
  176. ->count();
  177. if ($list){
  178. return ["list"=>$list,"count"=>$count];
  179. }else{
  180. return [];
  181. }
  182. }
  183. public function get_bill_list($uid,$data){
  184. $page=empty($data["page"])?1:$data["page"];
  185. $limit=empty($data["limit"])?10:$data["limit"];
  186. $where=["uid"=>$uid];
  187. if ($data["type"]==1){
  188. $where["commission_type"]=2;
  189. }
  190. if ($data["type"]==2){
  191. $where["commission_type"]=1;
  192. }
  193. if ($data["type"]==3){
  194. $where["commission_type"]=4;
  195. }
  196. if ($data["type"]==4){
  197. $where["commission_type"]=5;
  198. }
  199. $list=Db::name("user_bill")
  200. ->where($where)
  201. ->field("bill_id,title,number,pm,create_time")
  202. ->page($page,$limit)
  203. ->select()->toArray();
  204. $count=Db::name("user_bill")->where($where)->count();
  205. return ["list"=>$list,"count"=>$count];
  206. }
  207. public function benefit_contribution($uid,$data){
  208. $mer_ids=self::get_down_mer($uid);
  209. if(empty($mer_ids)){
  210. return [];
  211. }
  212. $list=Db::name("user")->where("mer_id","in",$mer_ids)->field("uid,nickname")->select()->toArray();
  213. if (!$list){
  214. return [];
  215. }
  216. // $list=Db::name("user_bill")
  217. // ->alias("ub")
  218. // ->join("user u","u.uid=ub.uid")
  219. // ->where("u.uid","in",implode(",",$xiaofeiren))
  220. // ->where(["type"=>"commission"])
  221. // ->group("u.uid")
  222. // ->field("sum(number) as price,nickname")
  223. // ->select()->toArray();
  224. foreach ($list as &$v){
  225. // $v["price"]=Db::name("user_bill")->where("",$v["uid"])->sum("number");
  226. $v["price"]=Db::name("store_order")
  227. ->alias("so")
  228. ->join("user_bill ub","ub.order_sn=so.order_sn")
  229. ->where(["so.uid"=>$v["uid"],"ub.uid"=>$uid])
  230. ->sum("number");
  231. }
  232. return $list;
  233. }
  234. public function get_mer_info($uid,$data){
  235. $mer_ids=self::get_down_mer($uid);
  236. //商户数
  237. $mer_count=$mer_ids?count(explode(",",$mer_ids)):0;
  238. //锁定会员数
  239. $lock_user=Db::name("user")->where("mer_id","in",$mer_ids)->count();
  240. //消费金额
  241. // $xf_mer=Db::name("merchant")->where(["recommender"=>$uid])->column("mer_id");
  242. $xf_price=Db::name("store_order")->where("mer_id","in",$mer_ids)->where(["paid"=>1])->where("mer_id","in",$mer_ids)->where("status","in","0,1,2,3")->sum("pay_price");
  243. //产生分润
  244. $fenrun=Db::name("user_bill")
  245. ->where(["type"=>"commission","uid"=>$uid])
  246. ->where("commission_type","in","2,3,4")
  247. ->sum("number");
  248. // Db::name("user_bill")->where(["uid"=>$uid,"type"=>"commission"])->sum("number");
  249. //待锁定会员
  250. // $lock_userno=0;
  251. $lock_userno=Db::name("store_order")
  252. ->alias("so")
  253. ->join("user u","u.uid=so.uid")
  254. ->where("so.mer_id","in",$mer_ids)
  255. ->where("u.mer_id",0)
  256. ->group("so.uid")
  257. ->count();
  258. //产生养老金
  259. $yanglaojin=Db::name("store_order")
  260. ->alias("so")
  261. ->join("user_bill ub","ub.order_sn=so.order_sn")
  262. ->where("so.mer_id","in",$mer_ids)
  263. ->where(["commission_type"=>5,"type"=>"commission"])
  264. ->sum("number");
  265. return [
  266. "mer_count"=>$mer_count,
  267. "lock_user"=>$lock_user,
  268. "xf_price"=>$xf_price,
  269. "fenrun"=>$fenrun,
  270. "lock_userno"=>$lock_userno,
  271. "yanglaojin"=>$yanglaojin
  272. ];
  273. }
  274. public function get_user_info($uid,$data){
  275. // //锁定会员数
  276. // $lock_user=Db::name("user")->where(["spread_uid"=>$uid])->count();
  277. $mer_ids=self::get_down_mer($uid);
  278. //消费金额
  279. // $xf_mer=Db::name("merchant")->where(["recommender"=>$uid])->column("mer_id");
  280. $xf_price=Db::name("user_bill")
  281. ->where(["type"=>"commission","uid"=>$uid])
  282. ->where("commission_type","in","2,3,4")
  283. ->sum("number");
  284. if(empty($mer_ids)){
  285. return [
  286. "lock_user"=>0,
  287. "xiaofei"=>0,
  288. "xf_price"=>$xf_price,
  289. "yanglaojin"=>0,
  290. "liushui"=>0
  291. ];
  292. }
  293. //锁定会员数
  294. $lock_user=Db::name("user")->where("mer_id","in",$mer_ids)->count();
  295. $xiaofeiren=Db::name("user")->where("mer_id","in",$mer_ids)->column("uid");
  296. if ($xiaofeiren){
  297. $xiaofei=Db::name("store_order")->where("uid","in",implode(",",$xiaofeiren))->where(["paid"=>1])->where("mer_id","in",$mer_ids)->where("status","in","0,1,2,3")->count();
  298. }else{
  299. $xiaofei=0;
  300. }
  301. // $yanglaojin=Db::name("store_order")
  302. // ->alias("so")
  303. // ->join("user_bill ub","ub.order_sn=so.order_sn")
  304. // ->where("so.mer_id","in",$mer_ids)
  305. // ->where(["commission_type"=>5,"type"=>"commission"])
  306. // ->sum("number");
  307. // $yanglaojin=Db::name("user_bill")->where("")
  308. $yanglaojin=Db::name("user")->where("mer_id","in",$mer_ids)->sum("annuity");
  309. // $liushui= Db::name("store_order")->where("mer_id","in",$mer_ids)->where(["paid"=>1])->where("mer_id","in",$mer_ids)->where("status","in","0,1,2,3")->sum("pay_price");
  310. $liushui=Db::name("store_order")->where("uid","in",implode(",",$xiaofeiren))->where(["paid"=>1])->where("mer_id","in",$mer_ids)->where("status","in","0,1,2,3")->sum("pay_price");
  311. return [
  312. "lock_user"=>$lock_user,
  313. "xiaofei"=>$xiaofei,
  314. "xf_price"=>$xf_price,
  315. "yanglaojin"=>$yanglaojin,
  316. "liushui"=>$liushui
  317. ];
  318. }
  319. public function get_mer_list($uid,$data){
  320. $page=empty($data["page"])?1:$data["page"];
  321. $limit=empty($data["limit"])?10:$data["limit"];
  322. $mer_ids=self::get_down_mer($uid);
  323. $page=empty($data["page"])?1:$data["page"];
  324. $limit=empty($data["limit"])?10:$data["limit"];
  325. if ($mer_ids){
  326. $userorder=Db::name("merchant")
  327. ->alias("m")
  328. ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
  329. ->where("mer_id","in",$mer_ids)
  330. ->field("m.mer_id,mer_avatar,postage_score,m.mer_name,mc.category_name,district_addr,m.create_time")
  331. ->page($page,$limit)
  332. ->select()->toArray();
  333. $usercount=Db::name("merchant")
  334. ->alias("m")
  335. ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
  336. ->where("mer_id","in",$mer_ids)
  337. ->count();
  338. foreach ($userorder as &$v){
  339. $v["usercount"]=Db::name("user")->where("mer_id",$v["mer_id"])->count();
  340. $v["distance"]="1km";
  341. }
  342. return ["list"=>$userorder,"count"=>$usercount];
  343. }else{
  344. return ["list"=>[],"count"=>0];
  345. }
  346. // $merchant=Db::name("merchant")
  347. // ->alias("m")
  348. // ->join("user u","u.mer_id=m.mer_id","left")
  349. // ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
  350. // ->where(["recommender"=>$uid])
  351. // ->group("m.mer_id")
  352. // ->field("m.mer_id,count(u.uid) as usercount,mer_avatar,postage_score,mer_name,mc.category_name,district_addr,m.create_time")
  353. // ->order("usercount desc")
  354. // ->page($page,$limit)
  355. // ->select()->toArray();
  356. // $count=Db::name("merchant")
  357. // ->alias("m")
  358. // ->join("user u","u.mer_id=m.mer_id","left")
  359. // ->join("merchant_category mc","mc.merchant_category_id=m.category_id","left")
  360. // ->group("m.mer_id")
  361. // ->where(["recommender"=>$uid])
  362. // ->count();
  363. // foreach ($merchant as &$v){
  364. // $v["distance"]="1km";
  365. // }
  366. // if ($merchant){
  367. // return ["list"=>$merchant,"count"=>$count];
  368. // }else{
  369. // return [];
  370. // }
  371. }
  372. public function get_my_profit($uid){
  373. $zong=Db::name("user_bill")->where("uid",$uid)->where("type","commission")->where("commission_type","<>",5)->sum("number");
  374. $yidao=Db::name("user_extract")->where("uid",$uid)->where("type","commission")->where("status",1)->sum("extract_price");
  375. $weidao=Db::name("user_extract")->where("uid",$uid)->where("type","commission")->where("status",0)->sum("extract_price");
  376. $weijiesuan=Db::name("user_bill")->where("uid",$uid)->where("type","commission")->where("status",0)->where("commission_type","<>",5)->sum("number");
  377. return ["zong"=>$zong,"yidao"=>$yidao,"weidao"=>$weidao,"weijiesuan"=>$weijiesuan];
  378. }
  379. public function lock_user_profit($uid){
  380. $zong=Db::name("user_bill")->where("type","commission")->where("uid",$uid)->where("commission_type",2)->sum("number");
  381. $yidao=Db::name("user_extract")->where("uid",$uid)->where("status",1)->sum("extract_price");
  382. $weidao=Db::name("user_extract")->where("uid",$uid)->where("status",0)->sum("extract_price");
  383. $weijiesuan=Db::name("user_bill")->where("type","commission")->where("uid",$uid)->where("status",0)->where("commission_type",2)->sum("number");
  384. return ["zong"=>$zong,"yidao"=>$yidao,"weidao"=>$weidao,"weijiesuan"=>$weijiesuan];
  385. }
  386. public function channel_service_fee($uid){
  387. $zong=Db::name("user_bill")->where("uid",$uid)->where("commission_type",1)->sum("number");
  388. $yidao=Db::name("user_extract")->where("uid",$uid)->where("status",1)->sum("extract_price");
  389. $weidao=Db::name("user_extract")->where("uid",$uid)->where("status",0)->sum("extract_price");
  390. $weijiesuan=Db::name("user_bill")->where("uid",$uid)->where("status",0)->where("commission_type",1)->sum("number");
  391. return ["zong"=>$zong,"yidao"=>$yidao,"weidao"=>$weidao,"weijiesuan"=>$weijiesuan];
  392. }
  393. public function rebate_within_jurisdiction($uid){
  394. $zong=Db::name("user_bill")->where("uid",$uid)->where("commission_type",4)->sum("number");
  395. $yidao=Db::name("user_extract")->where("uid",$uid)->where("status",1)->sum("extract_price");
  396. $weidao=Db::name("user_extract")->where("uid",$uid)->where("status",0)->sum("extract_price");
  397. $weijiesuan=Db::name("user_bill")->where("uid",$uid)->where("status",0)->where("commission_type",4)->sum("number");
  398. return ["zong"=>$zong,"yidao"=>$yidao,"weidao"=>$weidao,"weijiesuan"=>$weijiesuan];
  399. }
  400. public function advertising_revenue($uid){
  401. $zong=Db::name("user_bill")->where("uid",$uid)->where("commission_type",4)->sum("number");
  402. $yidao=Db::name("user_extract")->where("uid",$uid)->where("status",5)->sum("extract_price");
  403. $weidao=Db::name("user_extract")->where("uid",$uid)->where("status",0)->sum("extract_price");
  404. $weijiesuan=Db::name("user_bill")->where("uid",$uid)->where("status",0)->where("commission_type",5)->sum("number");
  405. return ["zong"=>$zong,"yidao"=>$yidao,"weidao"=>$weidao,"weijiesuan"=>$weijiesuan];
  406. }
  407. public function user_list($uid,$data){
  408. $mer_ids=self::get_down_mer($uid);
  409. $page=empty($data["page"])?1:$data["page"];
  410. $limit=empty($data["limit"])?10:$data["limit"];
  411. if ($mer_ids){
  412. // $userorder=Db::name("store_order")
  413. // ->alias("so")
  414. // ->join("user u","u.uid=so.uid")
  415. // ->where("so.mer_id","in",$mer_ids)
  416. //// ->where("u.mer_id","in","0,".$mer_ids)
  417. // ->where(["paid"=>1])
  418. // ->where("so.status","in","0,1,2,3")
  419. // ->group("u.uid")
  420. // ->field("u.nickname,count(so.order_id) as countorder,annuity,u.mer_id,u.create_time")
  421. // ->page($page,$limit)
  422. // ->order("countorder desc")
  423. // ->select()->toArray();
  424. $userorder=Db::name("user")->where("mer_id","in",$mer_ids)->page($page,$limit)->field("nickname,create_time,annuity,mer_id,uid")->select()->toArray();
  425. // $usercount=Db::name("store_order")
  426. // ->alias("so")
  427. // ->join("user u","u.uid=so.uid")
  428. // ->where("so.mer_id","in",$mer_ids)
  429. // ->where("u.mer_id","in","0,".$mer_ids)
  430. // ->group("u.uid")
  431. // ->count();
  432. $usercount=Db::name("user")->where("mer_id","in",$mer_ids)->count();
  433. foreach ($userorder as &$v){
  434. $mer_name=Db::name("merchant")->where("mer_id", $v["mer_id"])->value("mer_name");
  435. $v["mer_name"]=$mer_name;
  436. $v["mer_lock"]=$mer_name?1:0;
  437. $v["countorder"]=Db::name("store_order") ->where(["mer_id"=>$v["mer_id"],"uid"=>$v["uid"]])->count();
  438. }
  439. return ["list"=>$userorder,"count"=>$usercount];
  440. }else{
  441. return ["list"=>[],"count"=>0];
  442. }
  443. }
  444. public function mer_list($uid,$data){
  445. $mer_ids=self::get_down_mer($uid);
  446. $page=empty($data["page"])?1:$data["page"];
  447. $limit=empty($data["limit"])?10:$data["limit"];
  448. if ($mer_ids){
  449. $userorder=Db::name("merchant")
  450. ->where("mer_id","in",$mer_ids)
  451. ->field("mer_id,mer_name,create_time")
  452. ->page($page,$limit)
  453. ->select()->toArray();
  454. $usercount=Db::name("merchant")
  455. ->where("mer_id","in",$mer_ids)
  456. ->count();
  457. foreach ($userorder as &$v){
  458. $v["lockcount"]=Db::name("user")->where("mer_id",$v["mer_id"])->count();
  459. // $v["commission"]=Db::name("user_bill")
  460. // ->alias("ub")
  461. // ->join("store_order so","ub.order_sn=so.order_sn")
  462. // ->where(["so.mer_id"=>$v["mer_id"],"ub.commission_type"=>["in","1,2,3,4"]])
  463. // ->sum("number");
  464. // $v["yanglao"]=Db::name("user_bill")
  465. // ->alias("ub")
  466. // ->join("store_order so","ub.order_sn=so.order_sn")
  467. // ->where(["so.mer_id"=>$v["mer_id"],"ub.commission_type"=>5])
  468. // ->sum("number");
  469. // $v["lockcountNo"]=Db::name("user")->where("mer_id",$v["mer_id"])->count();
  470. //产生分润
  471. // $v["commission"]=Db::name("store_order")
  472. // ->alias("so")
  473. // ->join("user_bill ub","ub.order_sn=so.order_sn")
  474. // ->where("so.mer_id",$v["mer_id"])
  475. // ->where(["type"=>"commission"])
  476. // ->where("commission_type","in","2,3,4")
  477. // ->sum("number");
  478. $v["commission"]=Db::name("user_bill")
  479. ->where(["type"=>"commission","mer_id"=>$v["mer_id"]])
  480. ->where("commission_type","in","2,3,4")
  481. ->sum("number");
  482. $v["lockcountNo"]=Db::name("store_order")
  483. ->alias("so")
  484. ->join("user u","u.uid=so.uid")
  485. ->where("so.mer_id",$v["mer_id"])
  486. ->where("u.mer_id",0)
  487. ->group("so.uid")
  488. ->count();
  489. //产生养老金
  490. $v["yanglao"]=Db::name("store_order")
  491. ->alias("so")
  492. ->join("user_bill ub","ub.order_sn=so.order_sn")
  493. ->where("so.mer_id",$v["mer_id"])
  494. ->where(["commission_type"=>5,"type"=>"commission"])
  495. ->sum("number");
  496. }
  497. return ["list"=>$userorder,"count"=>$usercount];
  498. }else{
  499. return ["list"=>[],"count"=>0];
  500. }
  501. }
  502. //根据身份查名下商户id 名下代理id
  503. public static function get_down_mer($uid,$returnarea=0){
  504. $user=Db::name("user")->where("uid",$uid)->field("identity")->find();
  505. $area=0;
  506. $areas=[];
  507. // if ($user_identity==1){
  508. // $area=Db::name("user_street")->where("uid",$uid)->value("street_id");
  509. // }
  510. // if ($user_identity==2){
  511. // $area=Db::name("user_area")->where("uid",$uid)->value("area_id");
  512. // }
  513. // if ($user_identity==3){
  514. // $area=Db::name("user_city")->where("uid",$uid)->value("city_id");
  515. // }
  516. if ($user["identity"]==1){
  517. $data=Db::name("user_street")->where("uid",$uid)->find();
  518. $area=$data["street_id"];
  519. $areas[]=$data["street_id"];
  520. }
  521. if ($user["identity"]==2){
  522. $data=Db::name("user_area")->where("uid",$uid)->find();
  523. $area=$data["area_id"];
  524. $datas=Db::name("user_street")->where("area_code",$data["area_code"])->column("street_id");
  525. $areas[]=$data["area_id"];
  526. foreach ($datas as $vs){
  527. $areas[]= $vs;
  528. }
  529. }
  530. if ($user["identity"]==3){
  531. $data= Db::name("user_city")->where("uid",$uid)->find();
  532. $area=$data["city_id"];
  533. $areas[]=$data["city_id"];
  534. $list=Db::name("user_area")->where("city_code",$data["city_code"])->select()->toArray();
  535. foreach ($list as $k=>&$v){
  536. $vlist=Db::name("user_street")->where(["area_code"=>$v["area_code"]])->where("uid",">",0)->select()->toArray();
  537. if ($v["uid"]==0&&!$vlist){
  538. unset($list[$k]);
  539. }else{
  540. $areas[]=$v["area_id"];
  541. // $v["list"]=$vlist;
  542. foreach ($vlist as $v){
  543. $areas[]= $v["street_id"];
  544. }
  545. }
  546. }
  547. }
  548. if ($areas){
  549. // if ($dengji){
  550. // $uid_ids=Db::name("user")->where("adr_id",$area)->column("uid");
  551. // $uid_ids=implode(",",$uid_ids);
  552. // return $uid_ids;
  553. // }else{
  554. // $mer_ids=Db::name("merchant")->where("city_id|area_id|street_id",$area)->column("mer_id");
  555. // $mer_ids=implode(",",$mer_ids);
  556. // return $mer_ids;
  557. // }
  558. if ($returnarea){
  559. return $area;
  560. }else{
  561. $mer_ids=[];
  562. foreach ($areas as $q){
  563. $mer_id=Db::name("merchant")->where("city_id|area_id|street_id",$q)->column("mer_id");
  564. if ($mer_id){
  565. // $mer_ids[]=implode(",",$mer_id);
  566. $mer_ids= array_merge($mer_id,$mer_ids);
  567. // if ($mer_ids){
  568. // $mer_ids.=",".implode(",",$mer_id);
  569. // }else{
  570. // $mer_ids.=implode(",",$mer_id);
  571. // }
  572. }
  573. }
  574. // array_unique($mer_ids)
  575. // var_dump($mer_ids);exit;
  576. return implode(",",array_unique($mer_ids));
  577. }
  578. }else{
  579. return '';
  580. }
  581. }
  582. public function means($uid,$data){
  583. $page=empty($data["page"])?1:$data["page"];
  584. $limit=empty($data["limit"])?10:$data["limit"];
  585. $list=Db::name("article")
  586. ->where("cid",$data["cid"])
  587. ->field("article_id,create_time,title,synopsis")
  588. ->page($page,$limit)
  589. ->select()->toArray();
  590. $count=Db::name("article")
  591. ->where("cid",$data["cid"])
  592. ->count();
  593. if ($list){
  594. return ["list"=>$list,"count"=>$count];
  595. }else{
  596. return [];
  597. }
  598. }
  599. public function means_info($uid,$data){
  600. $res=Db::name("article")
  601. ->alias("a")
  602. ->join("article_content ac","ac.article_content_id=a.article_id")
  603. ->where("article_id",$data["article_id"])
  604. ->field("a.article_id,ac.content,a.create_time,a.title")
  605. ->find();
  606. return $res;
  607. }
  608. public function countcommission($uid,$data){
  609. $brokerage_price=Db::name("user")->where("uid",$uid)->value("brokerage_price");
  610. $daili=Db::name("user_bill")->where(["commission_type"=>1,"uid"=>$uid])->sum("number");
  611. $yongjin=Db::name("user_bill")->where(["commission_type"=>2,"uid"=>$uid])->sum("number");
  612. $tuiguang=Db::name("user_bill")->where(["commission_type"=>3,"uid"=>$uid])->sum("number");
  613. $xiaqu=Db::name("user_bill")->where(["commission_type"=>4,"uid"=>$uid])->sum("number");
  614. return ["brokerage_price"=>$brokerage_price,"daili"=>$daili,"yongjin"=>$yongjin,"tuiguang"=>$tuiguang,"xiaqu"=>$xiaqu];
  615. }
  616. public function commissionlist($uid,$data){
  617. $page=empty($data["page"])?1:$data["page"];
  618. $limit=empty($data["limit"])?10:$data["limit"];
  619. $list=Db::name("user_bill")
  620. ->where(["uid"=>$uid,'type'=>"commission"])
  621. ->order('bill_id desc')
  622. ->page($page,$limit)
  623. ->select();
  624. $count=Db::name("user_bill")
  625. ->where(["uid"=>$uid])
  626. ->count();
  627. return ["list"=>$list,"count"=>$count];
  628. }
  629. public function add_agent($uid,$data){
  630. $user= Db::name("user")->where("account",$data["phone"])->find();
  631. $repository = app()->make(\app\common\repositories\user\UserRepository::class);
  632. if ($user){
  633. return "用户已存在";
  634. }else{
  635. $user = $repository->registr($data['phone'], time(),'APP',"",$data["name"]);
  636. $spread_account=Db::name("user")->where("uid",$uid)->value("account");
  637. $uid=$user["uid"];
  638. }
  639. Db::name("user_certification")->insert([
  640. "user_name"=>$data["name"],
  641. "mobile"=>$data['phone'],
  642. "status"=>1,
  643. "audit_time"=>time(),
  644. "create_time"=>time(),
  645. "update_time"=>time(),
  646. "uid"=>$uid
  647. ]);
  648. $data= [
  649. "name" => $data["name"],
  650. "identity" => $data["identity"],
  651. "license" => $data["license"],
  652. "user_id"=>$uid,
  653. "province_id"=>$data["province_id"],
  654. "city_id"=>$data["city_id"],
  655. "area_id"=>$data["area_id"],
  656. "street_id"=>$data["street_id"],
  657. 'spread_account'=>$spread_account,
  658. "add_time"=>time(),
  659. "update_time"=>time()
  660. ];
  661. // $repository = app()->make(\app\common\repositories\user\UserRepository::class);
  662. $res = $repository->agent($data);
  663. if($res['code'] == 400){
  664. return $res['msg'];
  665. }
  666. return "申请成功";
  667. }
  668. public function get_agent($uid){
  669. $uids=self::get_down_mer($uid,1);
  670. $page=empty($data["page"])?1:$data["page"];
  671. $limit=empty($data["limit"])?10:$data["limit"];
  672. // var_dump($uids);exit;
  673. $user=Db::name("user")
  674. ->alias("u")
  675. ->join("user_agent ua","ua.user_id=u.uid")
  676. ->where("adr_id",$uids)
  677. ->field("u.nickname,u.identity,u.phone,u.uid,ua.street_id,ua.area_id,ua.city_id")
  678. ->page($page,$limit)
  679. ->select()
  680. ->toArray();
  681. foreach ($user as &$v){
  682. $v["phone"]=substr($v["phone"], 0, 3) . '****' . substr($v["phone"], 7, 4);
  683. $street= Db::name("user_street")->where("street_id",$v["street_id"])->value("street_name");
  684. $area_id = Db::name("user_area")->where("area_id",$v["area_id"])->value("area_name");
  685. $city = Db::name("user_city")->where("city_id",$v["city_id"])->value("city_name");
  686. $v["addres"]=$city."-".$area_id."-".$street;
  687. $v["identity"]=$v["identity"]==3?"市级代理":(($v["identity"]==2)?"县级代理":"镇级代理");
  688. }
  689. $count=Db::name("user")
  690. ->where("adr_id",$uids)
  691. ->count();
  692. return ["list"=>$user,"count"=>$count];
  693. }
  694. public function edit_agent($uid,$data){
  695. $user= Db::name("user")->where("account",$data["phone"])->find();
  696. $spread_account=Db::name("user")->where("uid",$uid)->value("account");
  697. $areaid=0;
  698. if ($data["identity"]==1){
  699. $areaid=Db::name("user_street")->where("street_id",$data["street_id"])->value("uid");
  700. }
  701. if ($data["identity"]==2){
  702. $areaid=Db::name("user_area")->where("area_id",$data["area_id"])->value("uid");
  703. }
  704. if ($data["identity"]==3){
  705. $areaid=Db::name("user_city")->where("city_id",$data["city_id"])->value("uid");
  706. }
  707. if ($areaid){
  708. return ["code"=>0,"msg"=>"该区域已经有代理了"];
  709. }
  710. $datas= [
  711. "name" => $data["name"],
  712. "identity" => $data["identity"],
  713. "license" => $data["license"],
  714. // "user_id"=>$user["uid"],
  715. "province_id"=>$data["province_id"],
  716. "city_id"=>$data["city_id"],
  717. "area_id"=>$data["area_id"],
  718. "street_id"=>$data["street_id"],
  719. 'spread_account'=>$spread_account,
  720. "update_time"=>time()
  721. ];
  722. Db::transaction(function () use ($datas,$user) {
  723. $res=Db::name("user_agent")->where("user_id",$user["uid"])->update($datas);
  724. if ($res){
  725. if ($datas["identity"]!=$user["identity"]){
  726. Db::name("user")->where("account",$user["account"])->update(["identity"=>$datas["identity"]]);
  727. if ($datas["identity"]==1){
  728. Db::name("user_street")->where("street_id",$datas["street_id"])->update(["uid"=>$user["uid"]]);
  729. }
  730. if ($datas["identity"]==2){
  731. Db::name("user_area")->where("area_id",$datas["area_id"])->update(["uid"=>$user["uid"]]);
  732. }
  733. if ($datas["identity"]==3){
  734. Db::name("user_city")->where("city_id",$datas["city_id"])->update(["uid"=>$user["uid"]]);
  735. }
  736. }
  737. // return ["code"=>1,"msg"=>"修改成功"];
  738. }
  739. });
  740. return ["code"=>1,"msg"=>"修改成功"];
  741. }
  742. public function get_one_agent($uid,$data){
  743. $user=Db::name("user_agent")
  744. ->where("user_id",$data["uid"])
  745. ->find();
  746. if($user){
  747. $user["street_id"]= Db::name("user_street")->where("street_id",$user["street_id"])->field("street_id,street_code,street_name")->find();
  748. $user["area_id"]= Db::name("user_area")->where("area_id",$user["area_id"])->field("area_id,area_code,area_name")->find();
  749. $user["city_id"]= Db::name("user_city")->where("city_id",$user["city_id"])->field("city_id,city_code,city_name")->find();
  750. $user["province_id"]= Db::name("user_province")->where("province_id",$user["province_id"])->field("province_id,province_code,province_name")->find();
  751. }
  752. return $user;
  753. }
  754. public function mer_distribution($uid){
  755. $area=self::get_down_mer($uid,1);
  756. $mer=Db::name("merchant")
  757. ->where("city_id|area_id|street_id",$area)
  758. ->field("mer_name,mer_phone,doorhead,lat,lng,mer_avatar,addr")
  759. ->select()->toArray();
  760. return $mer;
  761. }
  762. public function get_area($uid){
  763. $user= Db::name("user")->where("uid",$uid)->find();
  764. $data=[];
  765. if ($user["identity"]==1){
  766. $data=Db::name("user_street")->where("uid",$uid)->find();
  767. }
  768. if ($user["identity"]==2){
  769. $data=Db::name("user_area")->where("uid",$uid)->find();
  770. $data["list"]=Db::name("user_street")->where("area_code",$data["area_code"])->select();
  771. }
  772. if ($user["identity"]==3){
  773. $data= Db::name("user_city")->where("uid",$uid)->find();
  774. $list=Db::name("user_area")->where("city_code",$data["city_code"])->select()->toArray();
  775. foreach ($list as $k=>&$v){
  776. $vlist=Db::name("user_street")->where(["area_code"=>$v["area_code"]])->where("uid",">",0)->select()->toArray();
  777. if ($v["uid"]==0&&!$vlist){
  778. unset($list[$k]);
  779. }else{
  780. $v["list"]=$vlist;
  781. }
  782. }
  783. $data["list"]=$list;
  784. }
  785. return $data;
  786. }
  787. }