<?php
namespace app\user\admin;
use app\system\admin\Admin;
use app\shouyin\model\UserBalanceLog as UserBalanceLogModel;
use think\Db;
use app\shouyin\model\UserCard as UserCardModel;
use app\shouyin\model\UserCardLog as UserCardLogModel;
use app\shouyin\model\UserCardDetailLog as UserCardDetailLogModel;
use app\shouyin\model\ProductOrder as ProductOrderModel;
use app\shouyin\model\Subscribe as SubscribeModel;
use app\user\model\User as UserModel;
use app\warehouse\model\Stock as StockModel;
use League\Csv\Reader;
class Records extends Admin
{
public function initialize()
{
parent::initialize();
$users = UserModel::field('id,nick')->all();
$this->assign('users',UserModel::getSelect($users));
}
public function balance()
{
if ($this->request->isAjax()) {
$where = [];
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 15);
$user_id = $this->request->param('user_id', '');
$shop_id = $this->request->param('shop_id', '');
$start = $this->request->param('start', '2000-01-01');
$end = $this->request->param('end', date('Y-m-d H:i:s',time()));
if(!empty($user_id)){
$where['user_id'] = $user_id;
}
if(!empty($shop_id)){
$where['shop_id'] = $shop_id;
}
if(empty($start)){
$start = '2000-01-01';
}
if(empty($end)){
$end = date('Y-m-d H:i:s',time());
}
if ($this->request->param('operation') == 2) {
$data['data'] = UserBalanceLogModel::where($where)
->field('hisi_user_balance_log.*,hisi_user_balance_log.type as type_text,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_balance_log.user_id')
->where('createtime','between',[strtotime($start),strtotime($end)])
->order('hisi_user_balance_log.id desc')
->select();
}else{
$data['data'] = UserBalanceLogModel::where($where)
->field('hisi_user_balance_log.*,hisi_user_balance_log.type as type_text,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_balance_log.user_id')
->where('createtime','between',[strtotime($start),strtotime($end)])
->page($page)
->limit($limit)
->order('hisi_user_balance_log.id desc')
->select();
}
$data['count'] = UserBalanceLogModel::where($where)
->field('hisi_user_balance_log.*,hisi_user_balance_log.type as type_text,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_balance_log.user_id')
->where('createtime','between',[strtotime($start),strtotime($end)])
->count('hisi_user_balance_log.id');
if (!empty($data['data'])) {
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['shop_name'] = Db::name('shop')->where('id',$value['shop_id'])->value('name');
}
}
$data['code'] = 0;
return json($data);
}
$shops = Db::name('shop')->field('id,name')->where('status',1)->select();
$this->assign('shops',$shops);
return $this->fetch();
}
public function card()
{
if ($this->request->isAjax()) {
$where = [];
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 15);
$user_id = $this->request->param('user_id', '');
$shop_id = $this->request->param('shop_id', '');
$cid = $this->request->param('cid', '');
$course_id = $this->request->param('course_id', '');
$start = $this->request->param('start', '2000-01-01');
$end = $this->request->param('end', date('Y-m-d H:i:s',time()));
if(!empty($shop_id)){
$where['shop_id'] = $shop_id;
}
if(!empty($user_id)){
$where['userid'] = $user_id;
}
if(!empty($cid)){
$where['cid'] = $cid;
}
if(!empty($course_id)){
$where['course_id'] = $course_id;
}
if(empty($start)){
$start = '2000-01-01';
}
if(empty($end)){
$end = date('Y-m-d H:i:s',time());
}
if(!is_empty($this->request->param('type')) && $this->request->param('type') == 2){
$data['data'] = UserCardDetailLogModel::field('hisi_user_card_detail_log.*,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_card_detail_log.userid')
->where($where)
->where('createtime','between',[strtotime($start),strtotime($end)])
->order('id desc')
->select();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['shop_name'] = Db::name('shop')->where('id',$value['shop_id'])->value('name');
$data['data'][$key]['user_name'] = Db::name('user')->where('id',$value['userid'])->value('nick');
if($value['cate'] == 1){
$data['data'][$key]['card_name'] = Db::name('project')->where('id',$value['cid'])->value('name');
}else{
$data['data'][$key]['card_name'] = Db::name('product')->where('id',$value['cid'])->value('name');
}
$data['data'][$key]['liaochengka'] = Db::name('course')->where('id',$value['course_id'])->value('name');
switch ($value['type']) {
case 1:
$data['data'][$key]['type_text'] = '买入';
break;
case 2:
$data['data'][$key]['type_text'] = '使用';
break;
case 3:
$data['data'][$key]['type_text'] = '退卡';
break;
case 4:
$data['data'][$key]['type_text'] = '赠送';
break;
}
}
$data['count'] = UserCardDetailLogModel::field('hisi_user_card_detail_log.*,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_card_detail_log.userid')
->where($where)
->where('createtime','between',[strtotime($start),strtotime($end)])
->count('hisi_user_card_detail_log.id');
}else{
$data['data'] = UserCardDetailLogModel::field('hisi_user_card_detail_log.*,u.shop_id,u.nick as user_name')
->where($where)
->join('user u','u.id=hisi_user_card_detail_log.userid')
->where('createtime','between',[strtotime($start),strtotime($end)])
->page($page)
->limit($limit)
->order('hisi_user_card_detail_log.id desc')
->select();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['shop_name'] = Db::name('shop')->where('id',$value['shop_id'])->value('name');
if($value['cate'] == 1){
$data['data'][$key]['card_name'] = Db::name('project')->where('id',$value['cid'])->value('name');
}else{
$data['data'][$key]['card_name'] = Db::name('product')->where('id',$value['cid'])->value('name');
}
$data['data'][$key]['liaochengka'] = Db::name('course')->where('id',$value['course_id'])->value('name');
switch ($value['type']) {
case 1:
$data['data'][$key]['type_text'] = '买入';
break;
case 2:
$data['data'][$key]['type_text'] = '使用';
break;
case 3:
$data['data'][$key]['type_text'] = '退卡';
break;
case 4:
$data['data'][$key]['type_text'] = '赠送';
break;
}
}
$data['count'] = UserCardDetailLogModel::field('hisi_user_card_detail_log.*,u.shop_id,u.nick as user_name')
->join('user u','u.id=hisi_user_card_detail_log.userid')
->where($where)
->where('createtime','between',[strtotime($start),strtotime($end)])
->count('hisi_user_card_detail_log.id');
}
$data['code'] = 0;
return json($data);
}
$pros = Db::name('project')->field('id,name')->select();
$courses = Db::name('course')->field('id,name')->select();
$this->assign('pros',$pros);
$this->assign('courses',$courses);
return $this->fetch();
}
public function card1()
{
if ($this->request->isAjax()) {
$where = [];
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 15);
$user_id = $this->request->param('user_id', '');
$start = $this->request->param('start', '2000-01-01');
$end = $this->request->param('end', date('Y-m-d H:i:s',time()));
if(!empty($user_id)){
$where['user_id'] = $user_id;
}
if(empty($start)){
$start = '2000-01-01';
}
if(empty($end)){
$end = date('Y-m-d H:i:s',time());
}
if(!is_empty($this->request->param('type')) && $this->request->param('type') == 2){
$data['data'] = UserCardLogModel::field('pid,pid as pro_text,pid as price,user_id as user_name,COUNT(*) as num,type')
->where('createtime','between',[strtotime($start),strtotime($end)])
->where($where)
->where('use',1)
->group('user_id,pid,type')
->select();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['type_name'] = $value['type'] == 1 ? '疗程卡' :'产品卡';
}
$data['count'] = UserCardLogModel::where('createtime','between',[strtotime($start),strtotime($end)])->where($where)->where('use',1)->group('user_id,pid,type')->count('id');
}else{
$data['data'] = UserCardModel::where($where)
->where('createtime','between',[strtotime($start),strtotime($end)])
->page($page)
->limit($limit)
->order('id desc')
->all();
foreach ($data['data'] as $key => $value) {
$pro = [];
$data['data'][$key]['cardname'] = Db::name('course')->where('id',$value['course_id'])->value('name');
$data['data'][$key]['user_name'] = Db::name('user')->where('id',$value['user_id'])->value('nick');
$data['data'][$key]['pro'] = UserCardLogModel::field('pid,pid as pro_text,count(pid) as num,type')->where('sn',$value['sn'])->where('use',1)->group('pid')->select()->toArray();
}
$data['count'] = UserCardModel::where($where)->where('createtime','between',[strtotime($start),strtotime($end)])->count('id');
}
$data['code'] = 0;
return json($data);
}
return $this->fetch();
}
public function product()
{
if ($this->request->isAjax()) {
$where = [];
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 15);
$user_id = $this->request->param('user_id', '');
$shop_id = $this->request->param('shop_id', '');
$start = $this->request->param('start', '2000-01-01');
$end = $this->request->param('end', date('Y-m-d H:i:s',time()));
if(!empty($shop_id)){
$where['shop_id'] = $shop_id;
}
if(!empty($user_id)){
$where['user_id'] = $user_id;
}
if(empty($start)){
$start = '2000-01-01';
}
if(empty($end)){
$end = date('Y-m-d H:i:s',time());
}
if(!is_empty($this->request->param('type')) && $this->request->param('type') == 2){
$data['data'] = StockModel::where($where)->where('createtime','between',[strtotime($start),strtotime($end)])->where('detailed_type',2)
->order('id desc')
->select();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['user_name1'] = Db::name('user')->where('id',$value['user_id'])->value('nick');
$data['data'][$key]['shop_name1'] = Db::name('shop')->where('id',$value['shop_id'])->value('name');
$data['data'][$key]['ware_name1'] = Db::name('warehouse')->where('id',$value['warehouse_id'])->value('name');
}
$data['count'] = count( $data['data']);
$data['code'] = 0;
return json($data);
}else{
$data['data'] = StockModel::where($where)
->where('createtime','between',[strtotime($start),strtotime($end)])
->where('detailed_type',2)
->page($page)
->limit($limit)
->order('id desc')
->select();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['user_name1'] = Db::name('user')->where('id',$value['user_id'])->value('nick');
$data['data'][$key]['shop_name1'] = Db::name('shop')->where('id',$value['shop_id'])->value('name');
$data['data'][$key]['ware_name1'] = Db::name('warehouse')->where('id',$value['warehouse_id'])->value('name');
}
$data['count'] = StockModel::where($where)->where('createtime','between',[strtotime($start),strtotime($end)])->where('detailed_type',2)->count('id');
$data['code'] = 0;
return json($data);
}
}
return $this->fetch();
}
public function project()
{
if ($this->request->isAjax()) {
$where = [];
$page = $this->request->param('page/d', 1);
$limit = $this->request->param('limit/d', 15);
$shop_id = $this->request->param('shop_id','');
$user_id = $this->request->param('user_id', '');
$start = $this->request->param('start', '2000-01-01');
$end = $this->request->param('end', date('Y-m-d H:i:s',time()));
if(!empty($shop_id)){
$where['shop_id'] = $shop_id;
}
if(!empty($user_id)){
$where['user_id'] = $user_id;
}
if(empty($start)){
$start = '2000-01-01';
}
if(empty($end)){
$end = date('Y-m-d H:i:s',time());
}
$SubscribeModel = new SubscribeModel;
if(!is_empty($this->request->param('type')) && $this->request->param('type') == 2){
$data['data'] = $SubscribeModel->where($where)
->where('status','<>',5)
->where('createtime','between',[strtotime($start),strtotime($end)])
->order('createtime desc')
->select()->toArray();
} else {
$data['data'] = $SubscribeModel->where($where)
->where('status','<>',5)
->where('createtime','between',[strtotime($start),strtotime($end)])
->page($page)
->limit($limit)
->order('createtime desc')
->select()->toArray();
}
$new_data = [];
$i = 0;
foreach ($data['data'] as $key => $value) {
$shop_name = Db::name('shop')->where('id',$value['shop_id'])->value('name');
$room_name = Db::name('room')->where('id',$value['room_id'])->value('name');
$username1 = Db::name('user')->where('id',$value['user_id'])->value('nick');
$data['data'][$key]['project_data'] = json_decode($value['project_data'],true);
if(!empty($data['data'][$key]['project_data'])){
foreach ($data['data'][$key]['project_data'] as $k => $v) {
if(isset($v['adviser_id'])){
$new_data[$i]['adviser_id'] = Db::name('system_user')->where('id',$v['adviser_id'])->value('nick');
}
$new_data[$i]['technician_ids'] = implode(',',Db::name('system_user')->where('id','in',$v['technician_ids'])->column('nick'));
$new_data[$i]['shop_name'] = $shop_name;
$new_data[$i]['room_name'] = $room_name;
$new_data[$i]['username1'] = $username1;
$new_data[$i]['sn'] = $value['sn'];
$new_data[$i]['createtime'] = $value['createtime'];
$new_data[$i]['project_name'] = $v['project_name'];
$new_data[$i]['num'] = $v['num'];
$new_data[$i]['price'] = $v['price'];
$new_data[$i]['is_give'] = $v['is_give'] == 2 ? '赠送' : '购买';
$i++;
}
}
}
$data['data'] = $new_data;
$data['count'] = $SubscribeModel->where($where)->where('status','<>',5)->where('createtime','between',[strtotime($start),strtotime($end)])->count('id');
$data['code'] = 0;
return json($data);
}
$pros = Db::name('project')->field('id,name')->select();
$this->assign('pros',$pros);
$shops = Db::name('shop')->field('id,name')->where('status',1)->select();
$this->assign('shops',$shops);
return $this->fetch();
}
public function import()
{
$model = new \app\common\model\SystemAnnex;
$uploadFile = $model::fileUpload();
if($uploadFile['code'] != 1){
return $this->axiosMsg($uploadFile['msg'],false);
}
$filePath = $uploadFile['data']['file'];
$reader = Reader::createFromPath('.'.$filePath, 'r');
$records = $reader->getRecords();
$newArr = [];
foreach ($records as $offset => $record) {
$newArr[] = $record;
}
unset($newArr[0]);
$insertData = [];
foreach ($newArr as $k => $v) {
$sn = create_order_sn();
if(!empty($v[2]) && $v[2] != 0){
$insertData[] = [
'user_id' => $v[0],
'type' => 1,
'is_give' => 1,
'price' => $v[2],
'sn' => $sn,
'createtime' => time(),
'updatetime' => time(),
];
}
if(!empty($v[3]) && $v[3] != 0){
$insertData[] = [
'user_id' => $v[0],
'type' => 1,
'is_give' => 2,
'price' => $v[3],
'sn' => $sn,
'createtime' => time(),
'updatetime' => time(),
];
}
}
try {
$ins = Db::name('user_balance_log')->insertAll($insertData);
} catch (\Exception $e) {
return $this->axiosMsg($e->getMessage(),false);
}
return $this->axiosMsg('录入成功!',true);
}
public function cardsy()
{
if($this->request->isAjax()){
$page = $this->request->param('page',1);
$limit = $this->request->param('limit',15);
$cid = $this->request->param('cid','');
$user_id = $this->request->param('user_id','');
$type = $this->request->param('type','');
$shop_id = $this->request->param('shop_id','');
$where = [];
if(!empty($cid)){
$where[] = ['pid','=',$cid];
}
if(!empty($user_id)){
$where[] = ['user_id','=',$user_id];
}
if(!empty($shop_id)){
$where[] = ['shop_id','=',$shop_id];
}
$where[] = ['type','=',1];
$where[] = ['use','=',1];
if($type == 2){
$data['data'] = Db::name('user_card_log')->alias('ucl')
->join('project p','p.id=ucl.pid')
->join('user u','u.id=ucl.user_id')
->field('u.nick,p.name,ucl.pid,count(ucl.id) as num,user_id')
->where($where)->group('ucl.user_id,pid')
->select();
}else{
$data['data'] = Db::name('user_card_log')->alias('ucl')
->join('project p','p.id=ucl.pid')
->join('user u','u.id=ucl.user_id')
->field('u.nick,p.name,ucl.pid,count(ucl.id) as num,user_id')
->where($where)->group('ucl.user_id,pid')
->limit($limit)->page($page)->select();
}
foreach ($data['data'] as $key => $value) {
$shop_id = Db::name('user')->where('id',$value['user_id'])->value('shop_id');
$data['data'][$key]['shop_name'] = Db::name('shop')->where('id',$shop_id)->value('name');
}
$data['count'] = Db::name('user_card_log')->alias('ucl')
->join('project p','p.id=ucl.pid')
->join('user u','u.id=ucl.user_id')
->field('u.nick,p.name,ucl.pid,count(ucl.id) as num')
->where($where)->group('ucl.user_id,pid')->count();
$data['code'] = 0;
return json($data);
}
$pros = Db::name('project')->field('id,name')->select();
$this->assign('pros',$pros);
$users = Db::name('user')->field('id,nick')->select();
$this->assign('users',$users);
$shops = Db::name('shop')->field('id,name')->where('status',1)->select();
$this->assign('shops',$shops);
return $this->fetch();
}
}
?>