$merchant_id, 'login_state' => 1, 'vid' => [['exp', 'is null'], ['eq', 0], 'or'], 'plus_vip_id' => [['exp', 'is null'], ['eq', 0], 'or'], ]; if (!empty($timeArr)) { $map['add_time'] = ['between', [strtotime($timeArr[0]), strtotime($timeArr[1])]]; } if (trim($nick_name)) { $map['nickname'] = ['like', '%' . trim($nick_name) . '%']; } //所属门店搜索:store_id,门店id if (isset($search_info['store_id']) && $search_info['store_id'] !== '') { $map['store_id'] = $search_info['store_id']; } if ($page && $limit) { // 获取列表 $list = $XcxUserModel->getSelect($map, '', 'id desc', $page . ',' . $limit); } else { // 导出 $list = $XcxUserModel->getSelect($map, ''); } $retailStoreModel = new RetailStoreModel();//门店表 $field = [ 'storetag', ]; foreach ($list as &$val) { $val['add_time'] = date('Y-m-d H:i:s', $val['add_time']); $val['link_name'] = $val['link_name'] ? $val['link_name'] : '未设置'; $val['mobile_phone'] = $val['mobile_phone'] ? $val['mobile_phone'] : '未设置'; $where = [ 'id' => $val['store_id'], ]; $retailStore = $retailStoreModel->getOrderFind($where, $field);//门店名称 $val['storetag'] = $retailStore['storetag']; } $count = $XcxUserModel->getCount($map); $result = [ 'status' => 1, 'list' => empty($list) ? [] : $list, 'count' => $count ? intval($count) : 0, ]; return $result; } /** * 变更小程序用户 * @param edit_form 表单信息 * @param param [ * merchant_id 商户id * operator_id 操作人员id * platform_type 商户平台类型 1默认系统 2微礼平台 * ] * @param type 1 商户后台 2 门店后台 */ public function changeXcxInfo($edit_form, $param, $type) { $merchant_id = $param['merchant_id']; $operator_id = $param['operator_id']; //操作人员id $platform_type = $param['platform_type']; switch ($type) { case 1: $recharge_user_type = 1; // 充值人员类型 $recharge_scene_type = 2; // 充值变动场景 $vip_change_operator = 1; // 操作记录人员类型 $log_type = 3; //日志类型 break; case 2: $recharge_user_type = 2; $recharge_scene_type = 3; $vip_change_operator = 2; $log_type = 4; break; default: // 默认商户 $recharge_user_type = 1; $recharge_scene_type = 2; $vip_change_operator = 1; $log_type = 3; break; } $time = time(); // 提交数据 if (!$edit_form['id'] || $edit_form['id'] == 0) { return ['status' => 0, 'msg' => '提交失败,请刷新重试']; } // 查询小程序用户状态 $XcxUserModel = new RetailSmallProgramUserModel(); $infoMap['id'] = $edit_form['id']; $infoMap['merchant_id'] = $merchant_id; $infoMap['vid'] = [['exp', 'is null'], ['eq', 0], 'or']; $infoMap['plus_vip_id'] = [['exp', 'is null'], ['eq', 0], 'or']; $userInfo = $XcxUserModel->getFind($infoMap); if (!$userInfo) { return ['status' => 0, 'msg' => '用户查询失败,请检查用户状态']; } // 判断表单必填 if (!$edit_form['type'] || !$edit_form['name'] || !$edit_form['mobile_phone'] || ($edit_form['balance'] && $edit_form['balance'] < 0) || ($edit_form['type'] == 2 && !$edit_form['end_time'])) { return ['status' => 0, 'msg' => '请确认表单提交是否正确']; } // 查询手机号是否可用 $phoneVerify['mobile_phone'] = $edit_form['mobile_phone']; $phoneVerify['status'] = ['neq', 2]; // 2.删除的会员 $phoneVerify['merchantid'] = $merchant_id; $RetailVipModel = new RetailVipModel(); $mobileRepeat = $RetailVipModel->getFindField($phoneVerify); if ($mobileRepeat) { return ['status' => 0, 'msg' => '该手机号已被注册,请更换手机号']; } if (!$edit_form['grade_id'] || $edit_form['grade_id'] === '') { $newVipData['grade_integral'] = 0; $grade_name = '无等级'; } else { // 查询等级 $RetailVipIntegralModel = new RetailVipIntegralModel(); $find2 = $RetailVipIntegralModel->getFind(['id' => $edit_form['grade_id']], 'min_integral,cardname'); if (!$find2) { return ['status' => 0, 'msg' => '提交失败,请检查等级是否有变动']; } else { $newVipData['grade_integral'] = $find2['min_integral']; $grade_name = $find2['cardname']; } } $pass = substr(trim($edit_form['mobile_phone']), -6); $newVipData['password'] = createPassword($pass, intval($time)); $newVipData['mobile_phone'] = $edit_form['mobile_phone']; $newVipData['balance'] = $edit_form['balance'] ? $edit_form['balance'] : 0; $newVipData['merchantid'] = $merchant_id; $newVipData['nickname'] = $edit_form['nickname'] ? $edit_form['nickname'] : ''; $newVipData['storeid'] = $edit_form['store_id']; $newVipData['name'] = $edit_form['name']; $newVipData['birthday'] = $edit_form['birthday'] ? $edit_form['birthday'] : null; $newVipData['addtime'] = $time; if ($platform_type == 2) { //Q3平台 $StoreModel = new RetailStoreModel(); $third_code = $StoreModel->getFindField([ 'id' => $edit_form['store_id'] ], 'third_code'); $thirdData = [ 'merchant_id' => $merchant_id, 'vip_info' => [ 'Code' => $edit_form['mobile_phone'], 'Source' => '后台添加', 'Customer_Code' => $third_code, 'Name' => $edit_form['name'] ] ]; if (!empty($edit_form['birthday'])) { $thirdData['vip_info']['DateOfBirth'] = "/Date(" . (newStrToTime($edit_form['birthday']) * 1000) . "+0800)/"; } $thirdData['vip_info'] = json_encode($thirdData['vip_info']); $ThirdVipClass = new Vip(); $thirdResult = $ThirdVipClass->vipInsert($thirdData); if ($thirdResult['status'] == 0) { return ['status' => 0, 'msg' => 'Q3 ERP平台添加失败' . $thirdResult['message']]; } if (!empty($thirdResult['data']) && !empty($thirdResult['data']['Code'])) { //Q3已存在更新Q3的会员信息 $third_vip = $thirdResult['data']; if (!empty($third_vip['Source'])) { $newVipData['source_channel'] = $third_vip['Source']; } if (!empty($third_vip['Name'])) { $newVipData['name'] = $third_vip['Name']; } if (!empty($third_vip['DateOfBirth'])) { $newVipData['birthday'] = date('Y-m-d', substr($third_vip['DateOfBirth'], 6, 10)); } if ($third_code != $third_vip['Customer_Code']) { $StoreModel = new RetailStoreModel(); $new_store_id = $StoreModel->getFindField([ 'third_code' => $third_vip['Customer_Code'], 'merchantid' => $merchant_id, 'state' => 0 ], 'id'); if (!empty($new_store_id)) { $newVipData['storeid'] = $new_store_id; } } } } // 添加会员 $vip_id = $RetailVipModel->addOrder($newVipData); if (!$vip_id) { return ['status' => 0, 'msg' => '变更失败']; } // 余额大于0添加记录(余额记录,变更记录) $error_journal = array(); if ($edit_form['balance'] > 0) { $newRechargeData['vid'] = $vip_id; $newRechargeData['status'] = 1; $newRechargeData['money'] = 0; $newRechargeData['all_money'] = $edit_form['balance']; $newRechargeData['scene_type'] = $recharge_scene_type; //变动场景 1收银机 2商户后台 3门店后台 4小程序 5公众号 $newRechargeData['type'] = 3; //变动类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 $newRechargeData['store_id'] = 0; $newRechargeData['add_time'] = $time; $newRechargeData['remark'] = '普通成员角色更换赠送'; $newRechargeData['state'] = 1; $newRechargeData['merchant_id'] = $merchant_id; $newRechargeData['user_type'] = $recharge_user_type; $RetailRechargeOrderModel = new RetailRechargeOrderModel(); $rechargeAddResult = $RetailRechargeOrderModel->addOrder($newRechargeData); if (!$rechargeAddResult) { array_push($error_journal, '余额记录添加失败'); } } // 修改小程序用户类型 $xcxUpdate['vid'] = $vip_id; if ($edit_form['type'] == 2) { $xcxUpdate['type'] = 2; } else { $xcxUpdate['type'] = 3; } $xcxUpdate['store_id'] = $edit_form['store_id']; $xcxUpdateResult = $XcxUserModel->updateOrder(['id' => $edit_form['id']], $xcxUpdate); if (!$xcxUpdateResult) { return ['status' => 0, 'msg' => '用户变更失败']; } // 添加plus会员 if ($edit_form['type'] == 2) { $newPlusData['vip_id'] = $vip_id; $newPlusData['xcx_vip_id'] = $edit_form['id']; $newPlusData['merchantid'] = $merchant_id; $newPlusData['storeid'] = $edit_form['store_id']; $newPlusData['addtime'] = $time; $newPlusData['start_time'] = $time; $newPlusData['end_time'] = strtotime($edit_form['end_time']); $newPlusData['status'] = 1; $PlusModel = new PlusModel(); $plus_id = $PlusModel->addPlus($newPlusData); if (!$plus_id) { return ['status' => 0, 'msg' => 'plus会员变更失败']; } // 修改用户、会员状态 $plusChangeResult = $XcxUserModel->updateOrder(['id' => $edit_form['id']], ['plus_vip_id' => $plus_id]); if (!$plusChangeResult) { array_push($error_journal, '用户plus状态修改失败'); } $updateInfo = ['plus_id' => $plus_id, 'plus_type' => 2, 'plus_state' => 1, 'nickname' => $userInfo['nickname']]; $save3 = $RetailVipModel->updateOrder(['id' => $vip_id], $updateInfo); if (!$save3) { array_push($error_journal, '常规会员plus状态修改失败'); } $grade_name = 'plus会员'; } // 判断余额 if ($edit_form['balance'] && $edit_form['balance'] > 0) { $newVipChangeData['after_balance'] = $edit_form['balance']; $newVipChangeData['before_balance'] = 0; } // 判断等级 if ($grade_name) { $newVipChangeData['before_grade'] = '无等级'; $newVipChangeData['after_grade'] = $grade_name; } $newVipChangeData['operator'] = $vip_change_operator; $newVipChangeData['operator_id'] = $operator_id; $newVipChangeData['merchant_id'] = $merchant_id; $newVipChangeData['after_phone'] = $edit_form['mobile_phone']; $newVipChangeData['add_time'] = $time; $newVipChangeData['vip_id'] = $vip_id; // 如果变更为Plus会员 存结束时间 if ($edit_form['type'] == 2) $newVipChangeData['after_plus_end_time'] = $edit_form['end_time']; $RetailVipChangeModel = new RetailVipChangeModel(); $add5 = $RetailVipChangeModel->addOrder($newVipChangeData); if (!$add5) { array_push($error_journal, 'plus记录添加失败'); } if (!$error_journal) { $res = ['status' => 1, 'msg' => '变更成功']; //操作日志记录 $source = 0; //请求来源: 0pc系统 1小助手 $type = $log_type; //平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($edit_form); //请求参数 json数据 $desc = '普通用户进行用户信息变更'; //操作行为描述 action_log($source, $type, $request_data, $desc); } else { $res = ['status' => 2, 'error_journal' => $error_journal]; } return $res; } }