...
|
...
|
@@ -15,6 +15,122 @@ use think\Db; |
|
|
|
|
|
class TestController extends HomeBaseController
|
|
|
{
|
|
|
|
|
|
public function prob()
|
|
|
{
|
|
|
$uid = 451;
|
|
|
$user = Db::name('user')->where('id',$uid)->find();
|
|
|
$indent = Db::name('indent')->where('salesman_uid',$uid)->order('create_time','desc')->select();
|
|
|
$arr = collection($indent)->toArray();
|
|
|
$data = [];
|
|
|
$state_arr = [
|
|
|
4 => '待付款',
|
|
|
2 => '待发货',
|
|
|
3 => '已完成',
|
|
|
5 => '已发货',
|
|
|
6 => '待取货'
|
|
|
];
|
|
|
foreach ($arr as &$v) {
|
|
|
$money = Db::name('money_income')->where('uid',$uid)->where('indent_id',$v['id'])->value('money');
|
|
|
$fact_money = Db::name('money_income')->where('uid',$uid)->where('indent_id',$v['id'])->sum('money');
|
|
|
// $income = Db::name('money_income')->where('uid',$uid)->where('indent_id',$v['id'])->select();
|
|
|
// $v['income'] = collection($income)->toArray();
|
|
|
|
|
|
// $data[] = [
|
|
|
// 'id' => $v['id'],
|
|
|
// 'money' => $money,
|
|
|
// 'number' => $v['book_num'],
|
|
|
// 'name' => $v['name'],
|
|
|
// 'phone' => $v['phone'],
|
|
|
// 'school' => $v['school'].'-'.$v['grade'].$v['class'],
|
|
|
// 'state' => $state_arr[$v['state']],
|
|
|
// 'create_time' => date('Y-m-d H:i:s',$v['create_time']),
|
|
|
// 'pay_time' => date('Y-m-d H:i:s',$v['pay_time']),
|
|
|
// 'region' => $v['region'],
|
|
|
// 'beiyong_address' => $v['beiyong_address'],
|
|
|
// 'award' => $money,
|
|
|
// 'fact_award' => $fact_money,
|
|
|
// 'is_error' => $fact_money != $money ? '是' : '否'
|
|
|
// ];
|
|
|
$data[] = [
|
|
|
$v['id'],
|
|
|
$money,
|
|
|
$v['book_num'],
|
|
|
$v['name'],
|
|
|
$v['phone'],
|
|
|
$v['school'].'-'.$v['grade'].$v['class'],
|
|
|
$state_arr[$v['state']],
|
|
|
date('Y-m-d H:i:s',$v['create_time']),
|
|
|
date('Y-m-d H:i:s',$v['pay_time']),
|
|
|
$v['region'],
|
|
|
$v['beiyong_address'],
|
|
|
$money,
|
|
|
$fact_money,
|
|
|
$fact_money != $money ? '是' : '否'
|
|
|
];
|
|
|
}
|
|
|
$this->excel($user,$data);
|
|
|
print_r($arr);exit;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* 导出Excel
|
|
|
*/
|
|
|
public function excel($user,$data2)
|
|
|
{
|
|
|
//引入PHPExcel库文件
|
|
|
// Vendor('phpexcel2.PHPExcel');
|
|
|
//创建对象
|
|
|
$excel = new \PHPExcel();
|
|
|
//Excel表格式,这里简略写了8列
|
|
|
$letter = array('A', 'B', 'C', 'D', 'E', 'F', 'F', 'G','H','I','J','k','L','M','N');
|
|
|
$excel->getActiveSheet()->setCellValue("A1", "业务员名称");
|
|
|
$excel->getActiveSheet()->setCellValue("B1", $user['user_nickname']);
|
|
|
//表头数组
|
|
|
$tableheader = array('订单号', '价钱', '数量', '姓名', '电话', '学校-班级', '订单状态', '创建时间', '支付时间', '配送时间', '地区', '备用地址',
|
|
|
'应得收益', '实际收益', '是否异常');
|
|
|
//填充表头信息
|
|
|
for ($i = 1; $i < count($tableheader) + 1; $i++) {
|
|
|
$excel->getActiveSheet()->setCellValue("$letter[$i]2", "$tableheader[$i]");
|
|
|
}
|
|
|
//表格数组
|
|
|
$data = array(
|
|
|
array('1', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('2', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('3', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('4', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('5', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('6', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
array('7', 'B', 'C', 'D', 'E', 'F', 'G'),
|
|
|
);
|
|
|
// $tz = Db::name('taizhang');
|
|
|
// $data2 = $tz->field('type',true)->select();
|
|
|
//print_r($data2);exit();
|
|
|
//填充表格信息
|
|
|
for ($i = 3; $i <= count($data2) + 1; $i++) {
|
|
|
$j = 0;
|
|
|
foreach ($data2[$i - 2] as $key => $value) {
|
|
|
$excel->getActiveSheet()->setCellValue("$letter[$j]$i", "$value");
|
|
|
$j++;
|
|
|
}
|
|
|
}
|
|
|
//创建Excel输入对象
|
|
|
$write = new \PHPExcel_Writer_Excel2007($excel);
|
|
|
header("Pragma: public");
|
|
|
header("Expires: 0");
|
|
|
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
|
|
|
header("Content-Type:application/force-download");
|
|
|
header("Content-Type:application/vnd.ms-execl");
|
|
|
header("Content-Type:application/octet-stream");
|
|
|
header("Content-Type:application/download");;
|
|
|
header('Content-Disposition:attachment;filename="信息系统表.xlsx"');
|
|
|
header("Content-Transfer-Encoding:binary");
|
|
|
$write->save('php://output');
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 恢复父级id
|
|
|
* @throws \think\Exception
|
...
|
...
|
@@ -24,14 +140,93 @@ class TestController extends HomeBaseController |
|
|
* @throws \think\exception\PDOException
|
|
|
*/
|
|
|
public function test(){
|
|
|
$uids = Db::name('indent_over')->group('uid')->column('uid');
|
|
|
$indent = Db::name('indent')->whereIn('salesman_uid',$uids)->select();
|
|
|
$insert = [];
|
|
|
foreach ($indent as $v) {
|
|
|
unset($v['id']);
|
|
|
$insert[] = $v;
|
|
|
ini_set('max_execution_time', 3600);//秒为单位,自己根据需要定义
|
|
|
ini_set('memory_limit','-1');
|
|
|
// $b = Db::name('indent_pro')->where('salesman_uid',309)->update(['is_out'=>0]);
|
|
|
$page = $this->request->param('page',1);
|
|
|
$uid = Db::name('indent_pro')->where('is_out',0)->group('salesman_uid')->order('salesman_uid','desc')->value('salesman_uid');
|
|
|
if(!$uid) {
|
|
|
echo 123;exit;
|
|
|
}
|
|
|
Db::name('indent_pro')->insertAll($insert);
|
|
|
// print_r($uid);exit;
|
|
|
$list = Db::name('indent_pro')->where('salesman_uid',$uid)->paginate(50,true,['page'=>$page]);
|
|
|
$list = $list->items();
|
|
|
$state_arr = ['2'=>'待发货','3'=>'已完成','5'=>'已发货','6'=>'待收货'];
|
|
|
$i = [];
|
|
|
foreach ($list as $v) {
|
|
|
$order = Db::name('indent')->where('salesman_uid',$v['salesman_uid'])->where('order_number',$v['order_number'])
|
|
|
->whereIn('state',['2','3','5','6'])->find();
|
|
|
if(!$order) continue;
|
|
|
$school_class = $v['school'].'-'.$v['grade'].$v['class'];
|
|
|
$salesman_name = Db::name('user')->where('id',$v['salesman_uid'])->value('user_nickname');
|
|
|
$award = Db::name('money_income')->where('indent_id',$order['id'])->where('uid',$order['salesman_uid'])->value('money');
|
|
|
if($award) {
|
|
|
$award_fac = Db::name('money_income')->where('indent_id',$order['id'])->where('uid',$order['salesman_uid'])->sum('money');
|
|
|
$i[] = [
|
|
|
'state_text' => $state_arr[$order['state']],
|
|
|
'order_number' => $order['order_number'],
|
|
|
'money' => $order['money'],
|
|
|
'create_time' => date('Y-m-d H:i:s',$order['create_time']),
|
|
|
'book_num' => $order['book_num'],
|
|
|
'leave_word' => $order['leave_word'],
|
|
|
'name' => $order['name'],
|
|
|
'phone' => $order['phone'],
|
|
|
'school_class' => $school_class,
|
|
|
'salesman_name' => $salesman_name,
|
|
|
'pay_time' => date('Y-m-d H:i:s',$order['pay_time']),
|
|
|
'start_time' => $order['start_time'],
|
|
|
'end_time' => $order['end_time'],
|
|
|
'region' => $order['region'],
|
|
|
'beiyong_address' => $order['beiyong_address'],
|
|
|
'award' => $award,
|
|
|
'award_fac' => $award_fac,
|
|
|
'is_pro' => $award_fac > $award ? '是' : '否'
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
$b = true;
|
|
|
Db::startTrans();
|
|
|
if(count($i) == 0) {
|
|
|
Db::name('indent_pro')->where('salesman_uid',$uid)->update(['is_out'=>1]);
|
|
|
$page = 0;
|
|
|
} else {
|
|
|
$a = Db::name('indent_orders')->insertAll($i);
|
|
|
if(count($i) < 50) {
|
|
|
$b = Db::name('indent_pro')->where('salesman_uid',$uid)->update(['is_out'=>1]);
|
|
|
$page = 0;
|
|
|
}
|
|
|
if(!$a || !$b) Db::rollback();
|
|
|
}
|
|
|
Db::commit();
|
|
|
$page = $page + 1;
|
|
|
sleep(1);
|
|
|
$this->redirect(url('portal/test/test',['page'=>$page],true,true));
|
|
|
// $sql = Db::name('indent_pro')->getLastSql();
|
|
|
// print_r($sql);
|
|
|
// print_r($uid);exit;
|
|
|
// $page = $this->request->param('page',1,'intval');
|
|
|
// $num = 2000;
|
|
|
//// $arr = [267,295,309];
|
|
|
// $uid = Db::name('indent_over')->where('status',0)
|
|
|
//// ->whereNotIn('uid',$arr)
|
|
|
// ->group('uid')->value('uid');
|
|
|
//// print_r($uid);exit;
|
|
|
// $list = Db::name('indent')->whereIn('salesman_uid',$uid)->paginate($num,true,['page'=>$page]);
|
|
|
// $indent = $list->items();
|
|
|
// $insert = [];
|
|
|
// foreach ($indent as $v) {
|
|
|
// unset($v['id']);
|
|
|
// $insert[] = $v;
|
|
|
// }
|
|
|
// $res = $res2 = true;
|
|
|
// Db::startTrans();
|
|
|
// if(count($indent) == 0) {
|
|
|
// $res2 = Db::name('indent_over')->where('uid',$uid)->update(['status'=>1]);
|
|
|
// } else {
|
|
|
// $res = Db::name('indent_pro')->insertAll($insert);
|
|
|
// }
|
|
|
// if(!$res || !$res2) Db::rollback();
|
|
|
// Db::commit();
|
|
|
// $all = Db::name('indent_over')->select();
|
|
|
// foreach ($all as $v) {
|
|
|
// $indent = Db::name('indent')->where('id',$v['indent_id'])->where('book_num',2)->count();
|
...
|
...
|
|