You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
949 lines
41 KiB
949 lines
41 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
|
|
class Housekeep
|
|
{
|
|
/**
|
|
* Comment: 默认服务类型列表
|
|
* Author: wlf
|
|
* Date: 2021/03/31 15:33
|
|
* @return array
|
|
*/
|
|
public static function defaultType()
|
|
{
|
|
global $_W;
|
|
return [
|
|
[
|
|
'title' => '殡葬服务',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/bzfw.png',
|
|
'list' => [
|
|
'墓地',
|
|
'殡葬用品',
|
|
'白事承办'
|
|
],
|
|
],
|
|
[
|
|
'title' => '管道疏通',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/gdst.png',
|
|
'list' => [
|
|
'马桶疏通',
|
|
'下水道疏通',
|
|
'管道安装改造',
|
|
'打捞',
|
|
'化粪池清理',
|
|
],
|
|
],
|
|
[
|
|
'title' => '门锁服务',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/msfw.png',
|
|
'list' => [
|
|
'开锁',
|
|
'换锁',
|
|
'修锁',
|
|
'配钥匙',
|
|
],
|
|
],
|
|
[
|
|
'title' => '房屋维护',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/fwwx.png',
|
|
'list' => [
|
|
'卫浴安装维修',
|
|
'灶具安装维修',
|
|
'灯具安装维修',
|
|
'防水补漏',
|
|
'电路安装维修',
|
|
'打孔',
|
|
'粉刷防腐',
|
|
'门窗安装维修',
|
|
'暖气安装维修',
|
|
],
|
|
],
|
|
[
|
|
'title' => '家电维修',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/jdwx.png',
|
|
'list' => [
|
|
'电视维修',
|
|
'冰箱维修',
|
|
'空调维修',
|
|
'洗衣机维修',
|
|
'厨房家电维修',
|
|
'热水器维修',
|
|
],
|
|
],
|
|
[
|
|
'title' => '衣服洗护',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/ywxf.png',
|
|
'list' => [
|
|
'洗衣店',
|
|
'皮具养护',
|
|
'衣服鞋包改制',
|
|
],
|
|
],
|
|
[
|
|
'title' => '生活配送',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/shpt.png',
|
|
'list' => [
|
|
'跑腿服务',
|
|
'蔬菜水果',
|
|
'粮油副食',
|
|
'液化气煤气',
|
|
'桶装水',
|
|
'医院挂号',
|
|
'代排队',
|
|
'派发传单',
|
|
'机场接送',
|
|
'专人专送',
|
|
],
|
|
],
|
|
[
|
|
'title' => '鲜花绿植',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/xhlz.png',
|
|
'list' => [
|
|
'鲜花',
|
|
'绿植盆栽',
|
|
'园林园艺',
|
|
'仿真花饰',
|
|
],
|
|
],
|
|
[
|
|
'title' => '二手回收',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/eshs.png',
|
|
'list' => [
|
|
'手机回收',
|
|
'电器回收',
|
|
'家具回收',
|
|
'数码回收',
|
|
'金银回收',
|
|
'奢侈品回收',
|
|
'设备回收',
|
|
'建筑废料',
|
|
'库存积压',
|
|
'纺织皮革',
|
|
],
|
|
],
|
|
[
|
|
'title' => '搬家搬运',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/bjby.png',
|
|
'list' => [
|
|
'居民搬家',
|
|
'空调移机',
|
|
'公司搬家',
|
|
'搬家搬场',
|
|
'长途搬家',
|
|
'设备搬迁',
|
|
'起重吊装',
|
|
],
|
|
],
|
|
[
|
|
'title' => '保姆月嫂',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/bmys.png',
|
|
'list' => [
|
|
'保姆',
|
|
'钟点工',
|
|
'月嫂',
|
|
'陪护',
|
|
'育婴育儿师',
|
|
'催乳师',
|
|
],
|
|
],
|
|
[
|
|
'title' => '保洁清洗',
|
|
'img' => $_W['siteroot'].'addons/'.MODULE_NAME.'/plugin/housekeep/web/resource/image/bjqx.png',
|
|
'list' => [
|
|
'家庭保洁',
|
|
'物业保洁',
|
|
'开荒保洁',
|
|
'高空清洗',
|
|
'灯具清洗',
|
|
'油烟机清洗',
|
|
'地毯清洗',
|
|
'空调清洗',
|
|
'沙发清洗',
|
|
'地板打蜡',
|
|
'石材养护翻新',
|
|
'玻璃清洗',
|
|
'墙纸清洗',
|
|
'除虫除蚁',
|
|
'空气净化',
|
|
],
|
|
],
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 获取服务类目列表
|
|
* Author: wlf
|
|
* Date: 2021/04/12 10:54
|
|
* @return array
|
|
*/
|
|
public static function getCategory()
|
|
{
|
|
global $_W;
|
|
//一级分类获取
|
|
$categoryes = pdo_getall(PDO_NAME.'housekeep_type',[
|
|
'uniacid' => $_W['uniacid'],
|
|
'aid' => $_W['aid'],
|
|
'status' => 1,
|
|
'onelevelid' => 0
|
|
],['id','title'],'','sort DESC,id DESC');
|
|
//二级分类信息获取
|
|
foreach ($categoryes as $key => &$val) {
|
|
$val['list'] = pdo_getall(PDO_NAME.'housekeep_type',[
|
|
'uniacid' => $_W['uniacid'],
|
|
'aid' => $_W['aid'],
|
|
'status' => 1,
|
|
'onelevelid' => $val['id'],
|
|
],['id','title'],'','sort DESC,id DESC');
|
|
//兼容 删除没有二级分类的一级分类信息
|
|
if (!$val['list']) {
|
|
unset($categoryes[$key]);
|
|
}
|
|
}
|
|
$newcategoryes = [];
|
|
foreach ($categoryes as $ca){
|
|
$newcategoryes[] = $ca;
|
|
}
|
|
return $newcategoryes;
|
|
}
|
|
/**
|
|
* Comment: 获取商户服务类目列表
|
|
* Author: wlf
|
|
* Date: 2021/05/24 10:54
|
|
* @return array
|
|
*/
|
|
public static function getStoreCategory($sid,$type){
|
|
global $_W;
|
|
if($type == 1){
|
|
$type = 3;
|
|
}
|
|
//一级获取
|
|
$categoryes = pdo_fetchall("SELECT distinct a.id,a.title FROM ".tablename(PDO_NAME."housekeep_type")." a LEFT JOIN".tablename('wlmerchant_housekeep_relation')." b ON a.id = b.onelevelid WHERE a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} AND a.status = 1 AND a.onelevelid = 0 AND b.type = {$type} AND b.objid = {$sid} ORDER BY a.sort DESC,a.id DESC");
|
|
//二级分类信息获取
|
|
foreach ($categoryes as $key => &$val) {
|
|
$val['list'] = pdo_fetchall("SELECT distinct a.id,a.title FROM ".tablename(PDO_NAME."housekeep_type")." a LEFT JOIN".tablename('wlmerchant_housekeep_relation')." b ON a.id = b.twolevelid WHERE a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} AND a.status = 1 AND a.onelevelid = {$val['id']} AND b.type = {$type} AND b.objid = {$sid} ORDER BY a.sort DESC,a.id DESC");
|
|
//兼容 删除没有二级分类的一级分类信息
|
|
if (!$val['list']) {
|
|
unset($categoryes[$key]);
|
|
}
|
|
}
|
|
return $categoryes;
|
|
}
|
|
|
|
/**
|
|
* Comment: 处理图片集
|
|
* Author: wlf
|
|
* Date: 2021/04/28 15:16
|
|
* @return array
|
|
*/
|
|
public static function beautifyImgInfo($imgs)
|
|
{
|
|
global $_W;
|
|
$imgs = unserialize($imgs);
|
|
if (empty($imgs)) {
|
|
$imgs = [];
|
|
} else {
|
|
foreach ($imgs as &$th) {
|
|
$th = tomedia($th);
|
|
}
|
|
}
|
|
return $imgs;
|
|
}
|
|
|
|
|
|
/**
|
|
* Comment: 查询关联服务类目
|
|
* Author: wlf
|
|
* Date: 2021/05/06 15:29
|
|
* @return array
|
|
*/
|
|
public static function getRelation($id,$type,$more = 0){
|
|
if(empty($id)){
|
|
$catearray = [];
|
|
}else{
|
|
if($more > 0){
|
|
$catearray = pdo_fetchall("SELECT b.id,b.title FROM ".tablename('wlmerchant_housekeep_relation')." a LEFT JOIN".tablename('wlmerchant_housekeep_type')." b ON a.twolevelid = b.id WHERE a.objid = {$id} AND a.type = {$type} ORDER BY b.sort DESC,b.id DESC");
|
|
}else{
|
|
$catearray = pdo_fetchall("SELECT b.title FROM ".tablename('wlmerchant_housekeep_relation')." a LEFT JOIN".tablename('wlmerchant_housekeep_type')." b ON a.twolevelid = b.id WHERE a.objid = {$id} AND a.type = {$type} ORDER BY b.sort DESC,b.id DESC");
|
|
$catearray = array_column($catearray,'title');
|
|
}
|
|
}
|
|
return $catearray;
|
|
}
|
|
|
|
/**
|
|
* Comment: 查询评论详细信息
|
|
* Author: wlf
|
|
* Date: 2021/05/08 18:55
|
|
* @return array
|
|
*/
|
|
public static function getCommentInfo($com){
|
|
global $_W;
|
|
$member = pdo_get('wlmerchant_member',array('id' => $com['mid']),array('nickname','avatar'));
|
|
$com['nickname'] = $member['nickname'];
|
|
$com['avatar'] = tomedia($member['avatar']);
|
|
$com['createtime'] = date('m-d H:i',$com['createtime']);
|
|
$com['pic'] = Housekeep::beautifyImgInfo($com['pic']);
|
|
$com['replypicone'] = Housekeep::beautifyImgInfo($com['replypicone']);
|
|
$com['replytotal'] = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('wlmerchant_housekeep_reply')." WHERE cid = {$com['id']}");
|
|
$com['praisetotal'] = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('wlmerchant_housekeep_praise')." WHERE cid = {$com['id']}");
|
|
$com['replylist'] = pdo_fetchall("SELECT a.id,a.content,b.nickname FROM ".tablename(PDO_NAME."housekeep_reply")." a LEFT JOIN".tablename('wlmerchant_member')." b ON a.smid = b.id WHERE cid = {$com['id']} LIMIT 5");
|
|
$com['praiseflag'] = pdo_getcolumn(PDO_NAME.'housekeep_praise',array('cid'=>$com['id'],'mid'=>$_W['mid']),'id');
|
|
$com['praiseflag'] = $com['praiseflag'] ? 1 : 0;
|
|
return $com;
|
|
}
|
|
|
|
/**
|
|
* Comment: 判断是否需要审核
|
|
* Author: wlf
|
|
* Date: 2021/05/19 17:31
|
|
* $type 1=商户 2个人
|
|
* $$project 1=需求 2=服务
|
|
* @return array
|
|
*/
|
|
public static function getStatus($type,$objid,$set,$project){
|
|
//判断权限以及是否需要审核
|
|
$objname = '';
|
|
if($type == 1){
|
|
if($project == 1){
|
|
if($set['demandpass'] == 2){
|
|
$attinfo = Attestation::checkAttestation(2,$objid);
|
|
if(empty($attinfo['attestation'])){
|
|
$check = 1;
|
|
}
|
|
}else if(empty($set['demandpass'])){
|
|
$check = 1;
|
|
}
|
|
}else if($project == 2){
|
|
$merchant = pdo_get('wlmerchant_merchantdata',array('id' => $objid),array('storename','groupid'));
|
|
$objname = $merchant['storename'];
|
|
if($set['servicepass'] == 2){
|
|
$attinfo = Attestation::checkAttestation(2,$objid);
|
|
if(empty($attinfo['attestation'])){
|
|
$check = 1;
|
|
}
|
|
}else if(empty($set['servicepass'])){
|
|
$check = 1;
|
|
}
|
|
}
|
|
}else if($type == 2){
|
|
if($project == 1){
|
|
if($set['demandpass'] == 2){
|
|
$attinfo = Attestation::checkAttestation(1,$objid);
|
|
if(empty($attinfo['attestation'])){
|
|
$check = 1;
|
|
}
|
|
}else if(empty($set['demandpass'])){
|
|
$check = 1;
|
|
}
|
|
}else if($project == 2){
|
|
$artificer = pdo_get('wlmerchant_housekeep_artificer',array('id' => $objid),array('mid','name','mealid'));
|
|
$objname = $artificer['name'];
|
|
$objid = $artificer['mid'];
|
|
if($set['servicepass'] == 2){
|
|
$attinfo = Attestation::checkAttestation(1,$objid);
|
|
if(empty($attinfo['attestation'])){
|
|
$check = 1;
|
|
}
|
|
}else if(empty($set['servicepass'])){
|
|
$check = 1;
|
|
}
|
|
}
|
|
}
|
|
if($check > 0){
|
|
$status = 5;
|
|
}else{
|
|
$status = 1;
|
|
}
|
|
return ['status' => $status,'objname'=> $objname];
|
|
}
|
|
|
|
|
|
/**
|
|
* Comment: 判断权限
|
|
* Author: wlf
|
|
* Date: 2021/05/28 17:50
|
|
* $type 1=个人 2商户
|
|
* $$project 1=需求 2=服务
|
|
* @return array
|
|
*/
|
|
public static function getJurisdiction($type,$objid,$project){
|
|
global $_W;
|
|
$set = Setting::agentsetting_read('housekeep');
|
|
$attestationRight = unserialize($set['attestationRight']);
|
|
if(in_array($project,$attestationRight)){
|
|
$attinfo = Attestation::checkAttestation($type,$objid);
|
|
if(empty($attinfo['attestation'])){
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Comment: 获取服务项目基础信息
|
|
* Author: wlf
|
|
* Date: 2021/05/24 13:48
|
|
* @return array
|
|
*/
|
|
public static function getServiceBaseInfo($id){
|
|
$service = pdo_get('wlmerchant_housekeep_service',array('id' => $id),array('id','title','thumb','pricetype','price','salenum','unit'));
|
|
$service['thumb'] = tomedia($service['thumb']);
|
|
$service['price'] = self::getServicePrice($service['price'],$service['pricetype'],$service['unit']);
|
|
return $service;
|
|
}
|
|
|
|
/**
|
|
* Comment: 服务金额优化
|
|
* Author: wlf
|
|
* Date: 2021/05/24 13:58
|
|
* @return array
|
|
*/
|
|
public static function getServicePrice($price,$pricetype,$unit){
|
|
if($pricetype == 1){
|
|
$price = '预约金¥'.$price.'/'.$unit;
|
|
}else if($pricetype == 2){
|
|
$price = '¥'.$price.'/'.$unit;
|
|
}else{
|
|
$price = '价格面议';
|
|
}
|
|
return $price;
|
|
}
|
|
|
|
|
|
/**
|
|
* Comment: 计算结算金额
|
|
* Author: wlf
|
|
* Date: 2021/05/07 16:55
|
|
* @return array
|
|
*/
|
|
public static function getSettlementMoney($price,$pricetype,$type,$objid){
|
|
global $_W;
|
|
if($type == 1){
|
|
$merchant = pdo_get('wlmerchant_merchantdata',array('id' => $objid),array('groupid','settlementtext'));
|
|
$settlementtext = unserialize($merchant['settlementtext']);
|
|
if($pricetype == 1){
|
|
$pro = $settlementtext['appsettpro'];
|
|
}else if($pricetype == 2){
|
|
$pro = $settlementtext['truesettpro'];
|
|
}
|
|
if($pro < 0.01){
|
|
$pro = pdo_getcolumn(PDO_NAME.'chargelist',array('id'=>$merchant['groupid']),'defaultrate');
|
|
}
|
|
}else{
|
|
$mealid = pdo_getcolumn(PDO_NAME.'housekeep_artificer',array('id'=>$objid),'mealid');
|
|
$meal = pdo_get(PDO_NAME.'housekeep_meals',array('id' => $mealid),array('appsettpro','truesettpro'));
|
|
if($pricetype == 1){
|
|
$pro = $meal['appsettpro'];
|
|
}else if($pricetype == 2){
|
|
$pro = $meal['truesettpro'];
|
|
}
|
|
}
|
|
$settlementmoney = sprintf("%.2f",$price * $pro / 100);
|
|
return $settlementmoney;
|
|
}
|
|
|
|
/**
|
|
* Comment: 订单结算
|
|
* Author: wlf
|
|
* Date: 2021/05/07 17:20
|
|
* @return array
|
|
*/
|
|
public static function settlementOrder($id){
|
|
global $_W;
|
|
$order = pdo_get('wlmerchant_order',array('id' => $id),array('fkid','price','settlementmoney','orderno','issettlement','specid','sid','aid'));
|
|
if (empty($order['issettlement'])){
|
|
$flag = pdo_getcolumn(PDO_NAME.'autosettlement_record',['orderno' => $order['orderno']],'id'); //判断是否已结算
|
|
if (!empty($flag)){$res = 1;}
|
|
$agentmoney = sprintf("%.2f",$order['price'] - $order['settlementmoney']);
|
|
$settlementmoney = $order['settlementmoney'];
|
|
$data = [
|
|
'uniacid' => $_W['uniacid'] ,
|
|
'aid' => $order['aid'] ,
|
|
'type' => 17,
|
|
'merchantid' => $order['sid'] ,
|
|
'orderid' => $id ,
|
|
'orderno' => $order['orderno'] ,
|
|
'goodsid' => $order['fkid'] ,
|
|
'orderprice' => $order['price'] ,
|
|
'agentmoney' => $agentmoney,
|
|
'merchantmoney' => $settlementmoney,
|
|
'createtime' => time()
|
|
];
|
|
$res = pdo_insert(PDO_NAME . 'autosettlement_record' , $data);
|
|
$settlementid = pdo_insertid();
|
|
if ($res) {
|
|
if (abs($settlementmoney) > 0) { //结算给商户
|
|
if ($order['specid'] == 1) {
|
|
pdo_fetch("update" . tablename('wlmerchant_merchantdata') . "SET allmoney=allmoney+{$settlementmoney},nowmoney=nowmoney+{$settlementmoney} WHERE id = {$order['sid']}");
|
|
$change['merchantnowmoney'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $data['merchantid']] , 'nowmoney');
|
|
Store::addcurrent(1 , 17 , $order['sid'] , $settlementmoney , $change['merchantnowmoney'] , $order['id'] , '' , $_W['uniacid'] , $order['aid']);
|
|
}else {
|
|
$mid = pdo_getcolumn(PDO_NAME.'housekeep_artificer',array('id'=>$order['sid']),'mid');
|
|
Member::credit_update_credit2($mid,$settlementmoney,'家政服务项目结算');
|
|
}
|
|
}
|
|
if (abs($data['agentmoney']) > 0) {
|
|
pdo_fetch("update" . tablename('wlmerchant_agentusers') . "SET allmoney=allmoney+{$data['agentmoney']},nowmoney=nowmoney+{$data['agentmoney']} WHERE id = {$data['aid']}");
|
|
$change['agentnowmoney'] = pdo_getcolumn(PDO_NAME . 'agentusers' , ['id' => $data['aid']] , 'nowmoney');
|
|
Store::addcurrent(2 , 17 , $data['aid'] , $data['agentmoney'] , $change['agentnowmoney'] , $order['id'] , '' , $_W['uniacid'] , $order['aid']);
|
|
}
|
|
pdo_update('wlmerchant_autosettlement_record' , $change , ['id' => $settlementid]);
|
|
pdo_update('wlmerchant_order',['issettlement' => 1,'settletime' => time()],['id' => $order['id']]);
|
|
}
|
|
}else{
|
|
$res = 1;
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* Comment: 订单退款
|
|
* Author: wlf
|
|
* Date: 2021/05/07 18:25
|
|
* @return array
|
|
*/
|
|
static function refund($id, $money = 0, $unline = '') {
|
|
$order = pdo_get(PDO_NAME . 'order', array('id' => $id));
|
|
if($money < $order['blendcredit']){
|
|
$blendcredit = $money;
|
|
$money = 0;
|
|
}else if($order['blendcredit'] > 0){
|
|
$blendcredit = $order['blendcredit'];
|
|
$money = sprintf("%.2f",$money - $blendcredit);
|
|
}
|
|
if ($unline) {
|
|
$res['status'] = 1;
|
|
} else {
|
|
$res = wlPay::refundMoney($id, $money, '家政订单退款', 'housekeep', 2,$blendcredit);
|
|
}
|
|
if ($res['status']) {
|
|
//修改服务项目销量
|
|
pdo_fetch("update" . tablename('wlmerchant_housekeep_service') . "SET salenum=salenum-{$order['num']} WHERE id = {$order['fkid']}");
|
|
//修改退款申请记录
|
|
pdo_update('wlmerchant_aftersale',array('status' => 2),array('orderid' => $id,'plugin' => 'housekeep'));
|
|
if ($order['applyrefund']) {
|
|
pdo_update('wlmerchant_order', array('status' => 7, 'refundtime' => time(), 'applyrefund' => 2), array('id' => $order['id']));
|
|
$reason = '买家申请退款。';
|
|
} else {
|
|
pdo_update('wlmerchant_order', array('status' => 7, 'refundtime' => time()), array('id' => $order['id']));
|
|
$reason = '家政系统退款。';
|
|
}
|
|
|
|
News::refundNotice($id,'housekeep',$money,$reason);
|
|
} else {
|
|
pdo_fetch("update" . tablename('wlmerchant_order') . "SET failtimes = failtimes+1 WHERE id = {$id}");
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
|
|
/**
|
|
* Comment: 支付回调
|
|
* Author: wlf
|
|
* Date: 2021/04/25 16:40
|
|
* @return array
|
|
*/
|
|
static function payHousekeepOrderNotify($params)
|
|
{
|
|
Util::wl_log('payResult_notify',PATH_PLUGIN."housekeep/data/",$params); //写入异步日志记录
|
|
$order = pdo_get('wlmerchant_order',['orderno' => $params['tid']],[
|
|
'id',
|
|
'fightstatus',
|
|
'mid',
|
|
'uniacid',
|
|
'num',
|
|
'specid',
|
|
'price',
|
|
'orderno',
|
|
'fkid',
|
|
'aid',
|
|
'status'
|
|
]);
|
|
$_W['uniacid'] = $order['uniacid'];
|
|
$_W['aid'] = $order['aid'];
|
|
$data = [
|
|
'status' => 3,
|
|
//'disorderid' => $disorderid,
|
|
'paytime' => time()
|
|
];
|
|
$data['paytype'] = $params['type'];
|
|
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
|
|
//业务逻辑
|
|
if($order['fightstatus'] == 1){
|
|
$data['status'] = 1;
|
|
//修改服务项目销量
|
|
pdo_fetch("update" . tablename('wlmerchant_housekeep_service') . "SET salenum = salenum + {$order['num']} WHERE id = {$order['fkid']}");
|
|
|
|
$nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$order['mid']),'nickname');
|
|
$service = pdo_get('wlmerchant_housekeep_service',['id' => $order['fkid']],['type','objid','title']);
|
|
$first = "用户【{$nickname}】支付了[{$service['title']}]的家政服务";//消息头部
|
|
$type = "家政服务";//业务类型
|
|
$content = $service['title'];//业务内容
|
|
$status = "待处理";//处理结果
|
|
$remark = "请尽快联系客户处理!";//备注信息
|
|
$time = $data['paytime'];//操作时间
|
|
if($service['type'] == 1){
|
|
News::noticeShopAdmin($service['objid'], $first , $type , $content , $status , $remark , $time);
|
|
}else{
|
|
$mid = pdo_getcolumn(PDO_NAME.'housekeep_artificer',array('id'=>$service['objid']),'mid');
|
|
News::jobNotice($mid,$first,$type,$content,$status,$remark,$time);
|
|
}
|
|
}else if ($order['fightstatus'] == 2) { //付费入驻
|
|
$meal = pdo_get('wlmerchant_housekeep_meals',['id' => $order['specid']],['day','check']);
|
|
$artificer = pdo_get('wlmerchant_housekeep_artificer',['id' => $order['fkid']],['name','endtime']);
|
|
if ($meal['check'] > 0) {
|
|
$newinfo['status'] = 5;
|
|
} else {
|
|
$newinfo['status'] = 1;
|
|
}
|
|
//计算时间
|
|
if ($artificer['endtime'] > time()) {
|
|
$newinfo['endtime'] = $artificer['endtime'] + $meal['day'] * 86400;
|
|
} else {
|
|
$newinfo['endtime'] = time() + $meal['day'] * 86400;
|
|
}
|
|
pdo_update('wlmerchant_housekeep_artificer',$newinfo,['id' => $order['fkid']]);
|
|
if ($newinfo['status'] == 5) {
|
|
$membername = pdo_getcolumn(PDO_NAME.'member',['id' => $order['mid']],'nickname');
|
|
//发送模板消息
|
|
$first = '您好,一个家政服务者入驻申请待审核';
|
|
$type = '审核家政服务者入驻信息';
|
|
$content = '服务者姓名:'.$artificer['name'];
|
|
$status = '待审核';
|
|
$remark = "微信用户[".$membername."]入驻家政服务者申请,请管理员尽快前往后台审核";
|
|
News::noticeAgent('housekeep',$_W['aid'],$first,$type,$content,$status,$remark,time(),'');
|
|
}
|
|
} else if ($order['fightstatus'] == 3) { //付费发布
|
|
$set = Setting::agentsetting_read('housekeep');
|
|
$demand = pdo_get('wlmerchant_housekeep_demand',['id' => $order['fkid']],['mid','topendtime','type']);
|
|
$getstatus = self::getStatus(2,$demand['mid'],$set,1);
|
|
if ($getstatus['status'] == 1) { //免审核
|
|
pdo_update('wlmerchant_housekeep_demand',[
|
|
'updatetime' => time(),
|
|
'status' => 1,
|
|
'createtime' => time()
|
|
],['id' => $order['fkid']]);
|
|
} else {
|
|
pdo_update('wlmerchant_housekeep_demand',[
|
|
'updatetime' => time(),
|
|
'status' => 5,
|
|
'createtime' => time()
|
|
],['id' => $order['fkid']]);
|
|
$typetitle = pdo_getcolumn(PDO_NAME.'housekeep_type',['id' => $demand['type']],'title');
|
|
$membername = pdo_getcolumn(PDO_NAME.'member',['id' => $order['mid']],'nickname');
|
|
//发送模板消息
|
|
$first = '您好,您有一个待审核任务需要处理';
|
|
$type = '审核用户家政需求';
|
|
$content = '需求类目:'.$typetitle;
|
|
$status = '待审核';
|
|
$remark = "用户[".$membername."]发布了一个商品待审核,请管理员尽快前往后台审核";
|
|
News::noticeAgent('housekeep',$order['aid'],$first,$type,$content,$status,$remark,time(),'');
|
|
}
|
|
} else if ($order['fightstatus'] == 4) { //置顶
|
|
$demand = pdo_get('wlmerchant_housekeep_demand',['id' => $order['fkid']],['topendtime','type']);
|
|
if ($demand['topendtime'] > time()) {
|
|
$newtime = $demand['topendtime'] + 86400 * $order['num'];
|
|
} else {
|
|
$newtime = time() + 86400 * $order['num'];
|
|
}
|
|
pdo_update('wlmerchant_housekeep_demand',[
|
|
'updatetime' => time(),
|
|
'topflag' => 1,
|
|
'topendtime' => $newtime
|
|
],['id' => $order['fkid']]);
|
|
} else if ($order['fightstatus'] == 5) { //刷新
|
|
pdo_update('wlmerchant_housekeep_demand',['updatetime' => time()],['id' => $order['fkid']]);
|
|
}
|
|
//结算
|
|
$res = pdo_update('wlmerchant_order',$data,['id' => $order['id']]);
|
|
if ($res && $order['fightstatus'] != 1) {
|
|
Store::ordersettlement($order['id']);
|
|
}
|
|
}
|
|
//计划任务
|
|
static function doTask()
|
|
{
|
|
global $_W;
|
|
//置顶时间过期,自动下线
|
|
pdo_update('wlmerchant_housekeep_demand',['topflag' => 0],['topflag' => 1,'topendtime <' => time()]);
|
|
//删除过期订单
|
|
$time = time() - 43200;
|
|
pdo_delete('wlmerchant_order',[
|
|
'plugin' => 'housekeep',
|
|
'status' => 0,
|
|
'fightstatus >' => 2,
|
|
'createtime <' => $time
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* Comment: 根据条件获取对应的列表
|
|
* Author: zzw
|
|
* Date: 2021/5/6 13:57
|
|
* @param int $serviceType 服务类型:0=全部,1=商户服务商,2=个人服务商,3=客户需求,4=服务项目
|
|
* @param int $page 当前页
|
|
* @param int $pageIndex 每页的数量
|
|
* @param string $shopWhere 商户服务商条件
|
|
* @param string $artificerWhere 个人服务商条件
|
|
* @param string $demandWhere 客户需求条件
|
|
* @param string $serviceWhere 服务项目条件
|
|
* @param int $order 排序方式
|
|
* -- service_type=0:1=推荐
|
|
* -- service_type=1:1=推荐,2=时间,3=距离,4=销量
|
|
* -- service_type=2:1=推荐,2=时间,3=距离
|
|
* -- service_type=3:1=发布时间,2=上门时间,3=距离
|
|
* -- service_type=4:1=推荐,2=时间,3=距离,4=销量
|
|
* @param int $lng 经度
|
|
* @param int $lat 纬度
|
|
* @return array
|
|
*/
|
|
public static function getList(int $serviceType = 0,$page = 1,$pageIndex = 10,$shopWhere = '',$artificerWhere = '',
|
|
$demandWhere = '',$serviceWhere = '',$order = 1,$lng = 0,$lat = 0,$aid = 0){
|
|
global $_W;
|
|
//基本条件生成
|
|
if(empty($aid)){$aid = $_W['aid'];}
|
|
$publicWhere = " WHERE uniacid = {$_W['uniacid']} AND aid = {$aid} ";
|
|
$pageStart = $page * $pageIndex - $pageIndex;
|
|
$limit = " LIMIT {$pageStart},{$pageIndex} ";
|
|
$distances = getDistancesSql($lat,$lng,'lat','lng');
|
|
//根据类型生成对应的sql语句和排序方式 服务类型:0=全部,1=商户服务商,2=个人服务商,3=客户需求,4=服务项目
|
|
switch ($serviceType){
|
|
case 0:
|
|
//排序方式:1=推荐
|
|
$orderBy = " ORDER BY createtime DESC ";
|
|
//sql语句
|
|
$field = " *";
|
|
$sql = "SELECT {$field} FROM (SELECT id,createtime,{$distances} as distances,'1' as service_type FROM ".tablename(PDO_NAME."merchantdata")
|
|
." {$publicWhere} {$shopWhere} "
|
|
." UNION ALL SELECT id,createtime,{$distances} as distances,'2' as service_type FROM ".tablename(PDO_NAME."housekeep_artificer")
|
|
." {$publicWhere} {$artificerWhere} "
|
|
." UNION ALL SELECT id,createtime,{$distances} as distances,'3' as service_type FROM ".tablename(PDO_NAME."housekeep_demand")
|
|
." {$publicWhere} {$demandWhere} "
|
|
." UNION ALL SELECT id,createtime,{$distances} as distances,'4' as service_type FROM ".tablename(PDO_NAME."housekeep_service")
|
|
." {$publicWhere} {$serviceWhere}) as a";
|
|
break;//获取全部
|
|
case 1:
|
|
//排序方式:1=推荐,2=时间,3=距离,4=销量
|
|
switch ($order){
|
|
case 1: $orderBy = " ORDER BY listorder DESC,id DESC ";break;
|
|
case 2: $orderBy = " ORDER BY createtime DESC ";break;
|
|
case 3: $orderBy = " ORDER BY distances ASC,createtime DESC ";break;
|
|
case 4: $orderBy = " ORDER BY salenum DESC ";break;
|
|
}
|
|
//sql语句
|
|
$salenum = "SELECT sum(salenum) FROM ".tablename(PDO_NAME."housekeep_service")
|
|
." {$publicWhere} AND `type` = 1 and objid = shop_id ";
|
|
$field = "id,createtime,{$distances} as distances,'1' as service_type,id as shop_id,IFNULL(({$salenum}),0) as salenum";
|
|
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."merchantdata")
|
|
." {$publicWhere} {$shopWhere} ";
|
|
break;//获取商户服务商
|
|
case 2:
|
|
//排序方式:1=推荐,2=时间,3=距离
|
|
switch ($order){
|
|
case 1:$orderBy = " ORDER BY sort DESC ";break;
|
|
case 2:$orderBy = " ORDER BY createtime DESC ";break;
|
|
case 3:$orderBy = " ORDER BY distances ASC,createtime DESC ";break;
|
|
case 4:$orderBy = " ORDER BY salenum DESC ";break;
|
|
}
|
|
//sql语句
|
|
$salenum = "SELECT sum(salenum) FROM ".tablename(PDO_NAME."housekeep_service")
|
|
." {$publicWhere} AND `type` = 2 and objid = id ";
|
|
$field = "id,createtime,{$distances} as distances,'2' as service_type,IFNULL(({$salenum}),0) as salenum";
|
|
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."housekeep_artificer")
|
|
." {$publicWhere} {$artificerWhere} ";
|
|
break;//获取个人服务商
|
|
case 3:
|
|
//排序方式:1=推荐,2=发布时间,3=上门时间,4=距离
|
|
switch ($order){
|
|
case 1:$orderBy = " ORDER BY topflag DESC,updatetime DESC ";break;
|
|
case 2:$orderBy = " ORDER BY topflag DESC,createtime DESC ";break;
|
|
case 3:$orderBy = " ORDER BY topflag DESC,visitingtime DESC ";break;
|
|
case 4:$orderBy = " ORDER BY topflag DESC,distances ASC ";break;
|
|
}
|
|
//sql语句
|
|
$field = "id,createtime,{$distances} as distances,'3' as service_type,lat,lng";
|
|
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."housekeep_demand")
|
|
." {$publicWhere} {$demandWhere} ";
|
|
break;//获取客户需求
|
|
case 4:
|
|
//排序方式:1=推荐,2=时间,3=距离,4=销量
|
|
switch ($order){
|
|
case 1:$orderBy = " ORDER BY sort DESC ";break;
|
|
case 2:$orderBy = " ORDER BY createtime DESC ";break;
|
|
case 3:$orderBy = " ORDER BY distances ASC,createtime DESC ";break;
|
|
case 4:$orderBy = " ORDER BY salenum DESC ";break;
|
|
}
|
|
//sql语句
|
|
$field = "id,createtime,{$distances} as distances,'4' as service_type";
|
|
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."housekeep_service")
|
|
." {$publicWhere} {$serviceWhere} ";
|
|
break;//获取服务项目
|
|
}
|
|
//运行sql语句获取信息列表
|
|
$list = pdo_fetchall($sql.$orderBy.$limit);
|
|
$list = array_map(function ($item){
|
|
//信息处理
|
|
$itemRes = Housekeep::getDesc($item['id'],$item['service_type']);
|
|
//距离处理
|
|
if($item['distances'] > 0){
|
|
if($item['distances'] < 1000) $itemRes['distances'] = $item['distances'].'m';
|
|
else $itemRes['distances'] = sprintf("%.2f",$item['distances'] / 1000).'km';
|
|
}
|
|
return $itemRes;
|
|
},$list);
|
|
//获取总数信息 根据分页信息获取
|
|
$totalSql = str_replace($field,'count(*)',$sql);
|
|
$total = pdo_fetchcolumn($totalSql);
|
|
//信息拼装
|
|
$data = [
|
|
'list' => $list,
|
|
'page' => $page,
|
|
'page_number' => ceil($total / $pageIndex)
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
/**
|
|
* Comment: 获取服务详细信息
|
|
* Author: zzw
|
|
* Date: 2021/4/30 17:45
|
|
* @param int $id
|
|
* @param int $serviceType
|
|
* @return false|mixed
|
|
*/
|
|
public static function getDesc($id,$serviceType){
|
|
global $_W;
|
|
$isAuthentication = intval(0);//默认未认证
|
|
$isBond = intval(0);//默认未交保证金
|
|
//根据类型生成查询相关信息 类型:1=商户服务商,2=个人服务商,3=客户需求,4=服务项目 logo,thumbs,name,address,
|
|
switch ($serviceType){
|
|
case 1:
|
|
$field = "logo,adv as thumbs,storename as name,address";
|
|
$table = tablename(PDO_NAME."merchantdata");
|
|
$tip = '商户服务商';
|
|
//获取分类列表
|
|
$labelList = self::getType(3,$id);
|
|
//获取服务项目
|
|
$serviceList = self::getService(1,$id);
|
|
//判断是否获取保证金
|
|
if(p('attestation')){
|
|
$attestation = Attestation::checkAttestation(2,$id);
|
|
$isAuthentication = $attestation['attestation'] > 0 ? 1 : 0;//是否认证
|
|
$isBond = $attestation['bondflag'] > 0 ? 1 : 0;//是否提交保证金
|
|
}
|
|
|
|
break;//商户服务商
|
|
case 2:
|
|
$field = "thumb as logo,thumbs,name,address,mid";
|
|
$table = tablename(PDO_NAME."housekeep_artificer");
|
|
$tip = '个人服务商';
|
|
$labelList = self::getType(2,$id);
|
|
//获取服务项目
|
|
$serviceList = self::getService(2,$id);
|
|
//判断是否获取保证金
|
|
if(p('attestation')){
|
|
$mid = pdo_getcolumn(PDO_NAME."housekeep_artificer",['id'=>$id],'mid');
|
|
$attestation = Attestation::checkAttestation(1,$mid);
|
|
$isAuthentication = $attestation['attestation'] > 0 ? 1 : 0;//是否认证
|
|
$isBond = $attestation['bondflag'] > 0 ? 1 : 0;//是否提交保证金
|
|
}
|
|
break;//个人服务商
|
|
case 3:
|
|
$field = "'' as logo,thumbs,type as name,address,visitingtime,topflag,mid,detail,mobile,lat,lng";
|
|
$table = tablename(PDO_NAME."housekeep_demand");
|
|
$tip = '客户需求';
|
|
$labelList = [];
|
|
break;//客户需求
|
|
case 4:
|
|
$field = "thumb as logo,adv as thumbs,title as name,type as address,price,pricetype,unit,salenum";
|
|
$table = tablename(PDO_NAME."housekeep_service");
|
|
$tip = '服务项目';
|
|
$labelList = self::getType(1,$id);
|
|
break;//服务项目
|
|
}
|
|
//运行sql进行查询
|
|
$info = pdo_fetch("SELECT {$field} FROM ".$table." WHERE id = {$id} ");
|
|
$info['id'] = $id;
|
|
$info['service_type'] = $serviceType;
|
|
$info['tip'] = $tip;
|
|
$info['label'] = $labelList ? : [];//分类列表
|
|
$info['service'] = $serviceList ? : [];//服务项目列表
|
|
$info['is_authentication'] = $isAuthentication;//是否认证
|
|
$info['is_bond'] = $isBond;//是否提交保证金
|
|
//公共信息处理
|
|
$info['logo'] = tomedia($info['logo']);
|
|
$thumbs = unserialize($info['thumbs']);
|
|
$info['long_logo'] = is_array($thumbs) ? tomedia($thumbs[0]) : '';
|
|
//私有信息处理
|
|
switch ($serviceType){
|
|
case 3:
|
|
//logo=long_logo
|
|
$info['logo'] = $info['long_logo'];
|
|
$info['thumbs'] = self::beautifyImgInfo($info['thumbs']);
|
|
$info['visitingtime'] = date('Y-m-d H:i',$info['visitingtime']);
|
|
//name = 需求类型标题
|
|
$info['name'] = pdo_getcolumn(PDO_NAME."housekeep_type",['id'=>$info['name']],'title');
|
|
$member = pdo_get('wlmerchant_member',array('id' => $info['mid']),array('nickname','avatar'));
|
|
$info['nickname'] = $member['nickname'];
|
|
$info['avatar'] = tomedia($member['avatar']);
|
|
break;//客户需求
|
|
case 4:
|
|
//address = 发布类型
|
|
if($info['type'] == 1){
|
|
$info['address'] = '商户发布';
|
|
} else{
|
|
$info['address'] = '个人发布';
|
|
}
|
|
$info['price'] = self::getServicePrice($info['price'],$info['pricetype'],$info['unit']);
|
|
break;//服务项目
|
|
}
|
|
//删除多余的字段
|
|
|
|
return $info;
|
|
}
|
|
/**
|
|
* Comment: 根据类型获取所有二级分类
|
|
* Author: zzw
|
|
* Date: 2021/5/6 10:11
|
|
* @param int $type 类型:1=服务项目 2=个人服务商 3=商户服务商
|
|
* @param int $id
|
|
* @return array
|
|
*/
|
|
public static function getType(int $type,int $id){
|
|
global $_W;
|
|
//获取二级分类id列表
|
|
$idList = pdo_getall(PDO_NAME."housekeep_relation",['type'=>$type,'objid'=>$id],['twolevelid']);
|
|
if(!is_array($idList) || count($idList) <= 0) return [];
|
|
//获取二级分类标题列表
|
|
$ids = array_column($idList,'twolevelid');
|
|
$list = pdo_getall(PDO_NAME."housekeep_type",['uniacid'=>$_W['uniacid'],'aid'=>$_W['aid'],'id IN'=>$ids],['title']);
|
|
|
|
return is_array($list) && count($list) > 0 ? array_column($list,'title') : [];
|
|
}
|
|
/**
|
|
* Comment: 根据条件获取服务项目信息列表
|
|
* Author: zzw
|
|
* Date: 2021/5/6 16:54
|
|
* @param int $type 1=商户发布 2=个人发布
|
|
* @param int $id 商户/个人服务商id
|
|
* @param string $order 排序
|
|
* @param int $page 当前页
|
|
* @param int $pageIndex 每页的数量
|
|
* @return array|false|mixed
|
|
*/
|
|
public static function getService(int $type,int $id,$order = 'salenum DESC',$page = 1,$pageIndex = 2){
|
|
$field = ['id','thumb','title','salenum','pricetype','price','unit'];
|
|
$list = pdo_getall(PDO_NAME."housekeep_service",['type'=>$type,'objid'=>$id,'status'=>1],$field,'',$order,[$page,$pageIndex]);
|
|
foreach($list as $key => &$val){
|
|
//处理基本信息
|
|
$val['thumb'] = tomedia($val['thumb']);
|
|
//处理价格 金额类型 0无金额 1预约金 2实价
|
|
$val['price_text'] = self::getServicePrice($val['price'],$val['pricetype'],$val['unit']);
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
|
|
}
|
|
|