|
@@ -0,0 +1,230 @@
|
|
|
|
+<?php namespace App\Http\Controllers\Admin;
|
|
|
|
+
|
|
|
|
+use App\Http\Requests\Admin\Custom as Request;
|
|
|
|
+use App\Models\City;
|
|
|
|
+use App\Models\Custom as Custom;
|
|
|
|
+use Illuminate\Support\Carbon;
|
|
|
|
+use App\Models\WeiBan\Follow as WeiBanFollow;
|
|
|
|
+use App\Models\FilesManager;
|
|
|
|
+use App\Models\WeiBan\External as WeiBanExternal;
|
|
|
|
+use App\Models\CustomClockinRecord as Model;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 客户签到记录
|
|
|
|
+ *
|
|
|
|
+ * @author jun
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+class CustomClockinRecord extends Auth{
|
|
|
|
+
|
|
|
|
+ protected function _initialize(){
|
|
|
|
+ parent::_initialize();
|
|
|
|
+ $this->assign('breadcrumb1','积分管理');
|
|
|
|
+ $this->assign('breadcrumb2','打卡记录');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 列表页
|
|
|
|
+ *
|
|
|
|
+ * */
|
|
|
|
+ public function index(Model $Model,Custom $Custom,CustomScore $CustomScore,WeiBanFollow $WeiBanFollow,City $City){
|
|
|
|
+ // 接受参数
|
|
|
|
+ $code = request('custom_code','');
|
|
|
|
+ $phone = request('phone','');
|
|
|
|
+ $username = request('username','');
|
|
|
|
+ $weibanId = request('weiban_extid','');
|
|
|
|
+ $cityId = request('city_id',0);
|
|
|
|
+ $status = request('status');
|
|
|
|
+ $startTime = request('start_time','');
|
|
|
|
+ // 编码转ID
|
|
|
|
+ $uid = $Custom->codeToId($code);
|
|
|
|
+ // 查询条件
|
|
|
|
+ $map = [];
|
|
|
|
+ // 编码ID
|
|
|
|
+ if( $uid ) $map[] = ['custom.uid','=',$uid];
|
|
|
|
+ if( $phone ) $map[] = ['custom.phone','=',$phone];
|
|
|
|
+ if( $username ) $map[] = ['custom.username','=',$username];
|
|
|
|
+ if( $cityId ) $map[] = ['custom.city_id','=',$cityId];
|
|
|
|
+ if( $weibanId ) $map[] = ['custom.weiban_extid','=',$weibanId];
|
|
|
|
+ if( $startTime ) $map[] = ['custom_clockin_record.insert_time','>=',Carbon::createFromFormat('Y-m-d',$startTime)->startOfDay()->getTimestamp()];
|
|
|
|
+ if( $startTime ) $map[] = ['custom_clockin_record.nsert_time','<=',Carbon::createFromFormat('Y-m-d',$startTime)->endOfDay()->getTimestamp()];
|
|
|
|
+ if( !is_null($status) ) $map[] = ['custom_clockin_record.status','=',$status];
|
|
|
|
+ // 查询数据
|
|
|
|
+ $list = $Model->query()
|
|
|
|
+ ->leftJoin('custom','custom.uid','=','custom_clockin_record.custom_uid')
|
|
|
|
+ ->leftJoin('score_clockin_active','score_clockin_active.id','=','custom_clockin_record.active_id')
|
|
|
|
+ ->where($map)
|
|
|
|
+ ->select(['custom.*','score_clockin_active.name as active_name','custom_clockin_record.*'])
|
|
|
|
+ ->orderByDesc('custom_clockin_record.id')
|
|
|
|
+ ->paginate(config('page_num',10))
|
|
|
|
+ ->appends(request()->all());
|
|
|
|
+ // 循环处理数据
|
|
|
|
+ foreach ($list as $key => $value) {
|
|
|
|
+ // 城市名
|
|
|
|
+ $value['city_name'] = $value['city_id'] ? $City->getOne($value['city_id'],'name') : '';
|
|
|
|
+ // id转编号
|
|
|
|
+ $value['custom_code'] = $Custom->idToCode($value['uid']);
|
|
|
|
+ // 如果不存在微伴ID
|
|
|
|
+ if( !$value['weiban_extid'] ) {
|
|
|
|
+ // 通过手机号查询注册的账号
|
|
|
|
+ $value['weiban_extid'] = (string) $WeiBanFollow->query()->where([['phone_number','=',$value['phone']]])->value('weiban_extid');
|
|
|
|
+ // 如果存在的话,修正
|
|
|
|
+ if( $value['weiban_extid'] ) $Model->edit($value['uid'],['weiban_extid'=>$value['weiban_extid']]);
|
|
|
|
+ }
|
|
|
|
+ // 重组
|
|
|
|
+ $list[$key] = $value;
|
|
|
|
+ }
|
|
|
|
+ // 获取列表
|
|
|
|
+ $cityList = $City->getCityList();
|
|
|
|
+ // 分配数据
|
|
|
|
+ $this->assign('cityList',$cityList);
|
|
|
|
+ // 分配数据
|
|
|
|
+ $this->assign('empty', '<tr><td colspan="20">~~暂无数据</td></tr>');
|
|
|
|
+ $this->assign('list',$list);
|
|
|
|
+ // 加载模板
|
|
|
|
+ return $this->fetch();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 添加
|
|
|
|
+ *
|
|
|
|
+ * */
|
|
|
|
+ public function add(Request $request,Model $Model){
|
|
|
|
+ if( request()->isMethod('post') ){
|
|
|
|
+ // 验证参数
|
|
|
|
+ $request->scene('add')->validate();
|
|
|
|
+ // 接收数据
|
|
|
|
+ // 接收数据
|
|
|
|
+ $data['username'] = request('username','');
|
|
|
|
+ $data['phone'] = request('phone','');
|
|
|
|
+ // 写入数据表
|
|
|
|
+ $uid = $Model->add($data);
|
|
|
|
+ // 如果操作失败
|
|
|
|
+ if( !$uid ) return json_send(['code'=>'error','msg'=>'新增失败']);
|
|
|
|
+ // 记录行为
|
|
|
|
+ $this->addAdminHistory(admin('uid'),$Model->getTable(),$uid,1,[],$data);
|
|
|
|
+ // 告知结果
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'新增成功','action'=>'add']);
|
|
|
|
+ }
|
|
|
|
+ // 分配数据
|
|
|
|
+ $this->assign('crumbs','新增');
|
|
|
|
+ // 加载模板
|
|
|
|
+ return $this->fetch();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改
|
|
|
|
+ *
|
|
|
|
+ * */
|
|
|
|
+ public function edit(Request $request,Model $Model,City $City){
|
|
|
|
+ // 接收参数
|
|
|
|
+ $uid = request('uid',0);
|
|
|
|
+ // 查询用户
|
|
|
|
+ $oldData = $Model->where(['uid'=>$uid])->first();
|
|
|
|
+ // 修改
|
|
|
|
+ if(request()->isMethod('post')){
|
|
|
|
+ // 验证参数
|
|
|
|
+ $request->scene('edit')->validate();
|
|
|
|
+ // 如果用户不存在
|
|
|
|
+ if( !$oldData ) return json_send(['code'=>'error','msg'=>'用户不存在']);
|
|
|
|
+ // 转数组
|
|
|
|
+ $oldData = $oldData->toArray();
|
|
|
|
+ // 接收数据
|
|
|
|
+ $data['username'] = request('username','');
|
|
|
|
+ $data['phone'] = request('phone','');
|
|
|
|
+ $data['city_id'] = request('city_id',0);
|
|
|
|
+ $data['weiban_extid'] = request('weiban_extid','');
|
|
|
|
+ // 写入数据表
|
|
|
|
+ $result = $Model->edit($uid,$data);
|
|
|
|
+ // 如果操作失败
|
|
|
|
+ if( !$result ) return json_send(['code'=>'error','msg'=>'新增失败']);
|
|
|
|
+ // 记录行为
|
|
|
|
+ $this->addAdminHistory(admin('uid'),$Model->getTable(),$uid,2,$oldData,$data);
|
|
|
|
+ // 告知结果
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'修改成功','action'=>'edit']);
|
|
|
|
+ }
|
|
|
|
+ // 错误告知
|
|
|
|
+ if( !$oldData ) return $this->error('查无数据');
|
|
|
|
+ // 获取列表
|
|
|
|
+ $cityList = $City->getCityList();
|
|
|
|
+ // 分配数据
|
|
|
|
+ $this->assign('cityList',$cityList);
|
|
|
|
+ $this->assign('oldData',$oldData);
|
|
|
|
+ $this->assign('crumbs','修改');
|
|
|
|
+ // 加载模板
|
|
|
|
+ return $this->fetch();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改状态
|
|
|
|
+ *
|
|
|
|
+ * */
|
|
|
|
+ public function set_status(Request $request,Model $Model){
|
|
|
|
+ // 验证参数
|
|
|
|
+ $request->scene('set_status')->validate();
|
|
|
|
+ // 设置状态
|
|
|
|
+ $uid = request('uid',0);
|
|
|
|
+ $status = request('status',0);
|
|
|
|
+ // 查询用户
|
|
|
|
+ $oldData = $Model->where(['uid'=>$uid])->first();
|
|
|
|
+ // 如果用户不存在
|
|
|
|
+ if( !$oldData ) return json_send(['code'=>'error','msg'=>'用户不存在']);
|
|
|
|
+ // 执行修改
|
|
|
|
+ $result = $Model->edit($uid,['status'=>$status]);
|
|
|
|
+ // 提示新增失败
|
|
|
|
+ if( !$result ) return json_send(['code'=>'error','msg'=>'设置失败']);
|
|
|
|
+ // 记录行为
|
|
|
|
+ $this->addAdminHistory(admin('uid'),$Model->getTable(),$uid,2,$oldData,['status'=>$status]);
|
|
|
|
+ // 告知结果
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 表格导入
|
|
|
|
+ *
|
|
|
|
+ * */
|
|
|
|
+ public function import_execl( Request $request,Model $Model,FilesManager $FilesManager,City $City,CustomAddr $CustomAddr,WeiBanExternal $WeiBanExternal){
|
|
|
|
+ // 验证参数
|
|
|
|
+ $request->scene('import_execl')->validate();
|
|
|
|
+ // 获取表格信息
|
|
|
|
+ $file = request()->file('custom_file');
|
|
|
|
+ // 返回结果
|
|
|
|
+ $sheetList = $FilesManager->excelToCustom($file);
|
|
|
|
+ // 如果不存在结果
|
|
|
|
+ if( isset($sheetList['error']) ) return json_send(['code'=>'error','msg'=>$sheetList['error']]);
|
|
|
|
+ // 循环表格数据
|
|
|
|
+ foreach ($sheetList as $value) {
|
|
|
|
+ // 获取城市ID
|
|
|
|
+ $value['city_id'] = 0;
|
|
|
|
+ // 存在城市名称,查询城市ID
|
|
|
|
+ if( $value['contact_city'] ) {
|
|
|
|
+ // 获取城市ID
|
|
|
|
+ $value['city_id'] = (int) $City->getIdByName($value['contact_city']);
|
|
|
|
+ // 如果城市不存在的话
|
|
|
|
+ if ( !$value['city_id'] ) return json_send(['code'=>'error','msg'=>$value['contact_city'].' => 未找到匹配的城市,请核对城市全称']);
|
|
|
|
+ }
|
|
|
|
+ // 获取手机号,查询是否用客户
|
|
|
|
+ $custom = $Model->getOneByPhone($value['phone']);
|
|
|
|
+ // 组装数据
|
|
|
|
+ $data = ['weiban_extid'=>$value['weiban_extid'],'username'=>$value['username']];
|
|
|
|
+ // 如果客户不存在
|
|
|
|
+ if( !$custom ) $data['phone'] = $value['phone'];
|
|
|
|
+ // 如果存在城市ID,才修改城市
|
|
|
|
+ if( $value['city_id'] ) $data['city_id'] = $value['city_id'];
|
|
|
|
+ // 如果存在手机号
|
|
|
|
+ $uid = $custom ? $Model->edit($custom['uid'],$data) : $Model->add($data);
|
|
|
|
+ // 如果客户存在
|
|
|
|
+ if( !$uid ) return json_send(['code'=>'error','msg'=>$value['username'].'【'.$value['phone'].'】'.'用户创建或者更新失败']);
|
|
|
|
+ // 存在详细地址,才创建地址库
|
|
|
|
+ if( $value['contact_name'] && $value['contact_phone'] && $value['contact_province'] && $value['contact_city'] && $value['contact_area'] && $value['contact_addr'] ) {
|
|
|
|
+ // 收件地址是否存在
|
|
|
|
+ $oldAddr = $CustomAddr->query()->where([['custom_uid','=',$uid]])->first();
|
|
|
|
+ // 如果不存在地址
|
|
|
|
+ if( !$oldAddr ) $CustomAddr->add(['custom_uid'=>$uid,'contact_name'=>$value['contact_name'],'contact_shop'=>$value['contact_shop'],'contact_phone'=>$value['contact_phone'],'contact_province'=>$value['contact_province'],'contact_city'=>$value['contact_city'],'contact_area'=>$value['contact_area'],'contact_addr'=>$value['contact_addr']]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 提示成功
|
|
|
|
+ return json_send(['code'=>'success','msg'=>'批量导入成功','path'=>'']);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|