UserPoint.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: liying
  5. * Date: 2018/7/20
  6. * Time: 18:08
  7. */
  8. namespace app\admin\model\user;
  9. use crmeb\traits\ModelTrait;
  10. use crmeb\basic\BaseModel;
  11. use crmeb\services\PHPExcelService;
  12. class UserPoint extends BaseModel
  13. {
  14. /**
  15. * 数据表主键
  16. * @var string
  17. */
  18. protected $pk = 'id';
  19. /**
  20. * 模型名称
  21. * @var string
  22. */
  23. protected $name = 'user_point';
  24. use ModelTrait;
  25. /*
  26. * 获取积分信息
  27. * */
  28. public static function systemPage($where){
  29. $model= new UserBill();
  30. if($where['status']!='')UserBill::where('status',$where['status']);
  31. if($where['title']!='')UserBill::where('title','like',"%$where[status]%");
  32. $model->where('category','integral')->select();
  33. return $model::page($model);
  34. }
  35. /*
  36. *
  37. * 异步获取积分信息
  38. * */
  39. public static function getpointlist($where){
  40. $list=self::setWhere($where)
  41. ->order('a.add_time desc')
  42. ->field(['a.*','b.nickname'])
  43. ->page((int)$where['page'],(int)$where['limit'])
  44. ->select()
  45. ->toArray();
  46. foreach ($list as $key=>$item){
  47. $list[$key]['add_time']=date('Y-m-d', $item['add_time']);
  48. }
  49. $count=self::setWhere($where)->field(['a.*','b.nickname'])->count();
  50. return ['count'=>$count,'data'=>$list];
  51. }
  52. //生成Excel表格并下载
  53. public static function SaveExport($where){
  54. $list=self::setWhere($where)->field(['a.*','b.nickname'])->select();
  55. $Export=[];
  56. foreach ($list as $key=>$item){
  57. $Export[]=[
  58. $item['id'],
  59. $item['title'],
  60. $item['balance'],
  61. $item['number'],
  62. $item['mark'],
  63. $item['nickname'],
  64. date('Y-m-d H:i:s',$item['add_time']),
  65. ];
  66. }
  67. PHPExcelService::setExcelHeader(['编号','标题','积分余量','明细数字','备注','用户微信昵称','添加时间'])
  68. ->setExcelTile('积分日志','积分日志'.time(),'生成时间:'.date('Y-m-d H:i:s',time()))
  69. ->setExcelContent($Export)
  70. ->ExcelSave();
  71. }
  72. public static function setWhere($where){
  73. $model=UserBill::alias('a')->join('user b','a.uid=b.uid','left')->where('a.category','integral');
  74. $time['data']='';
  75. if($where['start_time']!='' && $where['end_time']!=''){
  76. $time['data']=$where['start_time'].' - '.$where['end_time'];
  77. }
  78. $model=self::getModelTime($time,$model,'a.add_time');
  79. if($where['nickname']!=''){
  80. $model=$model->where('b.nickname|b.uid','like',$where['nickname']);
  81. }
  82. return $model;
  83. }
  84. //获取积分头部信息
  85. public static function getUserpointBadgelist($where){
  86. return [
  87. [
  88. 'name'=>'总积分',
  89. 'field'=>'个',
  90. 'count'=>self::setWhere($where)->sum('a.number'),
  91. 'background_color'=>'layui-bg-blue',
  92. ],
  93. [
  94. 'name'=>'客户签到次数',
  95. 'field'=>'个',
  96. 'count'=>self::setWhere($where)->where('a.type','sign')->group('a.uid')->count(),
  97. 'background_color'=>'layui-bg-cyan',
  98. ],
  99. [
  100. 'name'=>'签到送出积分',
  101. 'field'=>'个',
  102. 'count'=>self::setWhere($where)->where('a.type','sign')->sum('a.number'),
  103. 'background_color'=>'layui-bg-cyan',
  104. ],
  105. [
  106. 'name'=>'使用积分',
  107. 'field'=>'个',
  108. 'count'=>self::setWhere($where)->where('a.type','deduction')->sum('a.number'),
  109. 'background_color'=>'layui-bg-cyan',
  110. ],
  111. ];
  112. }
  113. }