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.
350 lines
13 KiB
350 lines
13 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
class Consumption {
|
|
|
|
static function creditshop_adv_get($status = -1) {
|
|
global $_W;
|
|
$condition = " where uniacid = :uniacid";
|
|
$params = array(":uniacid" => $_W["uniacid"]);
|
|
if ($status != -1) {
|
|
$condition .= " and status = " . $status;
|
|
}
|
|
$data = pdo_fetchall("select * from" . tablename("wlmerchant_consumption_adv") . " " . $condition . " order by displayorder desc", $params);
|
|
if (!empty($data)) {
|
|
foreach ($data as &$value) {
|
|
$value["thumb"] = tomedia($value["thumb"]);
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_can_exchange_goods($idOrGoods, $uid = "") {
|
|
global $_W;
|
|
$goods = $idOrGoods;
|
|
if (!is_array($goods)) {
|
|
$goods = creditshop_goods_get($goods);
|
|
}
|
|
if (empty($goods)) {
|
|
return error(-1, "商品不存在!");
|
|
}
|
|
if (empty($uid)) {
|
|
$uid = $_W["member"]["uid"];
|
|
}
|
|
$records_num = pdo_fetchcolumn("select count(*) FROM " . tablename("wlmerchant_consumption_order") . " where uniacid = :uniacid and uid = :uid and goods_id = :goods_id ", array(":uniacid" => $_W["uniacid"], "uid" => $uid, ":goods_id" => $goods["id"]));
|
|
if ($goods["chance"] <= $records_num) {
|
|
return error(-2, "兑换已达最大次数!");
|
|
}
|
|
return error(0, "可以兑换!");
|
|
}
|
|
|
|
static function creditshop_category_get($status = -1) {
|
|
global $_W;
|
|
$condition = " where uniacid = :uniacid";
|
|
$params = array(":uniacid" => $_W["uniacid"]);
|
|
if ($status != -1) {
|
|
$condition .= " and status = " . $status;
|
|
}
|
|
$data = pdo_fetchall("select * from " . tablename("wlmerchant_consumption_category") . " " . $condition . " order by displayorder desc", $params);
|
|
if (!empty($data)) {
|
|
foreach ($data as &$value) {
|
|
$value["thumb"] = tomedia($value["thumb"]);
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_goodsall_get($filter = array( )) {
|
|
global $_W;
|
|
global $_GPC;
|
|
if (empty($filter)) {
|
|
if (!empty($_GPC["type"])) {
|
|
$filter["type"] = trim($_GPC["type"]);
|
|
}
|
|
if (!empty($_GPC["title"])) {
|
|
$filter["title"] = trim($_GPC["title"]);
|
|
}
|
|
if (!empty($_GPC["category_id"])) {
|
|
$filter["category_id"] = intval($_GPC["category_id"]);
|
|
}
|
|
}
|
|
if (empty($filter["page"])) {
|
|
$filter["page"] = max(1, $_GPC["page"]);
|
|
}
|
|
if (empty($filter["psize"])) {
|
|
$filter["psize"] = (intval($_GPC["psize"]) ? intval($_GPC["psize"]) : 20);
|
|
}
|
|
$condition = " where uniacid = :uniacid and status = 1";
|
|
$params = array(":uniacid" => $_W["uniacid"]);
|
|
if (!empty($filter["type"])) {
|
|
$condition .= " and type = :type";
|
|
$params[":type"] = $filter["type"];
|
|
}
|
|
if (!empty($filter["title"])) {
|
|
$condition .= " AND title LIKE '%" . $filter["title"] . "%'";
|
|
}
|
|
if (!empty($filter["category_id"])) {
|
|
$condition .= " and category_id = :category_id";
|
|
$params[":category_id"] = $filter["category_id"];
|
|
}
|
|
//判断会员
|
|
$halfmember = Member::checkhalfmember();
|
|
|
|
$data = pdo_fetchall("SELECT * FROM " . tablename("wlmerchant_consumption_goods") . " " . $condition . " ORDER BY displayorder DESC LIMIT " . ($filter["page"] - 1) * $filter["psize"] . ", " . $filter["psize"], $params);
|
|
if (!empty($data)) {
|
|
foreach ($data as &$value) {
|
|
$value["thumb"] = tomedia($value["thumb"]);
|
|
if ($value["type"] == "redpacket") {
|
|
$value["redpacket"] = iunserializer($value["redpacket"]);
|
|
}
|
|
if($halfmember && $value['vipstatus'] == 1){
|
|
$value['use_credit1'] = $value['vipcredit1'];
|
|
$value['use_credit2'] = $value['vipcredit2'];
|
|
}
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_goods_get($goods_id) {
|
|
global $_W;
|
|
if (empty($goods_id)) {
|
|
return error(-1, "请输入商品编号");
|
|
}
|
|
$data = pdo_get("wlmerchant_consumption_goods", array("uniacid" => $_W["uniacid"], "id" => $goods_id));
|
|
$data["records_num"] = pdo_fetchcolumn("select count(*) FROM " . tablename("wlmerchant_consumption_order") . " where uniacid = :uniacid and goods_id = :goods_id ", array(":uniacid" => $_W["uniacid"], ":goods_id" => $goods_id));
|
|
if (!empty($data)) {
|
|
$data["thumb"] = tomedia($data["thumb"]);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_record_get($filter = array( )) {
|
|
global $_W;
|
|
global $_GPC;
|
|
if (empty($filter)) {
|
|
if (!empty($_GPC["id"])) {
|
|
$filter["goods_id"] = intval($_GPC["id"]);
|
|
} else {
|
|
return error(-1, "请输入商品编号");
|
|
}
|
|
}
|
|
if (empty($filter["page"])) {
|
|
$filter["page"] = max(1, $_GPC["page"]);
|
|
}
|
|
if (empty($filter["psize"])) {
|
|
$filter["psize"] = (intval($_GPC["psize"]) ? intval($_GPC["psize"]) : 15);
|
|
}
|
|
$data = pdo_fetchall("select a.addtime, b.avatar, b.nickname FROM " . tablename("wlmerchant_consumption_order") . " as a left join " . tablename("tiny_wmall_members") . " as b on a.uid = b.uid where a.uniacid = :uniacid and a.goods_id = :goods_id limit " . ($filter["page"] - 1) * $filter["psize"] . ", " . $filter["psize"], array(":uniacid" => $_W["uniacid"], ":goods_id" => $filter["goods_id"]));
|
|
if (!empty($data)) {
|
|
foreach ($data as &$value) {
|
|
$value["addtime"] = date("Y/m/d H:i", $value["addtime"]);
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_order_get($id) {
|
|
global $_W;
|
|
$data = pdo_get("wlmerchant_consumption_order", array("uniacid" => $_W["uniacid"], "id" => $id));
|
|
if (!empty($data)) {
|
|
$data["data"] = iunserializer($data["data"]);
|
|
$data["addtime"] = date("Y/m/d H:i", $data["addtime"]);
|
|
$goods = creditshop_goods_get($data["goods_id"]);
|
|
$data["goods_info"] = $goods;
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_orderall_get($filter = array( )) {
|
|
global $_W;
|
|
global $_GPC;
|
|
if (empty($filter["page"])) {
|
|
$filter["page"] = max(1, $_GPC["page"]);
|
|
}
|
|
if (empty($filter["psize"])) {
|
|
$filter["psize"] = (intval($_GPC["psize"]) ? intval($_GPC["psize"]) : 6);
|
|
}
|
|
$condition = " where a.uniacid = :uniacid and a.uid = :uid";
|
|
$params = array(":uniacid" => $_W["uniacid"], ":uid" => $_W["member"]["uid"]);
|
|
$data = pdo_fetchall("select a.*, c.title, c.thumb from " . tablename("wlmerchant_consumption_order") . " as a left join " . tablename("wlmerchant_consumption_goods") . " as c on a.goods_id = c.id " . $condition . " order by a.id desc limit " . ($filter["page"] - 1) * $filter["psize"] . ", " . $filter["psize"], $params);
|
|
if (!empty($data)) {
|
|
foreach ($data as &$value) {
|
|
$value["addtime"] = date("Y/m/d H:i", $value["addtime"]);
|
|
$value["data"] = iunserializer($value["data"]);
|
|
$value["thumb"] = tomedia($value["thumb"]);
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
static function creditshop_order_update($orderOrId, $type, $extra = array( )) {
|
|
global $_W;
|
|
$order = $orderOrId;
|
|
if (!is_array($order)) {
|
|
$order = creditshop_order_get($order);
|
|
}
|
|
if (empty($order)) {
|
|
return error(-1, "商品不存在!");
|
|
}
|
|
if ($type == "pay") {
|
|
$update = array("is_pay" => 1, "pay_type" => $extra["type"], "paytime" => TIMESTAMP);
|
|
pdo_update("wlmerchant_consumption_order", $update, array("id" => $order["id"]));
|
|
if ($order["goods_type"] == "redpacket") {
|
|
mload() -> model("redPacket");
|
|
$redpacket = $order["data"]["redpacket"];
|
|
$data = array("title" => $redpacket["name"], "channel" => "creditShop", "type" => "grant", "discount" => $redpacket["discount"], "days_limit" => $redpacket["use_days_limit"], "grant_days_effect" => $redpacket["grant_days_effect"], "condition" => $redpacket["condition"], "uid" => $order["uid"]);
|
|
$res = redPacket_grant($data);
|
|
if ($res) {
|
|
pdo_update("wlmerchant_consumption_order", array("grant_status" => 1), array("id" => $order["id"]));
|
|
return NULL;
|
|
}
|
|
} else {
|
|
if ($order["goods_type"] == "credit2") {
|
|
$res = member_credit_update($order["uid"], "credit2", $order["data"]["credit2"]);
|
|
if ($res) {
|
|
pdo_update("wlmerchant_consumption_order", array("grant_status" => 1), array("id" => $order["id"]));
|
|
return NULL;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if ($type == "handle") {
|
|
if ($order["status"] == 1) {
|
|
pdo_update("wlmerchant_consumption_order", array("status" => 2), array("id" => $order["id"]));
|
|
return NULL;
|
|
}
|
|
} else {
|
|
if ($type == "cancel" && $order["is_pay"] == 0 && $order["status"] == 1 && 0 < $order["use_credit1"] && $order["use_credit1_status"] == 1 && 0 < $order["use_credit2"]) {
|
|
$status = member_credit_update($order["uid"], "credit1", $order["use_credit1"]);
|
|
if (is_error($status)) {
|
|
imessage(-1, $status["message"], "", "ajax");
|
|
}
|
|
pdo_update("wlmerchant_consumption_order", array("status" => 3), array("id" => $order["id"]));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 异步支付结果回调 ,处理业务逻辑
|
|
*
|
|
* @access public
|
|
* @name
|
|
* @param mixed 参数一的说明
|
|
* @return array
|
|
*/
|
|
static function payconsumOrderNotify($params){
|
|
global $_W;
|
|
Util::wl_log('payResult_notify',PATH_PLUGIN."bargain/data/", $params); //写入异步日志记录
|
|
$order_out = pdo_fetch("select * from".tablename(PDO_NAME.'order')."where orderno='{$params['tid']}'");
|
|
$activeInfo = self::creditshop_goods_get($order_out['fkid']);
|
|
$data = self::getPayData($params,$order_out); //得到支付参数,处理代付
|
|
if($order_out['status'] == 0){
|
|
$_W['aid'] = $order_out['aid'];
|
|
if($activeInfo['type'] == 'credit2' || $activeInfo['type'] == 'halfcard'){
|
|
$data['status'] = 3;
|
|
$status = 3;
|
|
}else{
|
|
$data['status'] = 8;
|
|
$status = 1;
|
|
}
|
|
//分销 分销
|
|
if(p('distribution') && $activeInfo['isdistri']){
|
|
$_W['aid'] = $order_out['aid'];
|
|
if($order_out['expressid']){
|
|
$expressprice = pdo_getcolumn(PDO_NAME.'express',array('id'=>$order_out['expressid']),'expressprice');
|
|
}else {
|
|
$expressprice = 0;
|
|
}
|
|
$dismoney = sprintf("%.2f",$order_out['price'] - $expressprice);
|
|
$disorderid = Distribution::disCore($order_out['mid'],$dismoney,$activeInfo['onedismoney'],$activeInfo['twodismoney'],0,$order_out['id'],'consumption',$activeInfo['dissettime']);
|
|
$data['disorderid'] = $disorderid;
|
|
}
|
|
//创建记录
|
|
if($activeInfo['type'] == 'credit2'){
|
|
$res = Member::credit_update_credit2($order_out['mid'],$activeInfo['credit2'],'兑换['.$activeInfo['title'].']获得余额');
|
|
}else if($activeInfo['type'] == 'halfcard'){
|
|
$res = self::conhalfcard($order_out['mid'],$activeInfo['halfcardid'],$order_out['name']);
|
|
}else{
|
|
$res = 1;
|
|
}
|
|
if($res){
|
|
$recorddata = array(
|
|
'uniacid' => $order_out['uniacid'],
|
|
'mid' => $order_out['mid'],
|
|
'goodsid' => $activeInfo['id'],
|
|
'orderid' => $order_out['id'],
|
|
'createtime' => time(),
|
|
'status' => $status,
|
|
'integral' => $activeInfo['use_credit1'],
|
|
'money' => $activeInfo['use_credit2'],
|
|
'expressid' => $order_out['expressid']
|
|
);
|
|
$res3 = pdo_insert(PDO_NAME.'consumption_record',$recorddata);
|
|
}
|
|
pdo_update(PDO_NAME.'order',$data, array('orderno' => $params['tid'])); //更新订单状态
|
|
$url = h5_url('pages/subPages/orderList/orderList');
|
|
$jftext = $_W['wlsetting']['trade']['credittext']?$_W['wlsetting']['trade']['credittext']:'积分';
|
|
$messagedata = array(
|
|
'first' => '恭喜您,一个商品兑换成功',
|
|
'type' => $jftext.'兑换',//业务类型
|
|
'content' => '商品名:['.$activeInfo['title'].']' ,//业务内容
|
|
'status' => '已完成' ,//处理结果
|
|
'time' => date('Y-m-d H:i:s',time()),//操作时间
|
|
'remark' => '点击查看兑换记录,如有问题请联系管理员'
|
|
);
|
|
TempModel::sendInit('service',$order_out['mid'],$messagedata,$_W['source'],$url);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
static function getPayData($params,$order_out){
|
|
$data = array('status' => $params['result'] == 'success' ? 1 : 0);
|
|
if($params['is_usecard']==1){
|
|
$fee = $params['card_fee'];
|
|
$data['is_usecard'] = 1;
|
|
}else{
|
|
$fee = $params['fee'];
|
|
}
|
|
//$paytype = array('credit' => 1, 'wechat' => 2, 'alipay' => 3, 'delivery' => 4, 'wxapp' => 5);
|
|
$data['paytype'] = $params['type'];
|
|
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
|
|
$data['paytime'] = TIMESTAMP;
|
|
$data['price'] = $fee;
|
|
$data['createtime'] = TIMESTAMP;
|
|
SingleMerchant::updateAmount($fee, $order_out['sid'],$order_out['id'],1,'订单支付成功');
|
|
return $data;
|
|
}
|
|
|
|
static function payconsumOrderReturn($params,$backurl=false){
|
|
Util::wl_log('payResult_return',PATH_PLUGIN."bargain/data/", $params);//写入日志记录
|
|
$order_out = pdo_get(PDO_NAME.'order',array('orderno'=>$params['tid']),array('id'));
|
|
wl_message('支付成功',h5_url('pages/mainPages/paySuccess/paySuccess',['id'=>$order_out['id'],'type'=>9]),'success');
|
|
}
|
|
|
|
static function conhalfcard($mid,$halfcardid,$username){
|
|
global $_W;
|
|
$halfcard = pdo_get('wlmerchant_halfcard_type',array('id' => $halfcardid));
|
|
$limittime = time() + $halfcard['days']*24*3600;
|
|
if($halfcard){
|
|
if(empty($halfcard['aid'])){
|
|
$halfcard['aid'] = $_W['aid'];
|
|
}
|
|
$halfcarddata = array(
|
|
'uniacid' => $_W['uniacid'],
|
|
'aid' => $halfcard['aid'],
|
|
'mid' => $mid,
|
|
'expiretime' => $limittime,
|
|
'username' => $username,
|
|
'levelid' => $halfcard['levelid'],
|
|
'createtime' => time()
|
|
);
|
|
$res = pdo_insert(PDO_NAME.'halfcardmember',$halfcarddata);
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
}
|
|
|