cxhxy/addons/food/model/Applet.php
test_service d3170b4d1c 1
2023-12-01 15:43:29 +08:00

255 lines
8.3 KiB
PHP

<?php
namespace addons\food\model;
use app\common\model\Applet as AppletModel;
use app\common\model\Record as RecordModel;
use app\common\model\Setting as SettingModel;
use app\common\model\User as UserModel;
use app\common\model\Template;
use app\common\model\DivideAccount;
use app\common\model\Apply;
use app\common\model\AppletName;
use app\common\model\Wechat;
use app\common\model\food\Category;
use app\common\model\food\Goods;
use app\common\model\food\GoodsImage;
use app\common\model\food\GoodsSpec;
use app\common\model\food\GoodsSpecRel;
use app\common\model\food\Spec;
use app\common\model\food\SpecValue;
use app\common\model\food\Order;
use app\common\model\food\OrderGoods;
use app\common\model\food\OrderAddress;
use app\common\model\food\OrderDelivery;
use app\common\model\food\Pact;
use app\common\model\food\Comment;
use app\common\model\food\Shop;
use app\common\model\food\ShopClerk;
use app\common\model\food\Table;
use app\common\model\food\Record;
use app\common\model\food\Device;
use app\common\model\food\Help;
use app\common\model\food\Qrcode;
use app\common\model\food\Coupon;
use app\common\model\food\CouponUser;
use app\common\model\food\CouponLog;
use app\common\model\food\RechargePlan;
use app\common\model\food\User;
use app\common\model\food\Address;
use app\common\model\food\SignLog;
use app\common\model\food\Setting;
use app\common\model\food\Page;
use addons\upload\model\UploadFile;
use addons\upload\model\UploadGroup;
use think\facade\Db;
/**
* 小程序模型
*/
class Applet extends AppletModel
{
/**
* 创建小程序
* @param [type] $data 数据
* @param string $data_type 数据类型 add=用户新增,apply=平台入驻
*/
public function add(array $data)
{
$pay = 0;//商户支付费用
$agent_price = 0;//代理费用
if($data['data_type']=='add'){
$template = Template::where('app_type',$data['app_type'])->find();//获取版本详情
//判断是否试用
if($data['year']>0){
//计算费用
if($data['shop_mode']==10){
//单商户
$pay = $template['buy_single'][$data['year']];
$agent_price = $template['single_price']*$data['year'];
}
if($data['shop_mode']==20){
//多商户
$pay = $template['buy_many'][$data['year']-1];
$agent_price = $template['many_price']*$data['year'];
}
$expire_time = strtotime('+'.$data['year'].'year');//计算到期时间
}else{
$expire_time = time()+$template['trial_day']*3600*24;//计算到期时间
}
$data['expire_time'] = $expire_time;
}
// 开启事务
Db::startTrans();
try {
//扣费
if($data['data_type']=='add' AND $pay>0){
$user = UserModel::get($data['user_id']);//获取商户详情
$admin_price = $pay;//平台获取费用
$order_list = [];
$order_no = order_no();
array_push($order_list,[
'mode' => 20,//消费
'type' => 10,//余额
'order_no' => $order_no,
'money' => $pay,
'remark' => '购买小程序模板',
'user_id' => $data['user_id']
]);
//用户扣费
$money = $user['money']-$pay;//计算扣除后的余额
$user->money = ['dec',$pay];
$user->score = ['inc',$pay]; //增加积分
$user->pay = ['inc',$pay]; //增加消费金额
$user->save();
//代理分账
if($data['agent_id'] > 0){
if($pay - $agent_price < 0){
$this->error = '销售金额小于代理金额';
return false;
}
$admin_price = $agent_price;//平台获取费用
//代理分红
$agent = UserModel::get($data['agent_id']);
$agent->money = ['inc',$pay - $agent_price];
$agent->save();
array_push($order_list,[
'mode' => 40,//赠送
'type' => 10,//余额
'order_no' => $order_no,
'money' => $pay - $agent_price,
'remark' => '销售模板分红',
'user_id' => $data['agent_id']
]);
}
//平台收入记录
if($admin_price > 0){
array_push($order_list,[
'mode' => 40,//扣减
'type' => 10,//余额
'order_no' => $order_no,
'money' => $admin_price,
'remark' => '销售模板'
]);
}
//添加流水记录
$model = new RecordModel;
$model->saveAll($order_list);
}
// 添加小程序记录
$this->save($data);
// 新增小程序diy配置
$Page = new Page;
$Page->insertDefault($this->applet_id,$data);
// 新增默认门店
$Shop = new Shop;
$Shop->insertDefault($this->applet_id,$data);
Db::commit();
if($data['data_type']=='add'){
if($pay>0){
//账户资金变动提醒
sand_account_change_msg('购买小程序模板',$pay,$money,$data['user_id']);
}else{
//试用申请成功通知
sand_testing_msg('小程序模板',$expire_time,$data['user_id']);
}
}
return $this->applet_id;
} catch (\Exception $e) {
Db::rollback();
}
return false;
}
/**
* 删除数据
*/
public function remove($applet_id)
{
$filter['applet_id'] = $applet_id;
// 开启事务
Db::startTrans();
try {
$this->clear($applet_id);//清除数据
DivideAccount::where($filter)->delete();
SettingModel::where($filter)->delete();
AppletName::where($filter)->delete();
Apply::where($filter)->delete();
//删除公众号数据
$model = new Wechat;
$model->clear($applet_id);
//清除上传的图片
if(get_addons_info('upload')){
$list = (new UploadFile)->where($filter)->select();
foreach ($list as $item){
$file = public_path() . 'uploads/' . $item['file_path'];
if (is_file($file)) {
@unlink($file);//删除文件
}
}
UploadFile::where($filter)->delete();
UploadGroup::where($filter)->delete();
}
$this->where($filter)->delete();
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
}
return false;
}
/**
* 清除数据
*/
public function clear($applet_id)
{
$filter['applet_id'] = $applet_id;
// 开启事务
Db::startTrans();
try {
Category::where($filter)->delete();
Goods::where($filter)->delete();
GoodsImage::where($filter)->delete();
GoodsSpec::where($filter)->delete();
GoodsSpecRel::where($filter)->delete();
Spec::where($filter)->delete();
SpecValue::where($filter)->delete();
Order::where($filter)->delete();
OrderGoods::where($filter)->delete();
OrderAddress::where($filter)->delete();
OrderDelivery::where($filter)->delete();
Pact::where($filter)->delete();
Comment::where($filter)->delete();
Shop::where($filter)->delete();
ShopClerk::where($filter)->delete();
Record::where($filter)->delete();
Device::where($filter)->delete();
Help::where($filter)->delete();
Coupon::where($filter)->delete();
CouponUser::where($filter)->delete();
CouponLog::where($filter)->delete();
RechargePlan::where($filter)->delete();
User::where($filter)->delete();
Address::where($filter)->delete();
SignLog::where($filter)->delete();
Setting::where($filter)->delete();
Page::where($filter)->delete();
//要删除文件
Qrcode::where($filter)->delete();
Table::where($filter)->delete();
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
}
return false;
}
}