初始上传
This commit is contained in:
133
addon/memberrecharge/model/MemberRechargeCard.php
Executable file
133
addon/memberrecharge/model/MemberRechargeCard.php
Executable file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\memberrecharge\model;
|
||||
|
||||
use addon\coupon\model\Coupon;
|
||||
use app\dict\member_account\AccountDict;
|
||||
use app\model\BaseModel;
|
||||
use addon\coupon\model\CouponType;
|
||||
use app\model\member\MemberAccount;
|
||||
use app\model\system\Site;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 开卡
|
||||
*/
|
||||
class MemberRechargeCard extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 开卡
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function addMemberRechargeCard($data)
|
||||
{
|
||||
$site_model = new Site();
|
||||
$site_info = $site_model->getSiteInfo([ [ 'site_id', '=', $data[ 'site_id' ] ] ]);
|
||||
$card_account = substr(md5(date('YmdHis') . mt_rand(100, 999)), 8, 16);
|
||||
$card_data = [
|
||||
'recharge_id' => $data[ 'recharge_id' ],
|
||||
'site_id' => $data[ 'site_id' ],
|
||||
'site_name' => $site_info[ 'data' ][ 'site_name' ],
|
||||
'recharge_name' => $data[ 'recharge_name' ],
|
||||
'card_account' => $card_account,
|
||||
'cover_img' => $data[ 'cover_img' ],
|
||||
'face_value' => $data[ 'face_value' ],
|
||||
'point' => $data[ 'point' ],
|
||||
'growth' => $data[ 'growth' ],
|
||||
'coupon_id' => $data[ 'coupon_id' ],
|
||||
'buy_price' => $data[ 'buy_price' ],
|
||||
'member_id' => $data[ 'member_id' ],
|
||||
'member_img' => $data[ 'member_img' ],
|
||||
'nickname' => $data[ 'nickname' ],
|
||||
'order_id' => $data[ 'order_id' ],
|
||||
'order_no' => $data[ 'order_no' ],
|
||||
'use_status' => $data[ 'use_status' ],
|
||||
'create_time' => time(),
|
||||
'use_time' => $data[ 'use_time' ]
|
||||
];
|
||||
$res = model('member_recharge_card')->add($card_data);
|
||||
Cache::tag("member_recharge_card")->clear();
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开卡发放礼包
|
||||
* @param $order_info
|
||||
*/
|
||||
public function addMemberAccount($order_info)
|
||||
{
|
||||
$member_account = new MemberAccount();
|
||||
//修改用户的余额
|
||||
$member_account->addMemberAccount($order_info[ 'site_id' ], $order_info[ 'member_id' ], AccountDict::balance, $order_info[ 'face_value' ], 'memberrecharge', '0', '会员充值');
|
||||
|
||||
//积分
|
||||
if ($order_info[ 'point' ] > 0) {
|
||||
$member_account->addMemberAccount($order_info[ 'site_id' ], $order_info[ 'member_id' ], 'point', $order_info[ 'point' ], 'memberrecharge', '0', '会员充值奖励');
|
||||
}
|
||||
|
||||
//成长值
|
||||
if ($order_info[ 'growth' ] > 0) {
|
||||
$member_account->addMemberAccount($order_info[ 'site_id' ], $order_info[ 'member_id' ], 'growth', $order_info[ 'growth' ], 'memberrecharge', '0', '会员充值奖励');
|
||||
}
|
||||
//添加优惠券
|
||||
if (!empty($order_info[ 'coupon_id' ])) {
|
||||
$coupon_model = new Coupon();
|
||||
$coupon_id = explode(',', $order_info[ 'coupon_id' ]);
|
||||
$coupon_list = array_map(function($value) {
|
||||
return [ 'coupon_type_id' => $value, 'num' => 1 ];
|
||||
}, $coupon_id);
|
||||
$coupon_model->giveCoupon($coupon_list, $order_info[ 'site_id' ], $order_info[ 'member_id' ], Coupon::GET_TYPE_ACTIVITY_GIVE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐详情
|
||||
* @param array $condition
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeCardInfo($condition = [], $field = '*')
|
||||
{
|
||||
$info = model('member_recharge_card')->getInfo($condition, $field);
|
||||
if ($info) {
|
||||
//获取优惠券信息
|
||||
if ($info[ 'coupon_id' ]) {
|
||||
//优惠券字段
|
||||
$coupon_field = '*';
|
||||
$model = new CouponType();
|
||||
$coupon_list = $model->getCouponTypeList([ [ 'coupon_type_id', 'in', $info[ 'coupon_id' ] ] ], $coupon_field);
|
||||
$info[ 'coupon_list' ] = $coupon_list[ 'data' ];
|
||||
}
|
||||
}
|
||||
Cache::tag("member_recharge_card")->clear();
|
||||
return $this->success($info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开卡列表
|
||||
* @param array $condition
|
||||
* @param int $page
|
||||
* @param int $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeCardPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
|
||||
{
|
||||
$list = model('member_recharge_card')->pageList($condition, $field, $order, $page, $page_size);
|
||||
|
||||
Cache::tag("member_recharge_card")->clear();
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
}
|
||||
157
addon/memberrecharge/model/Memberrecharge.php
Executable file
157
addon/memberrecharge/model/Memberrecharge.php
Executable file
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\memberrecharge\model;
|
||||
|
||||
use addon\coupon\model\CouponType;
|
||||
use app\model\BaseModel;
|
||||
use think\facade\Cache;
|
||||
use app\model\system\Config as ConfigModel;
|
||||
use app\model\upload\Upload;
|
||||
|
||||
/**
|
||||
* 会员充值
|
||||
*/
|
||||
class Memberrecharge extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 添加套餐
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function addMemberRecharge($data)
|
||||
{
|
||||
$data[ 'create_time' ] = time();
|
||||
$data[ 'status' ] = 1;
|
||||
|
||||
$res = model('member_recharge')->add($data);
|
||||
Cache::tag("member_recharge")->clear();
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑套餐
|
||||
* @param array $condition
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function editMemberRecharge($condition, $data)
|
||||
{
|
||||
$data[ 'update_time' ] = time();
|
||||
$recharge_info = model('member_recharge')->getInfo($condition);
|
||||
if (!empty($recharge_info[ 'cover_img' ]) && !empty($data[ 'cover_img' ]) && $recharge_info[ 'cover_img' ] != $data[ 'cover_img' ]) {
|
||||
$upload_model = new Upload();
|
||||
$upload_model->deletePic($recharge_info[ 'cover_img' ], $recharge_info[ 'site_id' ]);
|
||||
}
|
||||
|
||||
$res = model('member_recharge')->update($data, $condition);
|
||||
Cache::tag("member_recharge")->clear();
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除套餐详情
|
||||
* @param array $condition
|
||||
* @return mixed
|
||||
*/
|
||||
public function deleteMemberRecharge($condition = [])
|
||||
{
|
||||
$recharge_info = model('member_recharge')->getInfo($condition);
|
||||
if (!empty($recharge_info[ 'cover_img' ])) {
|
||||
$upload_model = new Upload();
|
||||
$upload_model->deletePic($recharge_info[ 'cover_img' ], $recharge_info[ 'site_id' ]);
|
||||
}
|
||||
$res = model('member_recharge')->delete($condition);
|
||||
Cache::tag("member_recharge")->clear();
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐详情
|
||||
* @param array $condition
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeInfo($condition = [], $field = '*')
|
||||
{
|
||||
$recharge = model('member_recharge')->getInfo($condition, $field);
|
||||
if ($recharge) {
|
||||
//获取优惠券信息
|
||||
if ($recharge[ 'coupon_id' ]) {
|
||||
//优惠券字段
|
||||
$coupon_field = 'coupon_type_id,coupon_name,money,count,lead_count,max_fetch,at_least,end_time,image,validity_type,fixed_term,type,discount';
|
||||
|
||||
$model = new CouponType();
|
||||
$coupon = $model->getCouponTypeList([ [ 'coupon_type_id', 'in', $recharge[ 'coupon_id' ] ] ], $coupon_field);
|
||||
$recharge[ 'coupon_list' ] = $coupon[ 'data' ];
|
||||
}
|
||||
}
|
||||
Cache::tag("member_recharge")->clear();
|
||||
return $this->success($recharge);
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐分页列表
|
||||
* @param array $condition
|
||||
* @param int $page
|
||||
* @param int $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
|
||||
{
|
||||
$list = model('member_recharge')->pageList($condition, $field, $order, $page, $page_size);
|
||||
|
||||
Cache::tag("member_recharge")->clear();
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 套餐列表
|
||||
* @param array $condition
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeList($condition = [], $order = '', $field = '*')
|
||||
{
|
||||
$list = model('member_recharge')->getList($condition, $field, $order);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置会员充值配置
|
||||
* @param $data
|
||||
* @param $is_use
|
||||
* @param $site_id
|
||||
* @return array
|
||||
*/
|
||||
public function setConfig($data, $is_use, $site_id)
|
||||
{
|
||||
$config = new ConfigModel();
|
||||
$res = $config->setConfig($data, '会员充值配置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'MEMBER_RECHARGE_CONFIG' ] ]);
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员充值配置
|
||||
* @param $site_id
|
||||
* @return array
|
||||
*/
|
||||
public function getConfig($site_id)
|
||||
{
|
||||
$config = new ConfigModel();
|
||||
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'MEMBER_RECHARGE_CONFIG' ] ]);
|
||||
return $res;
|
||||
}
|
||||
|
||||
}
|
||||
267
addon/memberrecharge/model/MemberrechargeOrder.php
Executable file
267
addon/memberrecharge/model/MemberrechargeOrder.php
Executable file
@@ -0,0 +1,267 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\memberrecharge\model;
|
||||
|
||||
use addon\weapp\model\Weapp;
|
||||
use app\model\BaseModel;
|
||||
use addon\coupon\model\CouponType;
|
||||
use app\model\member\Member;
|
||||
use app\model\system\Stat;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
class MemberrechargeOrder extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 基础支付方式(不考虑实际在线支付方式或者货到付款方式)
|
||||
* @var unknown
|
||||
*/
|
||||
public $pay_type = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* 获取支付方式
|
||||
* @return unknown
|
||||
*/
|
||||
public function getPayType()
|
||||
{
|
||||
//获取订单基础的其他支付方式
|
||||
|
||||
$pay_type = $this->pay_type;
|
||||
//获取当前所有在线支付方式
|
||||
$onlinepay = event('PayType');
|
||||
if (!empty($onlinepay)) {
|
||||
foreach ($onlinepay as $k => $v) {
|
||||
$pay_type[ $v[ 'pay_type' ] ] = $v[ 'pay_type_name' ];
|
||||
}
|
||||
}
|
||||
$trade_pay_type_list = event('TradePayType', []);
|
||||
if (!empty($trade_pay_type_list)) {
|
||||
foreach ($trade_pay_type_list as $k => $v) {
|
||||
if (!empty($v)) {
|
||||
$pay_type = array_merge($pay_type, $v);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $pay_type;
|
||||
}
|
||||
|
||||
public function addMemberRechargeOrder($data)
|
||||
{
|
||||
$res = model('member_recharge_order')->add($data);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
* @param array $condition
|
||||
* @param string $field
|
||||
* @param string $alias
|
||||
* @param array $join
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeOrderInfo($condition = [], $field = '*', $alias = 'a', $join = [])
|
||||
{
|
||||
$order = model('member_recharge_order')->getInfo($condition, $field, $alias, $join);
|
||||
if ($order) {
|
||||
//获取优惠券信息
|
||||
$coupon_id = $order[ 'coupon_id' ] ?? 0;
|
||||
if ($coupon_id > 0) {
|
||||
//优惠券字段
|
||||
$coupon_field = 'coupon_type_id,coupon_name,money,count,lead_count,max_fetch,at_least,end_time,image,validity_type,fixed_term,type';
|
||||
|
||||
$model = new CouponType();
|
||||
$coupon = $model->getCouponTypeList([ [ 'coupon_type_id', 'in', $order[ 'coupon_id' ] ] ], $coupon_field);
|
||||
$order[ 'coupon_list' ] = $coupon;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $this->success($order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表
|
||||
* @param array $condition
|
||||
* @param int $page
|
||||
* @param int $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @param string $alias
|
||||
* @param array $join
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberRechargeOrderPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*', $alias = 'a', $join = [])
|
||||
{
|
||||
$list = model('member_recharge_order')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
|
||||
if (!empty($list[ 'list' ])) {
|
||||
$coupon_ids = '';
|
||||
foreach ($list[ 'list' ] as $k => $v) {
|
||||
if (!empty($v[ 'coupon_id' ])) {
|
||||
$coupon_ids = empty($coupon_ids) ? $v[ 'coupon_id' ] : $coupon_ids . ',' . $v[ 'coupon_id' ];
|
||||
}
|
||||
}
|
||||
$coupon_list = [];
|
||||
if (!empty($coupon_ids)) {
|
||||
$coupon_list = model('promotion_coupon_type')->getList([ [ 'coupon_type_id', 'in', $coupon_ids ] ], 'coupon_type_id,coupon_name');
|
||||
|
||||
}
|
||||
if (!empty($coupon_list)) {
|
||||
$key = array_column($coupon_list, 'coupon_type_id');
|
||||
$coupon_list = array_combine($key, $coupon_list);
|
||||
}
|
||||
|
||||
foreach ($list[ 'list' ] as $k => $v) {
|
||||
$list[ 'list' ][ $k ][ 'coupon_name' ] = '';
|
||||
$coupon_name = '';
|
||||
if (!empty($v[ 'coupon_id' ])) {
|
||||
$coupon_array = explode(',', $v[ 'coupon_id' ]);
|
||||
foreach ($coupon_array as $value) {
|
||||
$coupon_name_value = $coupon_list[ $value ][ 'name' ] ?? '';
|
||||
$coupon_name .= ',' . $coupon_name_value;
|
||||
}
|
||||
$coupon_name = ltrim($coupon_name, ',');
|
||||
}
|
||||
$list[ 'list' ][ $k ][ 'coupon_name' ] = $coupon_name;
|
||||
}
|
||||
}
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调
|
||||
* @param $data
|
||||
* @return array|\multitype
|
||||
*/
|
||||
public function orderPay($data)
|
||||
{
|
||||
$order_field = 'order_id,recharge_id,recharge_name,order_no,cover_img,face_value,buy_price,point,growth,coupon_id,price,pay_type,status,create_time,pay_time,member_id,member_img,nickname,site_id,out_trade_no,order_from';
|
||||
$order_info = $this->getMemberRechargeOrderInfo([ [ 'out_trade_no', '=', $data[ 'out_trade_no' ] ] ], $order_field)[ 'data' ];
|
||||
if ($order_info[ 'status' ] == 1) {
|
||||
model('member_recharge_order')->startTrans();
|
||||
try {
|
||||
|
||||
$pay_list = $this->getPayType();
|
||||
$pay_type_name = '';
|
||||
if (!empty($data[ 'pay_type' ])) {
|
||||
$pay_type_name = $pay_list[ $data[ 'pay_type' ] ];
|
||||
}
|
||||
|
||||
//修改订单状态
|
||||
$order_data = [
|
||||
'pay_type' => $data[ 'pay_type' ],
|
||||
'pay_type_name' => $pay_type_name,
|
||||
'pay_time' => time(),
|
||||
'price' => $order_info[ 'buy_price' ],
|
||||
'status' => 2
|
||||
];
|
||||
$res = model('member_recharge_order')->update($order_data, [ [ 'out_trade_no', '=', $data[ 'out_trade_no' ] ] ]);
|
||||
|
||||
//添加开卡记录
|
||||
$card_model = new MemberRechargeCard();
|
||||
$order_info[ 'use_status' ] = 2;
|
||||
$order_info[ 'use_time' ] = time();
|
||||
$card_model->addMemberRechargeCard($order_info);
|
||||
|
||||
//发放礼包
|
||||
$card_model->addMemberAccount($order_info);
|
||||
|
||||
//获取套餐信息
|
||||
$recharge_model = new Memberrecharge();
|
||||
$recharge_info = $recharge_model->getMemberRechargeInfo([ [ 'recharge_id', '=', $order_info[ 'recharge_id' ] ] ], 'sale_num,coupon_id');
|
||||
//增加发放数
|
||||
if (!empty($recharge_info[ 'data' ])) {
|
||||
$sale_num = $recharge_info[ 'data' ][ 'sale_num' ] + 1;
|
||||
$recharge_model->editMemberRecharge([ [ 'recharge_id', '=', $order_info[ 'recharge_id' ] ] ], [ 'sale_num' => $sale_num ]);
|
||||
}
|
||||
event('MemberRechargeOrderPay', $order_info);
|
||||
$is_stat = $data[ 'is_stat' ] ?? true;
|
||||
if ($is_stat) {
|
||||
$stat_model = new Stat();
|
||||
$stat_res = $stat_model->switchStat([
|
||||
'type' => 'recharge',
|
||||
'data' => [
|
||||
'order_id' => $order_info[ 'order_id' ],
|
||||
'site_id' => $order_info[ 'site_id' ]
|
||||
]
|
||||
]);
|
||||
}
|
||||
model('member_recharge_order')->commit();
|
||||
return $this->success($res);
|
||||
} catch (\Exception $e) {
|
||||
model('member_recharge_order')->rollback();
|
||||
dd($e->getMessage() . $e->getFile() . $e->getLine());
|
||||
Log::write('memberrechargeerr' . json_encode($e->getMessage() . $e->getFile() . $e->getLine()));
|
||||
return $this->error('', $e->getMessage());
|
||||
}
|
||||
} else {
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时关闭订单
|
||||
* @param $order_id
|
||||
* @return array
|
||||
*/
|
||||
public function cronMemberRechargeOrderClose($order_id)
|
||||
{
|
||||
//获取订单信息
|
||||
$order_info = $this->getMemberRechargeOrderInfo([ [ 'order_id', '=', $order_id ] ], 'status')[ 'data' ];
|
||||
if (empty($order_info)) {
|
||||
$res = true;
|
||||
} else {
|
||||
if ($order_info[ 'status' ] == 1) {
|
||||
//删除订单
|
||||
$res = model('member_recharge_order')->delete([ [ 'order_id', '=', $order_id ] ]);
|
||||
Cache::tag("member_recharge_order")->clear();
|
||||
} else {
|
||||
$res = true;
|
||||
}
|
||||
}
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取总数
|
||||
* @param array $where
|
||||
* @param string $field
|
||||
* @param string $alias
|
||||
* @param null $join
|
||||
* @param null $group
|
||||
* @return array
|
||||
*/
|
||||
public function getOrderCount($where = [], $field = '*', $alias = 'a', $join = null, $group = null)
|
||||
{
|
||||
$res = model('member_recharge_order')->getCount($where, $field, $alias, $join, $group);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取总和
|
||||
* @param array $where
|
||||
* @param string $field
|
||||
* @param string $alias
|
||||
* @param null $join
|
||||
* @return array
|
||||
*/
|
||||
public function getOrderSum($where = [], $field = '*', $alias = 'a', $join = null)
|
||||
{
|
||||
$res = model('member_recharge_order')->getSum($where, $field, $alias, $join);
|
||||
return $this->success($res);
|
||||
}
|
||||
}
|
||||
125
addon/memberrecharge/model/MemberrechargeOrderCreate.php
Executable file
125
addon/memberrecharge/model/MemberrechargeOrderCreate.php
Executable file
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\memberrecharge\model;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\order\OrderCreate;
|
||||
use app\model\system\Cron;
|
||||
use app\model\system\Pay;
|
||||
use app\model\order\Config;
|
||||
use app\model\member\Member as MemberModel;
|
||||
|
||||
/**
|
||||
* 订单创建(充值)
|
||||
*
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class MemberrechargeOrderCreate extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 订单创建
|
||||
* @param $data
|
||||
* @return \app\model\order\unknown|array|mixed
|
||||
*/
|
||||
public function create($data)
|
||||
{
|
||||
//获取用户头像
|
||||
$member_model = new MemberModel();
|
||||
$member_info = $member_model->getMemberInfo([ [ 'member_id', '=', $data[ 'member_id' ] ] ], 'headimg,nickname')[ 'data' ];
|
||||
|
||||
//获取套餐信息
|
||||
$recharge_model = new Memberrecharge();
|
||||
|
||||
if ($data[ 'recharge_id' ] > 0) {
|
||||
//套餐字段
|
||||
$field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id';
|
||||
$recharge_info = $recharge_model->getMemberRechargeInfo([ [ 'recharge_id', '=', $data[ 'recharge_id' ] ] ], $field)[ 'data' ];
|
||||
if (empty($recharge_info)) {
|
||||
return $this->error('', '无效的充值套餐');
|
||||
}
|
||||
} else {
|
||||
$recharge_info = array (
|
||||
"recharge_id" => 0,
|
||||
"recharge_name" => '自定义面额充值',
|
||||
"cover_img" => '',
|
||||
"face_value" => $data[ 'face_value' ],
|
||||
"buy_price" => $data[ 'face_value' ],
|
||||
"point" => 0,
|
||||
"growth" => 0,
|
||||
"coupon_id" => 0,
|
||||
);
|
||||
}
|
||||
|
||||
//创建或加入
|
||||
$pay = new Pay();
|
||||
$out_trade_no = $pay->createOutTradeNo($data[ 'member_id' ]);
|
||||
$order_no = (new OrderCreate())->createOrderNo();
|
||||
|
||||
$order_data = [
|
||||
'recharge_id' => $data[ 'recharge_id' ],
|
||||
'order_no' => $order_no,
|
||||
'out_trade_no' => $out_trade_no,
|
||||
'recharge_name' => $recharge_info[ 'recharge_name' ],
|
||||
'cover_img' => $recharge_info[ 'cover_img' ],
|
||||
'face_value' => $recharge_info[ 'face_value' ],
|
||||
'buy_price' => $recharge_info[ 'buy_price' ],
|
||||
'pay_money' => $recharge_info[ 'buy_price' ],
|
||||
'point' => $recharge_info[ 'point' ],
|
||||
'growth' => $recharge_info[ 'growth' ],
|
||||
'coupon_id' => $recharge_info[ 'coupon_id' ],
|
||||
'status' => 1,
|
||||
'create_time' => time(),
|
||||
'member_id' => $data[ 'member_id' ],
|
||||
'member_img' => $member_info[ 'headimg' ],
|
||||
'nickname' => $member_info[ 'nickname' ],
|
||||
'order_from' => $data[ 'order_from' ],
|
||||
'order_from_name' => $data[ 'order_from_name' ],
|
||||
'site_id' => $data[ 'site_id' ],
|
||||
'store_id' => $data[ 'store_id' ] ?? 0,
|
||||
'remark' => $data[ 'remark' ] ?? '',
|
||||
'relate_id' => $data[ 'relate_id' ] ?? 0,
|
||||
'relate_type' => $data[ 'relate_type' ] ?? '',
|
||||
];
|
||||
|
||||
model("member_recharge_order")->startTrans();
|
||||
//循环生成多个订单
|
||||
try {
|
||||
|
||||
$order_id = model("member_recharge_order")->add($order_data);
|
||||
//生成整体支付单据
|
||||
$pay->addPay($data[ 'site_id' ], $out_trade_no, "", "会员充值套餐,面额:" . $recharge_info[ 'face_value' ], "会员充值套餐,面额:" . $recharge_info[ 'face_value' ], $recharge_info[ 'buy_price' ], '', 'MemberrechargeOrderPayNotify', '', $order_id, $data[ 'member_id' ]);
|
||||
|
||||
//计算订单自动关闭时间
|
||||
$config_model = new Config();
|
||||
$order_config = $config_model->getOrderEventTimeConfig($data[ 'site_id' ])[ "data" ];
|
||||
$now_time = time();
|
||||
if (!empty($order_config)) {
|
||||
$execute_time = $now_time + $order_config[ "value" ][ "auto_close" ] * 60;//自动关闭时间
|
||||
} else {
|
||||
$execute_time = $now_time + 3600;//尚未配置 默认一天
|
||||
}
|
||||
$cron_model = new Cron();
|
||||
$cron_model->addCron(1, 0, "订单自动关闭", "MemberrechargeOrderClose", $execute_time, $order_id);
|
||||
|
||||
event("MemberRechargeOrderCreate", [ 'order_id' => $order_id ]);
|
||||
model("member_recharge_order")->commit();
|
||||
return $this->success($out_trade_no);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
model("member_recharge_order")->rollback();
|
||||
return $this->error('', $e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
117
addon/memberrecharge/model/cashier/Calculate.php
Executable file
117
addon/memberrecharge/model/cashier/Calculate.php
Executable file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace addon\memberrecharge\model\cashier;
|
||||
|
||||
use app\model\BaseModel;
|
||||
|
||||
class Calculate extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 计算
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function calculate($data)
|
||||
{
|
||||
$order_object = $data['order_object'];
|
||||
$type = $order_object->param[ 'type' ] ?? '';
|
||||
if ($type == 'recharge') {
|
||||
$order_name = '';
|
||||
$goods_list = [];
|
||||
|
||||
$order_object->cashier_order_type = 'recharge';
|
||||
$goods_money = 0;
|
||||
$sku_array = $order_object->param[ 'sku_array' ];
|
||||
$reward = $data[ 'reward' ] ?? [];
|
||||
$reward_goods_list = $data[ 'reward_goods_list' ] ?? [];
|
||||
$sku_ids = [];
|
||||
$money_array = [];
|
||||
foreach ($sku_array as $k => $v) {
|
||||
$item_recharge_id = $v[ 'recharge_id' ] ?? 0;
|
||||
if ($item_recharge_id > 0) {
|
||||
$sku_ids[] = $item_recharge_id;
|
||||
}
|
||||
$item_money = $v[ 'money' ] ?? 0;
|
||||
if ($item_money > 0) {
|
||||
$money_array[] = $item_money;
|
||||
}
|
||||
}
|
||||
$goods_image = 'upload/cashier/member-recharge-icon.png';
|
||||
if (!empty($sku_ids)) {
|
||||
$member_recharge_condition = array (
|
||||
[ 'recharge_id', 'in', $sku_ids ]
|
||||
);
|
||||
$member_recharge_list = model('member_recharge')->getList($member_recharge_condition);
|
||||
|
||||
if (!empty($member_recharge_list)) {
|
||||
foreach ($member_recharge_list as $k => $v) {
|
||||
$item_sku_id = $v[ 'recharge_id' ];
|
||||
$price = $v[ 'buy_price' ];
|
||||
$item_goods_id = 0;//sku_id已经是充值个体组件
|
||||
$num = 1;
|
||||
$item_goods_money = $price * $num;
|
||||
$goods_money += $item_goods_money;
|
||||
$sku_name = '充值套餐 ' . $v[ 'recharge_name' ];
|
||||
$order_name = string_split($order_name, ',', '充值套餐' . $v[ 'recharge_name' ]);
|
||||
$goods_list[] = array (
|
||||
'goods_id' => $item_goods_id,
|
||||
'sku_id' => $item_sku_id,
|
||||
'price' => $price,
|
||||
'num' => $num,
|
||||
'goods_money' => $item_goods_money,
|
||||
'sku_name' => $sku_name,
|
||||
'real_goods_money' => $item_goods_money,
|
||||
'goods_name' => '充值礼包',
|
||||
'goods_image' => $goods_image,
|
||||
'spec_name' => $v[ 'recharge_name' ],
|
||||
'goods_class' => 'recharge',
|
||||
'goods_class_name' => '充值礼包',
|
||||
'is_virtual' => 1
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($money_array)) {
|
||||
foreach ($money_array as $k => $v) {
|
||||
$item_sku_id = 0;
|
||||
$price = $v;
|
||||
if ($price > 0) {
|
||||
$item_goods_id = 0;
|
||||
$num = 1;
|
||||
$item_goods_money = $price * $num;
|
||||
$goods_money += $item_goods_money;
|
||||
$sku_name = '自定义充值金额' . $item_goods_money;
|
||||
$order_name = string_split($order_name, ',', '自定义充值金额' . $item_goods_money);
|
||||
$goods_list[] = array (
|
||||
'goods_id' => $item_goods_id,
|
||||
'sku_id' => $item_sku_id,
|
||||
'price' => $price,
|
||||
'num' => $num,
|
||||
'goods_money' => $item_goods_money,
|
||||
'real_goods_money' => $item_goods_money,
|
||||
'sku_name' => $sku_name,
|
||||
'goods_name' => '充值',
|
||||
'goods_image' => $goods_image,
|
||||
'spec_name' => '自定义充值',
|
||||
'goods_class' => 'recharge',
|
||||
'goods_class_name' => '充值礼包',
|
||||
'is_virtual' => 1
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (empty($goods_list)) throw new \Exception('缺少必填参数商品数据');
|
||||
|
||||
$order_object->goods_money = $goods_money;
|
||||
$order_object->real_goods_money = $goods_money;
|
||||
$order_object->goods_list = $goods_list;
|
||||
$order_object->order_name = $order_name;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user