repository = $repository;
}
/**
* 订单列表
* @return mixed
* @author Qinii
*/
public function lst()
{
[$page, $limit] = $this->getPage();
$where = $this->request->params(['status', 'date', 'order_sn', 'username', 'order_type', 'distribution_mode', 'keywords', 'pay_type', 'paid', 'order_ids', 'is_red_ylj', 'gzc', 'ylj_status']);
$where['mer_id'] = $this->request->merId();
return app('json')->success($this->repository->merchantGetListYhc($where, $page, $limit));
}
/**
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author xaboy
* @day 2020/6/10
*/
public function userLst()
{
[$page, $limit] = $this->getPage();
$where = [
'status' => (int)$this->request->get('status', 0),
'mer_id' => $this->request->merId()
];
if (input('uid')) {
$where['uid'] = input('uid');
}
return app('json')->success($this->repository->getList($where, $page, $limit));
}
/**
* TODO 自提订单列表
* @return mixed
* @author Qinii
* @day 2020-08-17
*/
public function takeLst()
{
[$page, $limit] = $this->getPage();
$where = $this->request->params(['date', 'order_sn', 'username']);
$where['take_order'] = 1;
$where['status'] = -1;
$where['verify_date'] = $where['date'];
unset($where['date']);
$where['mer_id'] = $this->request->merId();
return app('json')->success($this->repository->merchantGetList($where, $page, $limit));
}
/**
* 订单头部统计
* @return mixed
* @author Qinii
*/
public function chart()
{
return app('json')->success($this->repository->merchantOrderNumber($this->request->merId()));
}
/**
* TODO 自提订单头部统计
* @return mixed
* @author Qinii
* @day 2020-08-17
*/
public function takeChart()
{
return app('json')->success($this->repository->merchantOrderNumber($this->request->merId(),1));
}
/**
* TODO 订单类型
* @return mixed
* @author Qinii
* @day 2020-08-15
*/
public function orderType()
{
$where['mer_id'] = $this->request->merId();
return app('json')->success($this->repository->orderType($where));
}
/**
* @param $id
* @return mixed
* @author Qinii
*/
public function deliveryForm($id)
{
if(!$this->repository->merDeliveryExists($id,$this->request->merId()))
return app('json')->fail('订单信息或状态错误');
return app('json')->success(formToData($this->repository->sendProductForm($id)));
}
/**
* @param $id
* @return mixed
* @author Qinii
*/
public function delivery($id)
{
if(!$this->repository->merDeliveryExists($id,$this->request->merId()))
return app('json')->fail('订单信息或状态错误');
$data = $this->request->params(['delivery_type','delivery_name','delivery_id']);
if(preg_match('/([\x81-\xfe][\x40-\xfe])/',$data['delivery_id'])) return app('json')->fail('请输入正确的单号/电话');
$this->repository->delivery($id,$data);
return app('json')->success('发货成功');
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function updateForm($id)
{
if(!$this->repository->merStatusExists($id,$this->request->merId()))
return app('json')->fail('订单信息或状态错误');
return app('json')->success(formToData($this->repository->form($id)));
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function update($id)
{
$data = $this->request->params(['total_price','pay_price','total_postage','pay_postage']);
if($data['total_price'] < 0 || $data['pay_price'] < 0 || $data['total_postage'] < 0 || $data['pay_postage'] < 0 )
return app('json')->fail('金额不可未负数');
if(!$this->repository->merStatusExists($id,$this->request->merId()))
return app('json')->fail('订单信息或状态错误');
$this->repository->eidt($id,$data);
return app('json')->success('修改成功');
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function detail($id)
{
$data = $this->repository->getOne($id,$this->request->merId());
if(!$data)
return app('json')->fail('数据不存在');
return app('json')->success($data);
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function status($id)
{
[$page, $limit] = $this->getPage();
if(!$this->repository->getOne($id,$this->request->merId()))
return app('json')->fail('数据不存在');
return app('json')->success($this->repository->getOrderStatus($id,$page, $limit));
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function remarkForm($id)
{
return app('json')->success(formToData($this->repository->remarkForm($id)));
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function remark($id)
{
if(!$this->repository->getOne($id,$this->request->merId()))
return app('json')->fail('数据不存在');
$data = $this->request->params(['remark']);
$this->repository->update($id,$data);
return app('json')->success('备注成功');
}
/**
* 核销
* @param $code
* @author xaboy
* @day 2020/8/15
*/
public function verify($code)
{
$this->repository->verifyOrder($code, $this->request->merId(), 0);
return app('json')->success('订单核销成功');
}
/**
* 自提
* @param $code
* @author xaboy
* @day 2020/8/15
*/
public function carry($code)
{
$order_id= input('order_id');
$this->repository->carryOrder($code, $this->request->merId(), 0,$order_id);
return app('json')->success('订单核销成功');
}
/**
* 手动操作订单为 已自提 关单
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function carryByWithoutCode()
{
$order_id = input('order_id');
$this->repository->carryOrder(null, $this->request->merId(), 0, $order_id);
return app('json')->success('订单核销成功');
}
/**
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-11
*/
public function delete($id)
{
if(!$this->repository->userDelExists($id,$this->request->merId()))
return app('json')->fail('订单信息或状态错误');
$data['is_system_del'] = 1;
$this->repository->update($id,$data);
return app('json')->success('删除成功');
}
/**
* TODO 快递查询
* @param $id
* @return mixed
* @author Qinii
* @day 2020-06-25
*/
public function express($id)
{
if(!$this->repository->getWhereCount(['order_id' => $id,'mer_id' => $this->request->merId(),'delivery_type' =>1]))
return app('json')->fail('订单信息或状态错误');
return app('json')->success($this->repository->express($id));
}
/**
* TODO
* @param $id
* @return mixed
* @author Qinii
* @day 2020-07-30
*/
public function reList($id)
{
[$page,$limit] = $this->getPage();
$make = app()->make(MerchantReconciliationRepository::class);
if(!$make->getWhereCount(['mer_id' => $this->request->merId(),'reconciliation_id' => $id]))
return app('json')->fail('数据不存在');
$where = ['reconciliation_id' => $id,'type' => 0];
return app('json')->success($this->repository->reconList($where,$page,$limit));
}
/**
* TODO 导出文件
* @author Qinii
* @day 2020-07-30
*/
public function excel()
{
$where = $this->request->params(['status', 'date', 'order_sn', 'username', 'order_type', 'keywords', 'pay_type', 'paid', 'order_ids', 'is_red_ylj', 'ylj_status']);
$where['mer_id'] = $this->request->merId();
$data=$this->repository->merchantGetListYhc($where, 1, 10000);
if($data['count']<1){
return app('json')->fail('没有数据');
}
$list=$this->orderList2($data['list']->toArray());
// var_dump($list);die;
app()->make(ExcelRepository::class)->create($list, $this->request->adminId(), 'order', $this->request->merId());
return app('json')->success('开始导出数据');
}
public function orderList2(array $data){
$result = [];
if(empty($data)) return $result;
$i = 1;
// '序号','订单编号','收货人','商品信息','实际支付', '支付类型','支付方式','支付状态',订单状态'下单时间','养老金','养老金状态',
foreach ($data as $item){
if($item['status']==5){
$item['pay_price']='0';
}
$item['leixing']='';
$item['ddzt']='';
$item['is_red_ylj_text']='未结算';
if($item['paid']==1){
if($item['pay_type']==0){
$item['leixing']='虚拟支付';
}else if ($item['pay_type']==1){
$item['leixing']='微信支付';
}else if ($item['pay_type']==5){
$item['leixing']='红积分兑换';
}
}
if($item['status'] == 5) $item['ddzt']='待付款';
if($item['status'] == 0) $item['ddzt']='待发货';
if($item['status'] == 1) $item['ddzt']='待收货';
if($item['status'] == 2) $item['ddzt']='待评价';
if($item['status'] == 3) $item['ddzt']='已完成';
if($item['status'] == 4) $item['ddzt']='已申请退款';
if($item['status'] == -1) $item['ddzt']='已退款';
if($item['status'] == 6) $item['ddzt']='已取消';
if($item['is_red_ylj']==1){
$item['is_red_ylj_text']='待审核';
}
if($item['is_red_ylj']==2){
$item['is_red_ylj_text']='已结算';
}
$item['sp']='';
$item['sp_num']='';
//
//
//
//
//
{{ val.cart_info.product.store_name + ' | ' }}{{ val.cart_info.productAttr.sku }}
//
// {{ '¥'+ val.cart_info.productAttr.price + ' x '+ val.product_num }}
// (-{{ val.product_num - val.refund_num }})
//
//
foreach ($item['orderProduct'] as $vv){
$item['sp'].=$vv['cart_info']['product']['store_name'].' ';
$item['sp_num'].=$vv['cart_info']['productAttr']['price'].' x' . $vv['product_num'].' ';
}
$result[] = [
$i,
$item['order_sn'],
$item['real_name'],
$item['user_phone'],
$item['sp'],
$item['sp_num'],
$item['pay_price'],
$item['leixing'],
$item['paid'] ? '已支付':'未支付',
$item['ddzt'],
$item['create_time'] ,
$item['ylj'] ,
$item['is_red_ylj_text'] ,
];
$i++;
}
return $result;
}
/**
* TODO 打印小票
* @param $id
* @return mixed
* @author Qinii
* @day 2020-07-30
*/
public function printer($id)
{
$merId = $this->request->merId();
if(!merchantConfig($merId,'printing_status'))
return app('json')->fail('未开启打印机设置');
if(!$this->repository->getOne($id,$merId))
return app('json')->fail('数据不存在');
$this->repository->printer($id,$merId);
return app('json')->success('打印成功');
}
/**
* @param $id
* @param StoreGroupOrderRepository $groupOrderRepository
* @param repository $orderRepository
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author xaboy
* @day 2020/6/10
*/
public function cancelGroupOrder($id, StoreGroupOrderRepository $groupOrderRepository, StoreOrderRepository $orderRepository)
{
$data = $this->request->params(['change_message', 'remark']);
$merId = $this->request->merId();
$order = $orderRepository->getWhere(['group_order_id' => $id]);
if ($order['mer_id'] != $merId)
return app('json')->fail('数据不存在');
try {
$groupOrderRepository->cancel((int)$id, 0, $data['change_message'], $data['remark']);
} catch (\Throwable $e) {
Log::error('关闭订单失败:' . json_encode([
'error_message' => $e->getMessage(),
'error_file' => $e->getFile(),
'error_line' => $e->getLine(),
'error_code' => $e->getCode(),
'exception_class' => get_class($e),
'trace' => $e->getTraceAsString()
], JSON_UNESCAPED_UNICODE));
return app('json')->fail('关闭订单失败');
}
return app('json')->success('取消成功');
}
//设置成支付成功
public function order_zhifu($id)
{
$admin_id = $this->request->adminId();
$admin_info = Db::name('merchant_admin')->where('merchant_admin_id',$admin_id)->find();
if(!$admin_info){
return app('json')->fail('没有权限');
}
if($admin_info['roles'] && !in_array('53',explode(',',$admin_info['roles']))){
return app('json')->fail('没有权限');
}
$domain = $this->request->domain();
$order=Db::name('store_order')->find($id);
if(!$order){
return app('json')->fail('数据不存在');
}
if($order['paid']!=0 || $order['status']!=5){
return app('json')->fail('订单不是待支付状态');
}
// $pay_type=5;
$group_order=Db::name('store_group_order') -> where('group_order_id',$order['group_order_id']) -> find();
Db::name('store_group_order') -> where('group_order_id',$order['group_order_id']) -> update(['rand'=>mt_rand(1000,9999)]);
$orderSn = $group_order['group_order_sn'];
$groupOrder = app()->make(StoreGroupOrderRepository::class)->getWhere(['group_order_sn' => $orderSn]);
if (!$groupOrder || $groupOrder->paid == 1) return;
$total_price=$order['total_price']+$order['youhui_price'];
$pay_price=$order['pay_price']+$order['youhui_price'];
Db::name('store_order')->where('order_id',$id)->update(['total_price'=>$total_price,'pay_price'=>$pay_price,'youhui_price'=>0]);
app()->make(StoreOrderRepository::class)->paySuccess($groupOrder);
return app('json')->success('设置成功');
// event('pay_success_order', ['order_sn' => $requestId[0],'pay_type'=>$pay_type]);
// dump('成功');
// dump($this->randomFromDev(20));
}
/**
* 判断是不是红积分支付的订单
* @return mixed
*/
public function order_red_num()
{
$order_ids=input('order_ids','');
$merId = $this->request->merId();
$where['o.paid']=1;
// $where['o.pay_type'] = 5;
$where['o.is_red_ylj']=0;
$where['o.mer_id']=$merId;
$where['u.commission_type']=5;
$where['u.gzc']=3;
$where['u.status']=0;
$order=Db::name('store_order')
->alias('o')
->join('user_bill u','u.order_sn=o.order_sn')
->where($where)
->whereIN('o.pay_type',[0,5])
->whereIn('o.order_id',$order_ids)
->column('o.order_id,o.order_sn,u.number,u.mark');
if($order){
$data['num']=count($order);
$order_ids2=[];
$ylj=0;
foreach ($order as $v){
$order_ids2[]=$v['order_id'];
$ylj+=$v['number'];
}
$data['order_ids']=implode(',',$order_ids2);
$data['ylj']=$ylj;
$data['company_name']='北京天地博爱';
$data['company_bank_name']='开户行开户行开户行开户行';
$data['company_bank_card']='银行卡号银行卡号银行卡号银行卡号';
return app('json')->success('ok',$data);
}
return app('json')->fail('只能结算红积分和虚拟支付类型的订单~');
}
/**
* 养老金提交打款凭证
* @return mixed
*/
public function order_red_add()
{
$order_ids=input('order_ids','');
$pics=input('pics','');
if($order_ids==''){
return app('json')->fail('只能结算红积分和虚拟支付类型的订单~');
}
if($pics==''){
return app('json')->fail('请上传打款凭证');
}
$merId = $this->request->merId();
$where['o.paid']=1;
// $where['o.pay_type'] = 5;
$where['o.is_red_ylj']=0;
$where['o.mer_id']=$merId;
$where['u.commission_type']=5;
$where['u.gzc']=3;
$where['u.status']=0;
$order=Db::name('store_order')
->alias('o')
->join('user_bill u','u.order_sn=o.order_sn')
->where($where)
->whereIN('o.pay_type',[0,5])
->whereIn('o.order_id',$order_ids)
->column('o.order_id,o.order_sn,u.number,u.mark');
if($order){
$data['num']=count($order);
$order_ids2=[];
$ylj=0;
foreach ($order as $v){
$order_ids2[]=$v['order_id'];
$ylj+=$v['number'];
}
$data['order_ids']=implode(',',$order_ids2);
$data['ylj']=$ylj;
$data['pics']=$pics;
$data['mer_id']=$merId;
$re=Db::name('enterprise_red_order_voucher')->insert($data);
Db::name('store_order')->whereIn('order_id',$order_ids2)->where('is_red_ylj',0)->update(['is_red_ylj'=>1]);
if($re){
return app('json')->success('提交成功');
}
return app('json')->fail('提交失败');
}
return app('json')->fail('只能结算红积分和虚拟支付类型的订单~');
}
/**
* 养老金打款凭证 列表
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function order_red_list()
{
[$page, $limit] = $this->getPage();
$where = $this->request->params(['status', 'date']);
$where['mer_id'] = $this->request->merId();
$query =Db::name('enterprise_red_order_voucher')->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
getModelTime($query, $where['date']);
})->when(isset($where['status']) && $where['status'] !== '', function ($query) use ($where) {
$query->where('status',$where['status']);
});
$data['count'] = $query->count();
$data['list'] = $query->page($page, $limit)->order('id desc')->select();
return app('json')->success('ok',$data);
}
public function reward_list()
{
[$page, $limit] = $this->getPage();
$where = $this->request->params(['type', 'account', 'date','identity']);
$where['b.mer_id'] = $this->request->merId();
$query =Db::name('enterprise_user_bill')->alias('b')->join('user u','u.uid=b.uid')->join('enterprise_user eu','eu.uid=b.uid')->field('b.*,u.nickname,u.account,eu.identity')
->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
getModelTime($query, $where['date'],'b.create_time');
})->when(isset($where['type']) && $where['type'] !== '', function ($query) use ($where) {
$query->where('b.type',$where['type']);
})->when(isset($where['identity']) && $where['identity'] !== '', function ($query) use ($where) {
$query->where('eu.identity',$where['identity']);
})->when(isset($where['account']) && $where['account'] !== '', function ($query) use ($where) {
$query->whereLike('u.account','%'.$where['account'].'%');
});
$query->where('type','<>',8);
$data['count'] = $query->count();
$data['list'] = $query->page($page, $limit)->order('b.enterprise_user_bill desc')->select()->each(function ($v) use ($where){
if($v['identity']==0){
$identity_name='普通用户';
}else if ($v['identity']==100){
$identity_name='合伙人';
}else{
$identity_name=Db::name('enterprise_performance_divvy')->where('state',1)->where('mer_id', $where['b.mer_id'])->where('id',$v['identity'])->value('name');
}
$v['identity_name']=$identity_name?$identity_name:'普通用户';
return $v;
});
$count = $query->whereIn('type', [1,2,3,4,6,7])->sum('money');
$query_sql_1 = clone $query;
$query_sql_2 = clone $query;
$query_sql_3 = clone $query;
$query_sql_4 = clone $query;
$query_sql_6 = clone $query;
$query_sql_7 = clone $query;
//type 1-推荐奖 2-业绩奖 3-服务中心分红 4-推荐代理商收益 5- 消费增值
$count1 = $query_sql_1->where('type', 1)->sum('money');
$count2 = $query_sql_2->where('type', 2)->sum('money');
$count3 = $query_sql_3->where('type', 3)->sum('money');
$count4 = $query_sql_4->where('type', 4)->sum('money');
$count6 = $query_sql_6->where('type', 6)->sum('money');
$count7 = $query_sql_7->where('type', 7)->sum('money');
$data['countmoyer']=[
['className' => 'el-icon-s-goods', 'count' => $count, 'field' => '元', 'name' => '奖励总额', 'info' => '奖励总额 = 分享奖+业绩奖+代理商分红+推荐代理商收益+运营中心收益+人工奖励佣金'],
['className' => 'el-icon-s-goods', 'count' => $count1, 'field' => '元', 'name' => '分享奖', 'info' => ''],
['className' => 'el-icon-s-goods', 'count' => $count2, 'field' => '元', 'name' => '业绩奖', 'info' => ''],
['className' => 'el-icon-s-goods', 'count' => $count3, 'field' => '元', 'name' => '代理商分红', 'info' => ''],
['className' => 'el-icon-s-goods', 'count' => $count4, 'field' => '元', 'name' => '推荐代理商收益', 'info' => ''],
['className' => 'el-icon-s-goods', 'count' => $count6, 'field' => '元', 'name' => '运营中心收益', 'info' => ''],
['className' => 'el-icon-s-goods', 'count' => $count7, 'field' => '元', 'name' => '人工奖励佣金', 'info' => ''],
];
return app('json')->success('ok', $data);
}
//商户后台-奖励统计 导出功能
public function reward_excel()
{
$where = $this->request->params(['type', 'account', 'date', 'identity']);
$where['b.mer_id'] = $this->request->merId();
$query = Db::name('enterprise_user_bill')->alias('b')->join('user u', 'u.uid=b.uid')->join('enterprise_user eu', 'eu.uid=b.uid')->field('b.*,u.nickname,u.account,eu.identity')
->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
getModelTime($query, $where['date'], 'b.create_time');
})->when(isset($where['type']) && $where['type'] !== '', function ($query) use ($where) {
$query->where('b.type', $where['type']);
})->when(isset($where['identity']) && $where['identity'] !== '', function ($query) use ($where) {
$query->where('eu.identity', $where['identity']);
})->when(isset($where['account']) && $where['account'] !== '', function ($query) use ($where) {
$query->whereLike('u.account', '%' . $where['account'] . '%');
});
$list = $query->order('b.enterprise_user_bill desc')->select();
foreach ($list as $k=>$v){
$v['type_name']='';
$v['identity_name']='';
if($v['type'] == 1) $v['type_name']='分享奖';
if($v['type'] == 2) $v['type_name']='业绩奖';
if($v['type'] == 3) $v['type_name']='代理商分红';
if($v['type'] == 4) $v['type_name']='推荐代理商收益';
if($v['type'] == 5) $v['type_name']='消费增值系统佣金';
if($v['identity'] == 0){
$v['identity_name']='普通用户';
}else if($v['identity'] == 100){
$v['identity_name']='合伙人';
}else{
$identity_name=Db::name('enterprise_performance_divvy')->where('state',1)->where('mer_id', $where['b.mer_id'])->where('id',$v['identity'])->value('name');
$v['identity_name']=$identity_name?$identity_name:'普通用户';
}
$arr[]=array(
$v['enterprise_user_bill'],
$v['create_time'],
$v['nickname'],
$v['account'],
$v['type_name'],
$v['money'],
$v['identity_name'],
$v['title'],
);
}
$header = [
'ID','创建时间','用户昵称','用户账号(手机号)','佣金名称','金额(元)','当前身份','奖励来源'
];
$filename = '奖励统计'.date('YmdHis').'_'.rand(10000,99999);
$title = '奖励统计';
$name = '奖励统计';
$info = '生成时间:' . date('Y-m-d H:i:s',time());
$suffix='xlsx';
$path='extract';
unset($_instance);
$_instance = SpreadsheetExcelService::instance_xin();
$_path =$_instance
->createOrActive()
->setExcelHeader($header)
->setExcelTile($title, $name, $info)
->setExcelContent($arr)
->excelSave($filename, $suffix, $path);
$data= [
'name' => $filename.'.'.$suffix,
'status' => 1,
'path' => '/'.$_path
];
return app('json')->success('ok',$data);
}
}