更新3.1.1版本

This commit is contained in:
liaofei 2019-11-18 14:50:16 +08:00
parent cd60e57e7a
commit b787756b2c
392 changed files with 15062 additions and 6555 deletions

View File

@ -1,3 +1,3 @@
<?php <?php
define('INSTALL_DATE',1566873827); define('INSTALL_DATE',1567993973);
define('SERIALNUMBER','FmQliB'); define('SERIALNUMBER','BaoWxF');

8
crmeb/.htaccess Normal file
View File

@ -0,0 +1,8 @@
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

View File

@ -1,2 +1,2 @@
version=CRMEB-DT v3.1 version=CRMEB-DT v3.1.1
version_code=133 version_code=134

View File

@ -2,6 +2,8 @@
namespace app; namespace app;
use crmeb\services\SystemConfigService;
use crmeb\services\GroupDataService;
use crmeb\utils\Json; use crmeb\utils\Json;
use think\facade\Db; use think\facade\Db;
use think\Service; use think\Service;
@ -10,7 +12,9 @@ class AppService extends Service
{ {
public $bind = [ public $bind = [
'json' => Json::class 'json' => Json::class,
'sysConfig' => SystemConfigService::class,
'sysGroupData' => GroupDataService::class
]; ];
public function boot() public function boot()

View File

@ -0,0 +1,20 @@
<?php
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------
return [
// 模板后缀
'view_suffix' => 'php',
// 模板路径
'view_path' => app_path('view'),
// 视图输出字符串内容替换
'tpl_replace_string' => [
'{__PUBLIC_PATH}' => '/', //public 目录
'{__STATIC_PATH}' => '/static/', //全局静态目录
'{__PLUG_PATH}' => '/static/plug/', //全局静态插件
'{__ADMIN_PATH}' => '/system/', //后台目录
'{__FRAME_PATH}' => '/system/frame/', //后台框架
'{__MODULE_PATH}' => '/system/module/', //后台模块
]
];

View File

@ -37,11 +37,11 @@ class AuthController extends SystemBasic
protected function initialize() protected function initialize()
{ {
parent::initialize(); parent::initialize();
if(!SystemAdmin::hasActiveAdmin()) return $this->redirect('Login/index'); if(!SystemAdmin::hasActiveAdmin()) return $this->redirect(Url::buildUrl('login/index')->suffix(false)->build());
try{ try{
$adminInfo = SystemAdmin::activeAdminInfoOrFail(); $adminInfo = SystemAdmin::activeAdminInfoOrFail();
}catch (\Exception $e){ }catch (\Exception $e){
return $this->failed(SystemAdmin::getErrorInfo($e->getMessage()),Url::buildUrl('Login/index')); return $this->failed(SystemAdmin::getErrorInfo($e->getMessage()),Url::buildUrl('login/index')->suffix(false)->build());
} }
$this->adminInfo = $adminInfo; $this->adminInfo = $adminInfo;
$this->adminId = $adminInfo['id']; $this->adminId = $adminInfo['id'];
@ -58,7 +58,7 @@ class AuthController extends SystemBasic
{ {
static $allAuth = null; static $allAuth = null;
if($allAuth === null) $allAuth = SystemRole::getAllAuth(); if($allAuth === null) $allAuth = SystemRole::getAllAuth();
if($module === null) $module = $this->request->app(); if($module === null) $module = app('http')->getName();
if($controller === null) $controller = $this->request->controller(); if($controller === null) $controller = $this->request->controller();
if($action === null) $action = $this->request->action(); if($action === null) $action = $this->request->action();
if(!count($route)) $route = $this->request->route(); if(!count($route)) $route = $this->request->route();

View File

@ -12,9 +12,9 @@ use app\admin\model\user\UserExtract as UserExtractModel;//分销
use app\admin\model\user\User as UserModel;//用户 use app\admin\model\user\User as UserModel;//用户
use app\admin\model\store\StoreProductReply as StoreProductReplyModel;//评论 use app\admin\model\store\StoreProductReply as StoreProductReplyModel;//评论
use app\admin\model\store\StoreProduct as ProductModel;//产品 use app\admin\model\store\StoreProduct as ProductModel;//产品
use app\models\store\StoreOrder; use crmeb\utils\Template;
use crmeb\services\SystemConfigService;
use FormBuilder\Json; use FormBuilder\Json;
use think\facade\Route;
/** /**
* 首页控制器 * 首页控制器
@ -33,12 +33,29 @@ class Index extends AuthController
$this->assign([ $this->assign([
'menuList'=>SystemMenus::menuList(), 'menuList'=>SystemMenus::menuList(),
'site_logo'=>json_decode($site_logo['value'],true), 'site_logo'=>json_decode($site_logo['value'],true),
'new_order_audio_link'=>SystemConfigService::get('new_order_audio_link'), 'new_order_audio_link'=>sysConfig('new_order_audio_link'),
'role_name'=>SystemRole::where('id',$roles[0])->field('role_name')->find() 'role_name'=>SystemRole::where('id',$roles[0])->field('role_name')->find()
]); ]);
return $this->fetch(); return $this->fetch();
} }
//后台首页内容
public function test()
{
$res = Template::instance()->wechat()
->setTemplateCode('OPENTM207791277')
->setTemplateData([
'first'=>'亲,您购买的商品已支付成功',
'keyword1'=>'wx12545454545',
'keyword2'=>'0.99',
'remark'=>'点击查看订单详情'
])
->setTemplateOpenId('od9iXwj58C4aLy11ABMxFkgJelt0')
->setTemplateUrl(Route::buildUrl('order/detail/wx12545454545'))
->send();
var_dump($res);
}
//后台首页内容
public function main() public function main()
{ {
/*首页第一行统计*/ /*首页第一行统计*/

View File

@ -39,11 +39,13 @@ class Login extends SystemBasic
$res = SystemAdmin::login($account,$pwd); $res = SystemAdmin::login($account,$pwd);
if($res){ if($res){
Session::set('login_error',null); Session::set('login_error',null);
return $this->redirect(Url::buildUrl('Index/index')); Session::save();
return $this->successful(['url'=>Url::buildUrl('Index/index')->build()]);
}else{ }else{
$error['num'] += 1; $error['num'] += 1;
$error['time'] = time(); $error['time'] = time();
Session::set('login_error',$error); Session::set('login_error',$error);
Session::save();
return $this->failed(SystemAdmin::getErrorInfo('用户名错误,请重新输入')); return $this->failed(SystemAdmin::getErrorInfo('用户名错误,请重新输入'));
} }
} }
@ -60,6 +62,6 @@ class Login extends SystemBasic
public function logout() public function logout()
{ {
SystemAdmin::clearLoginInfo(); SystemAdmin::clearLoginInfo();
$this->redirect('Login/index'); $this->redirect(Url::buildUrl('index')->build());
} }
} }

View File

@ -27,7 +27,7 @@ class AgentManage extends AuthController
public function index() public function index()
{ {
$this->assign( 'year',getMonth()); $this->assign( 'year',getMonth());
$this->assign('store_brokerage_statu',\crmeb\services\SystemConfigService::get('store_brokerage_statu')); $this->assign('store_brokerage_statu',sysConfig('store_brokerage_statu'));
return $this->fetch(); return $this->fetch();
} }
public function get_spread_list() public function get_spread_list()
@ -276,10 +276,7 @@ class AgentManage extends AuthController
public function empty_spread($uid=0) public function empty_spread($uid=0)
{ {
if(!$uid) return JsonService::fail('缺少参数'); if(!$uid) return JsonService::fail('缺少参数');
$res=true; $res = User::where('uid',$uid)->update(['spread_uid'=>0]);
$spread_uid = User::where('spread_uid',$uid)->column('uid','uid');
if(count($spread_uid)) $res = $res && false !== User::where('spread_uid','in',$spread_uid)->update(['spread_uid'=>0]);
$res = $res && false !== User::where('spread_uid',$uid)->update(['spread_uid'=>0]);
if($res) if($res)
return JsonService::successful('清除成功'); return JsonService::successful('清除成功');
else else

View File

@ -54,7 +54,7 @@ class WechatNews extends AuthController
$news['url'] = ''; $news['url'] = '';
$news['cid'] = array(); $news['cid'] = array();
if($id){ if($id){
$news = \app\admin\model\wechat\WechatNews::where('n.id',$id)->alias('n')->field('n.*,c.content')->join('__WECHAT_NEWS_CONTENT__ c','c.nid=n.id')->find(); $news = \app\admin\model\wechat\WechatNews::where('n.id',$id)->alias('n')->field('n.*,c.content')->join('wechat_news_content c','c.nid=n.id')->find();
if(!$news) return $this->failedNotice('数据不存在!'); if(!$news) return $this->failedNotice('数据不存在!');
$news['cid'] = explode(',',$news['cid']); $news['cid'] = explode(',',$news['cid']);
// dump($news); // dump($news);

View File

@ -124,7 +124,7 @@ SCRIPT;
'keyword2'=>$UserRecharge['price'], 'keyword2'=>$UserRecharge['price'],
'keyword3'=>date('Y-m-d H:i:s',$UserRecharge['add_time']), 'keyword3'=>date('Y-m-d H:i:s',$UserRecharge['add_time']),
'remark'=>'点击查看订单详情' 'remark'=>'点击查看订单详情'
],Url::buildUrl('wap/My/balance','',true,true)); ],Url::buildUrl('/user/bill/2')->suffix(false)->build());
break; break;
case 'routine': case 'routine':
RoutineTemplate::sendOut('ORDER_REFUND_SUCCESS',$UserRecharge['uid'],[ RoutineTemplate::sendOut('ORDER_REFUND_SUCCESS',$UserRecharge['uid'],[

View File

@ -109,6 +109,10 @@ class StoreOrder extends AuthController
} }
$orderInfo->status = 2; $orderInfo->status = 2;
if($orderInfo->save()) { if($orderInfo->save()) {
OrderRepository::storeProductOrderTakeDeliveryAdmin($orderInfo);
StoreOrderStatus::setStatus($orderInfo->id,'take_delivery','已核销');
//发送短信
event('ShortMssageSend',[$orderInfo['order_id'],'Receiving']);
StoreOrderModel::commitTrans(); StoreOrderModel::commitTrans();
return JsonService::successful('核销成功!'); return JsonService::successful('核销成功!');
}else { }else {
@ -475,7 +479,7 @@ class StoreOrder extends AuthController
$refund_data['pay_price'] = $product['pay_price']; $refund_data['pay_price'] = $product['pay_price'];
$refund_data['refund_price'] = $refund_price; $refund_data['refund_price'] = $refund_price;
if($product['pay_type'] == 'weixin'){ if($product['pay_type'] == 'weixin'){
if($product['is_channel']){//小程序 if($product['is_channel'] == 1){//小程序
try{ try{
MiniProgramService::payOrderRefund($product['order_id'],$refund_data);//2.5.36 MiniProgramService::payOrderRefund($product['order_id'],$refund_data);//2.5.36
}catch(\Exception $e){ }catch(\Exception $e){
@ -717,6 +721,9 @@ class StoreOrder extends AuthController
$res = $res1 && $res2; $res = $res1 && $res2;
BaseModel::checkTrans($res); BaseModel::checkTrans($res);
if(!$res) return Json::fail('退积分失败!'); if(!$res) return Json::fail('退积分失败!');
if($product['pay_price'] == 0 && $bj == 0){
$data['refund_status'] = 2;
}
StoreOrderModel::edit($data,$id); StoreOrderModel::edit($data,$id);
StoreOrderStatus::setStatus($id,'integral_back','商品退积分:'.$data['back_integral']); StoreOrderStatus::setStatus($id,'integral_back','商品退积分:'.$data['back_integral']);
return Json::successful('退积分成功!'); return Json::successful('退积分成功!');

View File

@ -327,7 +327,7 @@ class CombinationOrder extends AuthController
$refund_data['pay_price'] = $product['pay_price']; $refund_data['pay_price'] = $product['pay_price'];
$refund_data['refund_price'] = $refund_price; $refund_data['refund_price'] = $refund_price;
if($product['pay_type'] == 'weixin'){ if($product['pay_type'] == 'weixin'){
if($product['is_channel']){//TODO 小程序 if($product['is_channel'] == 1){//TODO 小程序
try{ try{
MiniProgramService::payOrderRefund($product['order_id'],$refund_data);//2.5.36 MiniProgramService::payOrderRefund($product['order_id'],$refund_data);//2.5.36
}catch(\Exception $e){ }catch(\Exception $e){

View File

@ -176,7 +176,7 @@ class SystemAdmin extends AuthController
* 个人资料 展示 * 个人资料 展示
* @return string * @return string
*/ */
public function adminInfo(){ public function admin_info(){
$adminInfo = $this->adminInfo;//获取当前登录的管理员 $adminInfo = $this->adminInfo;//获取当前登录的管理员
$this->assign('adminInfo',$adminInfo); $this->assign('adminInfo',$adminInfo);
return $this->fetch(); return $this->fetch();

View File

@ -1,6 +1,8 @@
<?php <?php
namespace app\admin\controller\setting; namespace app\admin\controller\setting;
use crmeb\services\CacheService;
use crmeb\services\SystemConfigService;
use think\facade\Route as Url; use think\facade\Route as Url;
use crmeb\services\FormBuilder as Form; use crmeb\services\FormBuilder as Form;
use crmeb\services\UtilService as Util; use crmeb\services\UtilService as Util;
@ -223,6 +225,7 @@ class SystemConfig extends AuthController
$data['value'] = json_encode($data['value']); $data['value'] = json_encode($data['value']);
} }
ConfigModel::create($data); ConfigModel::create($data);
CacheService::delete(SystemConfigService::CACHE_SYSTEM);
return Json::successful('添加菜单成功!'); return Json::successful('添加菜单成功!');
} }
@ -343,10 +346,12 @@ class SystemConfig extends AuthController
*/ */
public function delete_config(){ public function delete_config(){
$id = input('id'); $id = input('id');
if(!ConfigModel::del($id)) if(!ConfigModel::del($id)) {
return Json::fail(ConfigModel::getErrorInfo('删除失败,请稍候再试!')); return Json::fail(ConfigModel::getErrorInfo('删除失败,请稍候再试!'));
else }else {
CacheService::delete(SystemConfigService::CACHE_SYSTEM);
return Json::successful('删除成功!'); return Json::successful('删除成功!');
}
} }
/** /**
@ -371,6 +376,7 @@ class SystemConfig extends AuthController
foreach ($post as $k=>$v){ foreach ($post as $k=>$v){
ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name'); ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name');
} }
CacheService::delete(SystemConfigService::CACHE_SYSTEM);
return $this->successful('修改成功'); return $this->successful('修改成功');
} }
} }

View File

@ -42,7 +42,7 @@ class SystemConfigTab extends AuthController
$tab_id = input('tab_id'); $tab_id = input('tab_id');
if(!$tab_id) return Json::fail('参数错误'); if(!$tab_id) return Json::fail('参数错误');
$this->assign('tab_id',$tab_id); $this->assign('tab_id',$tab_id);
$list = ConfigModel::getAll($tab_id); $list = ConfigModel::getAll($tab_id,2);
foreach ($list as $k=>$v){ foreach ($list as $k=>$v){
$list[$k]['value'] = json_decode($v['value'],true)?:''; $list[$k]['value'] = json_decode($v['value'],true)?:'';
if($v['type'] == 'radio' || $v['type'] == 'checkbox'){ if($v['type'] == 'radio' || $v['type'] == 'checkbox'){

View File

@ -2,6 +2,7 @@
namespace app\admin\controller\setting; namespace app\admin\controller\setting;
use crmeb\services\CacheService;
use crmeb\services\FormBuilder as Form; use crmeb\services\FormBuilder as Form;
use crmeb\services\JsonService as Json; use crmeb\services\JsonService as Json;
use crmeb\services\UploadService as Upload; use crmeb\services\UploadService as Upload;
@ -122,6 +123,7 @@ class SystemGroupData extends AuthController
$data = array("gid"=>$gid,"add_time"=>time(),"value"=>json_encode($value),"sort"=>$params["sort"],"status"=>$params["status"]); $data = array("gid"=>$gid,"add_time"=>time(),"value"=>json_encode($value),"sort"=>$params["sort"],"status"=>$params["status"]);
GroupDataModel::create($data); GroupDataModel::create($data);
CacheService::clear();
return Json::successful('添加数据成功!'); return Json::successful('添加数据成功!');
} }
@ -231,6 +233,7 @@ class SystemGroupData extends AuthController
} }
$data = array("value"=>json_encode($value),"sort"=>$params["sort"],"status"=>$params["status"]); $data = array("value"=>json_encode($value),"sort"=>$params["sort"],"status"=>$params["status"]);
GroupDataModel::edit($data,$id); GroupDataModel::edit($data,$id);
CacheService::clear();
return Json::successful('修改成功!'); return Json::successful('修改成功!');
} }
@ -244,8 +247,10 @@ class SystemGroupData extends AuthController
{ {
if(!GroupDataModel::del($id)) if(!GroupDataModel::del($id))
return Json::fail(GroupDataModel::getErrorInfo('删除失败,请稍候再试!')); return Json::fail(GroupDataModel::getErrorInfo('删除失败,请稍候再试!'));
else else {
CacheService::clear();
return Json::successful('删除成功!'); return Json::successful('删除成功!');
}
} }
public function upload() public function upload()

View File

@ -26,14 +26,14 @@ class SmsAdmin extends AuthController
public function captcha() public function captcha()
{ {
if (!request()->isPost()) return JsonService::fail('发失败'); if (!request()->isPost()) return JsonService::fail('发失败');
$phone = request()->param('phone'); $phone = request()->param('phone');
if (!trim($phone)) return JsonService::fail('请填写手机号'); if (!trim($phone)) return JsonService::fail('请填写手机号');
$res = json_decode(HttpService::getRequest(SMSService::code(), compact('phone')), true); $res = json_decode(HttpService::getRequest(SMSService::code(), compact('phone')), true);
if (!isset($res['status']) && $res['status'] !== 200) if (!isset($res['status']) && $res['status'] !== 200)
return JsonService::fail(isset($res['data']['message']) ? $res['data']['message'] : $res['msg']); return JsonService::fail(isset($res['data']['message']) ? $res['data']['message'] : $res['msg']);
return JsonService::success(isset($res['data']['message']) ? $res['data']['message'] : $res['msg']); return JsonService::success(isset($res['data']['message']) ? $res['data']['message'] : '发送成功');
} }
/** /**

View File

@ -53,6 +53,7 @@ class SmsTemplateApply extends AuthController
{ {
$field = [ $field = [
FormBuilder::input('title','模板名称'), FormBuilder::input('title','模板名称'),
FormBuilder::textarea('text','模板内容示例','【您的短信签名】您的验证码是:{$code},有效期为{$time}分钟。如非本人操作,可不用理会。模板中的{$code}和{$time}需要替换成对应的变量,请开发者知晓。修改此项无效!'),
FormBuilder::input('content','模板内容')->type('textarea'), FormBuilder::input('content','模板内容')->type('textarea'),
FormBuilder::radio('type','模板类型',1)->options([['label'=>'验证码','value'=>1],['label'=>'通知','value'=>2],['label'=>'推广','value'=>3]]) FormBuilder::radio('type','模板类型',1)->options([['label'=>'验证码','value'=>1],['label'=>'通知','value'=>2],['label'=>'推广','value'=>3]])
]; ];

View File

@ -337,7 +337,8 @@ class CopyTaobao extends AuthController
if (!$AttachmentCategory) $AttachmentCategory = SystemAttachmentCategory::create(['pid' => '0', 'name' => $this->AttachmentCategoryName, 'enname' => '']); if (!$AttachmentCategory) $AttachmentCategory = SystemAttachmentCategory::create(['pid' => '0', 'name' => $this->AttachmentCategoryName, 'enname' => '']);
//生成附件目录 //生成附件目录
try{ try{
if (make_path('attach', 3) == '') return JsonService::fail('无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS); if (make_path('attach', 3,true) === '')
return JsonService::fail('无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS);
}catch (\Exception $e){ }catch (\Exception $e){
return JsonService::fail($e->getMessage().'或无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS); return JsonService::fail($e->getMessage().'或无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS);

View File

@ -52,7 +52,9 @@ class StoreProduct extends AuthController
//已经售馨产品 //已经售馨产品
$outofstock = ProductModel::getModelObject()->where(ProductModel::setData(4))->count(); $outofstock = ProductModel::getModelObject()->where(ProductModel::setData(4))->count();
//警戒库存 //警戒库存
$policeforce =ProductModel::getModelObject()->where(ProductModel::setData(5))->count(); $store_stock = sysConfig('store_stock');
if($store_stock < 0) $store_stock = 2;
$policeforce =ProductModel::getModelObject()->where(ProductModel::setData(5))->where('p.stock','<=',$store_stock)->count();
//回收站 //回收站
$recycle = ProductModel::where('is_del',1)->count(); $recycle = ProductModel::where('is_del',1)->count();
if($type == null) $type = 1; if($type == null) $type = 1;

View File

@ -30,7 +30,7 @@ class SystemAttachment extends AuthController
$info["size"] = $res['size']; $info["size"] = $res['size'];
$info["type"] = $res['type']; $info["type"] = $res['type'];
$info["state"] = "SUCCESS"; $info["state"] = "SUCCESS";
if($res['image_type'] == 1) $info['url'] = SystemConfigService::get('site_url').str_replace('\\','/',$res['dir']); if($res['image_type'] == 1) $info['url'] = sysConfig('site_url').str_replace('\\','/',$res['dir']);
}else }else
$info = array( $info = array(
"msg" => $res, "msg" => $res,

View File

@ -10,6 +10,7 @@ namespace app\admin\controller\system;
use app\admin\controller\AuthController; use app\admin\controller\AuthController;
use app\admin\model\store\StoreProduct;
use crmeb\services\JsonService as Json; use crmeb\services\JsonService as Json;
use think\facade\Db; use think\facade\Db;
@ -131,6 +132,24 @@ class SystemclearData extends AuthController
self::clearData('system_log',1); self::clearData('system_log',1);
return Json::successful('清除数据成功!'); return Json::successful('清除数据成功!');
} }
/**
* 清除数据
* @param int $type
* @throws \Exception
*/
public function undata($type = 1)
{
switch ((int)$type){
case 1:
\app\admin\model\system\SystemAttachment::where('module_type',2)->delete();
break;
case 2:
StoreProduct::where('is_del',1)->delete();
break;
}
return Json::successful('清除数据成功!');
}
//清除制定表数据 //清除制定表数据
public function clearData($table_name,$status){ public function clearData($table_name,$status){
$table_name = config('database.connections.' . config('database.default'))['prefix'].$table_name; $table_name = config('database.connections.' . config('database.default'))['prefix'].$table_name;

View File

@ -106,12 +106,11 @@ class SystemFile extends AuthController
public function index() public function index()
{ {
$app = $this->getDir('./application'); $rootPath = app()->getRootPath();
$extend = $this->getDir('./extend'); $app = $this->getDir($rootPath.'app');
$public = $this->getDir('./public'); $extend = $this->getDir($rootPath.'crmeb');
$arr = array(); $arr = array();
$arr = array_merge($app, $extend); $arr = array_merge($app, $extend);
$arr = array_merge($arr, $public);
$fileAll = array();//本地文件 $fileAll = array();//本地文件
$cha = array();//不同的文件 $cha = array();//不同的文件
foreach ($arr as $k => $v) { foreach ($arr as $k => $v) {
@ -122,7 +121,7 @@ class SystemFile extends AuthController
$cthash = md5($ct); $cthash = md5($ct);
$update_time = stat($v); $update_time = stat($v);
$fileAll[$k]['cthash'] = $cthash; $fileAll[$k]['cthash'] = $cthash;
$fileAll[$k]['filename'] = $v; $fileAll[$k]['filename'] = str_replace($rootPath,'',$v);
$fileAll[$k]['atime'] = $update_time['atime']; $fileAll[$k]['atime'] = $update_time['atime'];
$fileAll[$k]['mtime'] = $update_time['mtime']; $fileAll[$k]['mtime'] = $update_time['mtime'];
$fileAll[$k]['ctime'] = $update_time['ctime']; $fileAll[$k]['ctime'] = $update_time['ctime'];
@ -149,7 +148,7 @@ class SystemFile extends AuthController
foreach ($fileAll as $ko => $vo) { foreach ($fileAll as $ko => $vo) {
if ($v['filename'] == $vo['filename']) { if ($v['filename'] == $vo['filename']) {
if ($v['cthash'] != $vo['cthash']) { if ($v['cthash'] != $vo['cthash']) {
$cha[$k]['filename'] = $v['filename']; $cha[$k]['filename'] = str_replace($rootPath,'',$v['filename']);
$cha[$k]['cthash'] = $v['cthash']; $cha[$k]['cthash'] = $v['cthash'];
$cha[$k]['atime'] = $v['atime']; $cha[$k]['atime'] = $v['atime'];
$cha[$k]['mtime'] = $v['mtime']; $cha[$k]['mtime'] = $v['mtime'];
@ -163,7 +162,7 @@ class SystemFile extends AuthController
} }
foreach ($file as $k => $v) { foreach ($file as $k => $v) {
$cha[$k]['filename'] = $v['filename']; $cha[$k]['filename'] = str_replace($rootPath,'',$v['filename']);
$cha[$k]['cthash'] = $v['cthash']; $cha[$k]['cthash'] = $v['cthash'];
$cha[$k]['atime'] = $v['atime']; $cha[$k]['atime'] = $v['atime'];
$cha[$k]['mtime'] = $v['mtime']; $cha[$k]['mtime'] = $v['mtime'];
@ -171,7 +170,7 @@ class SystemFile extends AuthController
$cha[$k]['type'] = '已删除'; $cha[$k]['type'] = '已删除';
} }
foreach ($fileAll as $k => $v) { foreach ($fileAll as $k => $v) {
$cha[$k]['filename'] = $v['filename']; $cha[$k]['filename'] = str_replace($rootPath,'',$v['filename']);
$cha[$k]['cthash'] = $v['cthash']; $cha[$k]['cthash'] = $v['cthash'];
$cha[$k]['atime'] = $v['atime']; $cha[$k]['atime'] = $v['atime'];
$cha[$k]['mtime'] = $v['mtime']; $cha[$k]['mtime'] = $v['mtime'];

View File

@ -33,7 +33,7 @@ class SystemStore extends AuthController
* */ * */
public function select_address() public function select_address()
{ {
$key = SystemConfigService::get('tengxun_map_key'); $key = sysConfig('tengxun_map_key');
if(!$key) return $this->failed('请前往设置->系统设置->物流配置 配置腾讯地图KEY','#'); if(!$key) return $this->failed('请前往设置->系统设置->物流配置 配置腾讯地图KEY','#');
$this->assign(compact('key')); $this->assign(compact('key'));
return $this->fetch(); return $this->fetch();
@ -59,7 +59,7 @@ class SystemStore extends AuthController
SystemStoreModel::beginTrans(); SystemStoreModel::beginTrans();
try{ try{
$data['address'] = implode(',',$data['address']); $data['address'] = implode(',',$data['address']);
$data['latlng'] = explode(',',$data['latlng']); $data['latlng'] = is_string($data['latlng']) ? explode(',',$data['latlng']) : $data['latlng'];
if(!isset($data['latlng'][0]) || !isset($data['latlng'][1])) return JsonService::fail('请选择门店位置'); if(!isset($data['latlng'][0]) || !isset($data['latlng'][1])) return JsonService::fail('请选择门店位置');
$data['latitude'] = $data['latlng'][0]; $data['latitude'] = $data['latlng'][0];
$data['longitude'] = $data['latlng'][1]; $data['longitude'] = $data['latlng'][1];

View File

@ -36,8 +36,8 @@ class UserLevel extends AuthController
if($id) $vipinfo=SystemUserLevel::get($id); if($id) $vipinfo=SystemUserLevel::get($id);
$field[]= Form::input('name','等级名称',isset($vipinfo) ? $vipinfo->name : '')->col(Form::col(24)); $field[]= Form::input('name','等级名称',isset($vipinfo) ? $vipinfo->name : '')->col(Form::col(24));
$field[]= Form::radio('is_forever','是否为永久',isset($vipinfo) ? $vipinfo->is_forever : 0)->options([['label'=>'永久','value'=>1],['label'=>'非永久','value'=>0]])->col(24); $field[]= Form::radio('is_forever','是否为永久',isset($vipinfo) ? $vipinfo->is_forever : 0)->options([['label'=>'永久','value'=>1],['label'=>'非永久','value'=>0]])->col(24);
$field[]= Form::number('money','等级价格',isset($vipinfo) ? $vipinfo->money : 0)->min(0)->col(24); //$field[]= Form::number('money','等级价格',isset($vipinfo) ? $vipinfo->money : 0)->min(0)->col(24);
$field[]= Form::radio('is_pay','是否需要购买',isset($vipinfo) ? $vipinfo->is_pay : 0)->options([['label'=>'需要','value'=>1],['label'=>'免费','value'=>0]])->col(24); //$field[]= Form::radio('is_pay','是否需要购买',isset($vipinfo) ? $vipinfo->is_pay : 0)->options([['label'=>'需要','value'=>1],['label'=>'免费','value'=>0]])->col(24);
$field[]= Form::number('valid_date','有效时间(天)',isset($vipinfo) ? $vipinfo->valid_date : 0)->min(0)->col(8); $field[]= Form::number('valid_date','有效时间(天)',isset($vipinfo) ? $vipinfo->valid_date : 0)->min(0)->col(8);
$field[]= Form::number('grade','等级',isset($vipinfo) ? $vipinfo->grade : 0)->min(0)->col(8); $field[]= Form::number('grade','等级',isset($vipinfo) ? $vipinfo->grade : 0)->min(0)->col(8);
$field[]= Form::number('discount','享受折扣',isset($vipinfo) ? $vipinfo->discount : 0)->min(0)->col(8); $field[]= Form::number('discount','享受折扣',isset($vipinfo) ? $vipinfo->discount : 0)->min(0)->col(8);

View File

@ -159,7 +159,7 @@ class WechatUser extends AuthController
$list=[]; $list=[];
if($refresh == 1) { if($refresh == 1) {
UserModel::clearUserTag(); UserModel::clearUserTag();
$this->redirect(Url::buildUrl('tag')); $this->redirect(Url::buildUrl('tag')->suffix(false)->build());
} }
try{ try{
$list = UserModel::getUserTag(); $list = UserModel::getUserTag();
@ -252,7 +252,7 @@ class WechatUser extends AuthController
try{ try{
if($refresh == 1) { if($refresh == 1) {
UserModel::clearUserGroup(); UserModel::clearUserGroup();
$this->redirect(Url::buildUrl('group')); $this->redirect(Url::buildUrl('group')->suffix(false)->build());
} }
$list = UserModel::getUserGroup(); $list = UserModel::getUserGroup();
}catch (\Exception $e){} }catch (\Exception $e){}

View File

@ -70,7 +70,7 @@ class Images extends AuthController
$pid = input('pid')!= NULL ?input('pid'):session('pid'); $pid = input('pid')!= NULL ?input('pid'):session('pid');
$upload_type = $this->request->get('upload_type',0); $upload_type = $this->request->get('upload_type',0);
try{ try{
$path = make_path('attach'); $path = make_path('attach',2,true);
$res = Upload::getInstance()->setUploadPath($path)->setAutoValidate(true) $res = Upload::getInstance()->setUploadPath($path)->setAutoValidate(true)
->setUploadType($upload_type)->image('file'); ->setUploadType($upload_type)->image('file');
if(is_object($res) && $res->status === false){ if(is_object($res) && $res->status === false){

View File

@ -52,7 +52,7 @@ class Article extends BaseModel {
$model = $model->where('mer_id','>',0); $model = $model->where('mer_id','>',0);
else else
$model = $model->where('mer_id',0); $model = $model->where('mer_id',0);
$model = $model->where('status',1)->where('hide',0); $model = $model->where('status',1)->where('hide',0)->order('id desc');
return self::page($model,function($item){ return self::page($model,function($item){
if(!$item['mer_id']) $item['admin_name'] = '总后台管理员---》'.SystemAdmin::where('id',$item['admin_id'])->value('real_name'); if(!$item['mer_id']) $item['admin_name'] = '总后台管理员---》'.SystemAdmin::where('id',$item['admin_id'])->value('real_name');
else $item['admin_name'] = Merchant::where('id',$item['mer_id'])->value('mer_name').'---》'.MerchantAdmin::where('id',$item['admin_id'])->value('real_name'); else $item['admin_name'] = Merchant::where('id',$item['mer_id'])->value('mer_name').'---》'.MerchantAdmin::where('id',$item['admin_id'])->value('real_name');

View File

@ -231,8 +231,8 @@ class FinanceModel extends BaseModel
{ {
$trans = self::alias('a') $trans = self::alias('a')
->join('user b', 'a.uid=b.uid') ->join('user b', 'a.uid=b.uid')
->join('__store_order_cart_info__ c', 'a.id=c.oid') ->join('store_order_cart_info c', 'a.id=c.oid')
->join('__store_product__ d', 'c.product_id=d.id') ->join('store_product d', 'c.product_id=d.id')
->field('b.nickname,a.pay_price,d.store_name') ->field('b.nickname,a.pay_price,d.store_name')
->order('a.add_time DESC') ->order('a.add_time DESC')
->limit('6') ->limit('6')

View File

@ -86,6 +86,7 @@ class StoreOrder extends BaseModel
$item['_info'] = $_info; $item['_info'] = $_info;
$item['spread_nickname'] = Db::name('user')->where('uid',$item['spread_uid'])->value('nickname'); $item['spread_nickname'] = Db::name('user')->where('uid',$item['spread_uid'])->value('nickname');
$item['add_time'] = date('Y-m-d H:i:s',$item['add_time']); $item['add_time'] = date('Y-m-d H:i:s',$item['add_time']);
$item['back_integral'] = $item['back_integral'] ? : 0;
if($item['pink_id'] || $item['combination_id']){ if($item['pink_id'] || $item['combination_id']){
$pinkStatus = StorePink::where('order_id_key',$item['id'])->value('status'); $pinkStatus = StorePink::where('order_id_key',$item['id'])->value('status');
switch ($pinkStatus){ switch ($pinkStatus){
@ -172,14 +173,25 @@ class StoreOrder extends BaseModel
$img .='<img style="height:50px;" src="'.$itemImg.'" />'; $img .='<img style="height:50px;" src="'.$itemImg.'" />';
} }
} }
if(!strlen(trim($img))) $img = '无'; if (!strlen(trim($img))) $img = '无';
$item['status_name']=<<<HTML if (isset($where['excel']) && $where['excel'] == 1) {
$refundImageStr = implode(',',$refundReasonWapImg);
$item['status_name'] = <<<TEXT
退款原因:{$item['refund_reason_wap']}
备注说明:{$item['refund_reason_wap_explain']}
退款时间:{$refundReasonTime}
凭证连接:{$refundImageStr}
TEXT;
unset($refundImageStr);
}else {
$item['status_name'] = <<<HTML
<b style="color:#f124c7">申请退款</b><br/> <b style="color:#f124c7">申请退款</b><br/>
<span>退款原因:{$item['refund_reason_wap']}</span><br/> <span>退款原因:{$item['refund_reason_wap']}</span><br/>
<span>备注说明:{$item['refund_reason_wap_explain']}</span><br/> <span>备注说明:{$item['refund_reason_wap_explain']}</span><br/>
<span>退款时间:{$refundReasonTime}</span><br/> <span>退款时间:{$refundReasonTime}</span><br/>
<span>退款凭证:{$img}</span> <span>退款凭证:{$img}</span>
HTML; HTML;
}
}else if($item['paid']==1 && $item['refund_status']==2){ }else if($item['paid']==1 && $item['refund_status']==2){
$item['status_name']='已退款'; $item['status_name']='已退款';
} }
@ -241,7 +253,7 @@ HTML;
$item['pay_postage'], $item['pay_postage'],
$item['coupon_price'], $item['coupon_price'],
$item['pay_type_name'], $item['pay_type_name'],
$item['pay_time'] > 0 ? date('Y/md H:i',$item['pay_time']) : '暂无', $item['pay_time'] > 0 ? date('Y/m-d H:i',$item['pay_time']) : '暂无',
$item['status_name'], $item['status_name'],
$item['add_time'], $item['add_time'],
$item['mark'] $item['mark']
@ -1071,7 +1083,7 @@ HTML;
]; ];
if($postageData['delivery_type'] == 'send'){//送货 if($postageData['delivery_type'] == 'send'){//送货
$goodsName = StoreOrderCartInfo::getProductNameList($order['id']); $goodsName = StoreOrderCartInfo::getProductNameList($order['id']);
if($order['is_channel']){ if($order['is_channel'] == 1){
//小程序送货模版消息 //小程序送货模版消息
RoutineTemplate::sendOrderPostage($order); RoutineTemplate::sendOrderPostage($order);
}else{//公众号 }else{//公众号
@ -1086,7 +1098,7 @@ HTML;
WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_DELIVER_SUCCESS,$group,$url); WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_DELIVER_SUCCESS,$group,$url);
} }
}else if($postageData['delivery_type'] == 'express') {//发货 }else if($postageData['delivery_type'] == 'express') {//发货
if ($order['is_channel']) { if ($order['is_channel'] == 1) {
//小程序发货模版消息 //小程序发货模版消息
RoutineTemplate::sendOrderPostage($order,1); RoutineTemplate::sendOrderPostage($order,1);
} else {//公众号 } else {//公众号
@ -1123,7 +1135,7 @@ HTML;
$title = StoreProduct::where('id',$cartInfo['product_id'])->value('store_name'); $title = StoreProduct::where('id',$cartInfo['product_id'])->value('store_name');
} }
if($order['is_channel']){//小程序 if($order['is_channel'] == 1){//小程序
RoutineTemplate::sendOut('OREDER_TAKEVER',$order['uid'],[ RoutineTemplate::sendOut('OREDER_TAKEVER',$order['uid'],[
'keyword1'=>$order['order_id'], 'keyword1'=>$order['order_id'],
'keyword2'=>$title, 'keyword2'=>$title,
@ -1159,7 +1171,7 @@ HTML;
$store_name = StoreProduct::where('id',$productId)->value('store_name'); $store_name = StoreProduct::where('id',$productId)->value('store_name');
$title.=$store_name.','; $title.=$store_name.',';
} }
if($order->is_channel){ if($order->is_channel == 1){
RoutineTemplate::sendOut('ORDER_REFUND_FILE',$order->uid,[ RoutineTemplate::sendOut('ORDER_REFUND_FILE',$order->uid,[
'keyword1'=>$order->order_id, 'keyword1'=>$order->order_id,
'keyword2'=>$title, 'keyword2'=>$title,
@ -1173,7 +1185,7 @@ HTML;
'keyword2'=>$order->pay_price, 'keyword2'=>$order->pay_price,
'keyword3'=>date('Y-m-d H:i:s',time()), 'keyword3'=>date('Y-m-d H:i:s',time()),
'remark'=>'给您带来的不便,请谅解!' 'remark'=>'给您带来的不便,请谅解!'
]); ],Url::buildUrl('/order/detail/'.$order['order_id'])->suffix('')->domain(true)->build());
} }
} }

View File

@ -130,7 +130,7 @@ class StoreStatistics extends BaseModel
*/ */
public static function getConsumption($where) public static function getConsumption($where)
{ {
$consumption=self::getTime($where,new UserBill,'b.add_time')->alias('a')->join('__user__ b','a.uid = b.uid') $consumption=self::getTime($where,new UserBill,'b.add_time')->alias('a')->join('user b','a.uid = b.uid')
->field('sum(a.number) number') ->field('sum(a.number) number')
->where('a.type','pay_product')->find()->toArray(); ->where('a.type','pay_product')->find()->toArray();
return $consumption; return $consumption;
@ -182,9 +182,9 @@ class StoreStatistics extends BaseModel
public static function trans() public static function trans()
{ {
$trans = self::alias('a') $trans = self::alias('a')
->join('__user__ b', 'a.uid=b.uid','left') ->join('user b', 'a.uid=b.uid','left')
->join('__store_order_cart_info__ c', 'a.id=c.oid') ->join('store_order_cart_info c', 'a.id=c.oid')
->join('__store_product__ d', 'c.product_id=d.id') ->join('store_product d', 'c.product_id=d.id')
->field('b.nickname,a.pay_price,d.store_name') ->field('b.nickname,a.pay_price,d.store_name')
->order('a.add_time DESC') ->order('a.add_time DESC')
->limit('6') ->limit('6')

View File

@ -80,9 +80,7 @@ class StoreProduct extends BaseModel
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>0]; $data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>0];
break; break;
case 5: case 5:
$min = SystemConfig::getConfigValue('store_stock'); $data = ['p.is_show'=>1,'p.is_del'=>0];
$min = $min ? $min : 10;
$data = ['p.is_show'=>1,'p.is_del'=>0,'pav.stock|p.stock'=>['<=',$min]];
break; break;
case 6: case 6:
$data = ['p.is_del'=>1]; $data = ['p.is_del'=>1];
@ -101,7 +99,13 @@ class StoreProduct extends BaseModel
if(!empty($where)){ if(!empty($where)){
$model=$model->group('p.id'); $model=$model->group('p.id');
if(isset($where['type']) && $where['type']!='' && ($data=self::setData($where['type']))){ if(isset($where['type']) && $where['type']!='' && ($data=self::setData($where['type']))){
$model = $model->where($data); if ($where['type'] == 5) {
$store_stock = sysConfig('store_stock');
if($store_stock < 0) $store_stock = 2;
$model = $model->where($data)->where('p.stock','<=',$store_stock);
} else {
$model = $model->where($data);
}
} }
if(isset($where['store_name']) && $where['store_name']!=''){ if(isset($where['store_name']) && $where['store_name']!=''){
$model = $model->where('p.store_name|p.keyword|p.id','LIKE',"%$where[store_name]%"); $model = $model->where('p.store_name|p.keyword|p.id','LIKE',"%$where[store_name]%");
@ -117,6 +121,8 @@ class StoreProduct extends BaseModel
} }
if(isset($where['order']) && $where['order']!=''){ if(isset($where['order']) && $where['order']!=''){
$model = $model->order(self::setOrder($where['order'])); $model = $model->order(self::setOrder($where['order']));
}else{
$model = $model->order('p.sort desc,p.id desc');
} }
} }
return $model; return $model;
@ -359,7 +365,7 @@ class StoreProduct extends BaseModel
*/ */
public static function getMaxList($where){ public static function getMaxList($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a')->join('StoreOrderCartInfo c','a.id=c.oid')->join('__store_product__ b','b.id=c.product_id'); $model=StoreOrder::alias('a')->join('StoreOrderCartInfo c','a.id=c.oid')->join('store_product b','b.id=c.product_id');
$list=self::getModelTime($where,$model,'a.add_time')->group('c.product_id')->order('p_count desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('c.product_id')->order('p_count desc')->limit(10)
->field(['count(c.product_id) as p_count','b.store_name','sum(b.price) as sum_price'])->select(); ->field(['count(c.product_id) as p_count','b.store_name','sum(b.price) as sum_price'])->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();
@ -386,7 +392,7 @@ class StoreProduct extends BaseModel
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a') $model=StoreOrder::alias('a')
->join('StoreOrderCartInfo c','a.id=c.oid') ->join('StoreOrderCartInfo c','a.id=c.oid')
->join('__store_product__ b','b.id=c.product_id') ->join('store_product b','b.id=c.product_id')
->where('b.is_show',1) ->where('b.is_show',1)
->where('b.is_del',0); ->where('b.is_del',0);
$list=self::getModelTime($where,$model,'a.add_time')->group('c.product_id')->order('profity desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('c.product_id')->order('profity desc')->limit(10)
@ -480,7 +486,7 @@ class StoreProduct extends BaseModel
}else{ }else{
$time['data']=isset($where['data'])? $where['data']:''; $time['data']=isset($where['data'])? $where['data']:'';
} }
$model=self::getModelTime($time, Db::name('store_cart')->alias('a')->join('__store_product__ b','a.product_id=b.id'),'a.add_time'); $model=self::getModelTime($time, Db::name('store_cart')->alias('a')->join('store_product b','a.product_id=b.id'),'a.add_time');
if(isset($where['title']) && $where['title']!=''){ if(isset($where['title']) && $where['title']!=''){
$model=$model->where('b.store_name|b.id','like',"%$where[title]%"); $model=$model->where('b.store_name|b.id','like',"%$where[title]%");
} }

View File

@ -55,7 +55,7 @@ class StoreProductAttrValue extends BaseModel
->dec('stock',$num)->inc('sales',$num)->update(); ->dec('stock',$num)->inc('sales',$num)->update();
if($res){ if($res){
$stock = self::where('product_id',$productId)->where('unique',$unique)->value('stock'); $stock = self::where('product_id',$productId)->where('unique',$unique)->value('stock');
$replenishment_num = SystemConfigService::get('store_stock') ?? 0;//库存预警界限 $replenishment_num = sysConfig('store_stock') ?? 0;//库存预警界限
if($replenishment_num >= $stock){ if($replenishment_num >= $stock){
try{ try{
ChannelService::instance()->send('STORE_STOCK', ['id'=>$productId]); ChannelService::instance()->send('STORE_STOCK', ['id'=>$productId]);
@ -100,7 +100,7 @@ class StoreProductAttrValue extends BaseModel
$valueNew[$count]['price'] = $sukValue[$suk]['price']; $valueNew[$count]['price'] = $sukValue[$suk]['price'];
$valueNew[$count]['sales'] = $sukValue[$suk]['sales']; $valueNew[$count]['sales'] = $sukValue[$suk]['sales'];
$valueNew[$count]['pic'] = $sukValue[$suk]['pic']; $valueNew[$count]['pic'] = $sukValue[$suk]['pic'];
$valueNew[$count]['bar_code'] = $sukValue[$suk]['bar_code']; $valueNew[$count]['bar_code'] = $sukValue[$suk]['bar_code'] ?? '';
$valueNew[$count]['check'] = false; $valueNew[$count]['check'] = false;
$count++; $count++;
} }

View File

@ -28,14 +28,14 @@ class StoreProductRelation extends BaseModel
public static function getCollect($pid){ public static function getCollect($pid){
$model = new self(); $model = new self();
$model = $model->where('r.product_id',$pid)->where('r.type','collect'); $model = $model->where('r.product_id',$pid)->where('r.type','collect');
$model = $model->alias('r')->join('__WECHAT_USER__ u','u.uid=r.uid'); $model = $model->alias('r')->join('wechat_user u','u.uid=r.uid');
$model = $model->field('r.*,u.nickname'); $model = $model->field('r.*,u.nickname');
return self::page($model); return self::page($model);
} }
public static function getLike($pid){ public static function getLike($pid){
$model = new self(); $model = new self();
$model = $model->where('r.product_id',$pid)->where('r.type','like'); $model = $model->where('r.product_id',$pid)->where('r.type','like');
$model = $model->alias('r')->join('__WECHAT_USER__ u','u.uid=r.uid'); $model = $model->alias('r')->join('wechat_user u','u.uid=r.uid');
$model = $model->field('r.*,u.nickname'); $model = $model->field('r.*,u.nickname');
return self::page($model); return self::page($model);
} }

View File

@ -57,7 +57,7 @@ class StoreProductReply extends BaseModel
public static function getProductImaesList($where) public static function getProductImaesList($where)
{ {
$list=self::valiWhere($where,'a','p')->group('p.id')->join('__wechat_user__ u','u.uid=a.uid')->join("__store_product__ p",'a.product_id=p.id')->field(['p.id','p.image','p.store_name','p.price'])->page($where['page'],$where['limit'])->select(); $list=self::valiWhere($where,'a','p')->group('p.id')->join('wechat_user u','u.uid=a.uid','LEFT')->join("store_product p",'a.product_id=p.id','LEFT')->field(['p.id','p.image','p.store_name','p.price'])->page($where['page'],$where['limit'])->select();
$list=count($list) ? $list->toArray() : []; $list=count($list) ? $list->toArray() : [];
foreach ($list as &$item){ foreach ($list as &$item){
$item['store_name']=self::getSubstrUTf8($item['store_name'],10,'UTF-8',''); $item['store_name']=self::getSubstrUTf8($item['store_name'],10,'UTF-8','');
@ -68,17 +68,18 @@ class StoreProductReply extends BaseModel
public static function getProductReplyList($where) public static function getProductReplyList($where)
{ {
$data=self::valiWhere($where,'a','p')->join("__store_product__ p",'a.product_id=p.id') $data=self::valiWhere($where,'a','p')->join("store_product p",'a.product_id=p.id','left')
->join('__wechat_user__ u','u.uid=a.uid') ->join('user u','u.uid=a.uid','left')
->order('a.add_time desc,a.is_reply asc') ->order('a.add_time desc,a.is_reply asc')
->field('a.*,u.nickname,u.headimgurl as avatar') ->field('a.*,u.nickname,u.avatar')
->page((int)$where['message_page'],(int)$where['limit']) ->page((int)$where['message_page'],(int)$where['limit'])
->select(); ->select();
$data=count($data) ? $data->toArray() : []; $data=count($data) ? $data->toArray() : [];
foreach ($data as &$item){ foreach ($data as &$item){
$item['time']=\crmeb\services\UtilService::timeTran($item['add_time']); $item['time']=\crmeb\services\UtilService::timeTran($item['add_time']);
} }
$count=self::valiWhere($where,'a','p')->join('__wechat_user__ u','u.uid=a.uid')->join("__store_product__ p",'a.product_id=p.id')->count();
$count=self::valiWhere($where,'a','p')->join('user u','u.uid=a.uid','left')->join("store_product p",'a.product_id=p.id','left')->count();
return ['list'=>$data,'count'=>$count]; return ['list'=>$data,'count'=>$count];
} }
/** /**
@ -96,8 +97,8 @@ class StoreProductReply extends BaseModel
} }
} }
if($where['product_id']) $model = $model->where('r.product_id',$where['product_id']); if($where['product_id']) $model = $model->where('r.product_id',$where['product_id']);
$model = $model->alias('r')->join('__wechat_user__ u','u.uid=r.uid'); $model = $model->alias('r')->join('wechat_user u','u.uid=r.uid');
$model = $model->join('__store_product__ p','p.id=r.product_id'); $model = $model->join('store_product p','p.id=r.product_id');
$model = $model->where('r.is_del',0); $model = $model->where('r.is_del',0);
$model = $model->field('r.*,u.nickname,u.headimgurl,p.store_name'); $model = $model->field('r.*,u.nickname,u.headimgurl,p.store_name');
$model = $model->order('r.add_time desc,r.is_reply asc'); $model = $model->order('r.add_time desc,r.is_reply asc');

View File

@ -117,10 +117,9 @@ class SystemAttachment extends BaseModel
*/ */
public static function emptyYesterdayAttachment() public static function emptyYesterdayAttachment()
{ {
self::beginTrans(); $list = self::whereTime('time','yesterday')->where(['module_type'=>2])->column('att_dir','att_id');
try{ foreach ($list as $att_id => $att_dir){
$list = self::whereTime('time','yesterday')->where(['module_type'=>2])->column('att_dir','att_id'); try{
foreach ($list as $att_id => $att_dir){
if($att_dir && strstr($att_dir,'uploads') !== false){ if($att_dir && strstr($att_dir,'uploads') !== false){
if(strstr($att_dir,'http') === false) if(strstr($att_dir,'http') === false)
@unlink(substr($att_dir,1)); @unlink(substr($att_dir,1));
@ -129,11 +128,8 @@ class SystemAttachment extends BaseModel
@unlink($filedir); @unlink($filedir);
} }
} }
self::del($att_id); }catch (\Throwable $e){}
} self::del($att_id);
self::commitTrans();
}catch (\Exception $e){
self::rollbackTrans();
} }
} }
} }

View File

@ -193,9 +193,9 @@ class SystemConfig extends BaseModel
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException * @throws \think\exception\DbException
*/ */
public static function getAll($id){ public static function getAll($id,int $status = 1){
$where['config_tab_id'] = $id; $where['config_tab_id'] = $id;
$where['status'] = 1; if($status == 1) $where['status'] = $status;
return self::where($where)->order('sort desc,id asc')->select(); return self::where($where)->order('sort desc,id asc')->select();
} }

View File

@ -50,14 +50,14 @@ class SystemLog extends BaseModel
public static function adminVisit($adminId,$adminName,$type) public static function adminVisit($adminId,$adminName,$type)
{ {
$request = app('request'); $request = app('request');
$module = $request->app(); $module = app('http')->getName();
$controller = $request->controller(); $controller = $request->controller();
$action = $request->action(); $action = $request->action();
$route = $request->route(); $route = $request->route();
self::startTrans(); self::startTrans();
try{ try{
$data = [ $data = [
'method'=>$request->app(), 'method'=>app('http')->getName(),
'admin_id'=>$adminId, 'admin_id'=>$adminId,
'add_time'=>time(), 'add_time'=>time(),
'admin_name'=>$adminName, 'admin_name'=>$adminName,
@ -90,7 +90,7 @@ class SystemLog extends BaseModel
public static function setCurrentVisit($adminInfo, $page) public static function setCurrentVisit($adminInfo, $page)
{ {
$request = app('request'); $request = app('request');
$module = $request->app(); $module = app('http')->getName();
$controller = $request->controller(); $controller = $request->controller();
$action = $request->action(); $action = $request->action();
$route = $request->route(); $route = $request->route();

View File

@ -103,7 +103,7 @@ class SystemNotice extends BaseModel
public static function getAdminNoticeTotal($adminId) public static function getAdminNoticeTotal($adminId)
{ {
$list = self::alias('A')->join('__SYSTEM_NOTICE_ADMIN__ B','B.notice_type = A.type') $list = self::alias('A')->join('system_notice_admin B','B.notice_type = A.type')
->where('A.status',1)->where('B.is_visit',0)->where('B.is_click',0)->where('B.admin_id',$adminId) ->where('A.status',1)->where('B.is_visit',0)->where('B.is_click',0)->where('B.admin_id',$adminId)
->field('count(B.id) total')->group('A.id')->select()->toArray(); ->field('count(B.id) total')->group('A.id')->select()->toArray();
if(!$list) return 0; if(!$list) return 0;
@ -114,7 +114,7 @@ class SystemNotice extends BaseModel
public static function getAdminNotice($adminId) public static function getAdminNotice($adminId)
{ {
$list = self::alias('A')->join('__SYSTEM_NOTICE_ADMIN__ B','B.notice_type = A.type') $list = self::alias('A')->join('system_notice_admin B','B.notice_type = A.type')
->where('A.status',1)->where('B.is_visit',0)->where('B.is_click',0)->where('B.admin_id',$adminId) ->where('A.status',1)->where('B.is_visit',0)->where('B.is_click',0)->where('B.admin_id',$adminId)
->field('A.id,A.type,A.title,A.icon,count(B.id) total,A.template,max(B.add_time) as last_time') ->field('A.id,A.type,A.title,A.icon,count(B.id) total,A.template,max(B.add_time) as last_time')
->group('A.id')->having('total > 0')->select()->toArray(); ->group('A.id')->having('total > 0')->select()->toArray();

View File

@ -174,7 +174,7 @@ class StoreBargain extends BaseModel
*/ */
public static function getMaxList($where){ public static function getMaxList($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a')->join('__store_bargain__ b','b.id=a.bargain_id')->where('a.paid',1); $model=StoreOrder::alias('a')->join('store_bargain b','b.id=a.bargain_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.bargain_id')->order('p_count desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.bargain_id')->order('p_count desc')->limit(10)
->field(['count(a.bargain_id) as p_count','b.title as store_name','sum(b.price) as sum_price'])->select(); ->field(['count(a.bargain_id) as p_count','b.title as store_name','sum(b.price) as sum_price'])->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();
@ -204,7 +204,7 @@ class StoreBargain extends BaseModel
*/ */
public static function ProfityTop10($where){ public static function ProfityTop10($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a')->join('__store_bargain__ b','b.id=a.bargain_id')->where('a.paid',1); $model=StoreOrder::alias('a')->join('store_bargain b','b.id=a.bargain_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.bargain_id')->order('profity desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.bargain_id')->order('profity desc')->limit(10)
->field(['count(a.bargain_id) as p_count','b.title as store_name','sum(b.price) as sum_price','(b.price-b.cost) as profity']) ->field(['count(a.bargain_id) as p_count','b.title as store_name','sum(b.price) as sum_price','(b.price-b.cost) as profity'])
->select(); ->select();
@ -257,7 +257,7 @@ class StoreBargain extends BaseModel
* @return mixed * @return mixed
*/ */
public static function getBargainRefundList($where = array()){ public static function getBargainRefundList($where = array()){
$model = StoreOrder::alias('a')->join('__store_bargain__ b','b.id=a.bargain_id'); $model = StoreOrder::alias('a')->join('store_bargain b','b.id=a.bargain_id');
$list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.bargain_id')->order('count desc')->page((int)$where['page'],(int)$where['limit']) $list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.bargain_id')->order('count desc')->page((int)$where['page'],(int)$where['limit'])
->field(['count(a.bargain_id) as count','b.title as store_name','sum(b.price) as sum_price'])->select(); ->field(['count(a.bargain_id) as count','b.title as store_name','sum(b.price) as sum_price'])->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();

View File

@ -386,7 +386,7 @@ class StoreCombination extends BaseModel
*/ */
public static function ProfityTop10($where){ public static function ProfityTop10($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model = StoreOrder::alias('a')->join('__store_combination__ b','b.id = a.combination_id')->where('a.paid',1); $model = StoreOrder::alias('a')->join('store_combination b','b.id = a.combination_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('profity desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('profity desc')->limit(10)
->field('count(a.combination_id) as p_count,b.title as store_name,sum(b.price) as sum_price,(b.price-b.cost) as profity') ->field('count(a.combination_id) as p_count,b.title as store_name,sum(b.price) as sum_price,(b.price-b.cost) as profity')
->select(); ->select();
@ -410,7 +410,7 @@ class StoreCombination extends BaseModel
} }
public static function getMaxList($where){ public static function getMaxList($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a')->join('__store_combination__ b','b.id=a.combination_id')->where('a.paid',1); $model=StoreOrder::alias('a')->join('store_combination b','b.id=a.combination_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.combination_id')->order('p_count desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.combination_id')->order('p_count desc')->limit(10)
->field('count(a.combination_id) as p_count,b.title as store_name,sum(b.price) as sum_price')->select(); ->field('count(a.combination_id) as p_count,b.title as store_name,sum(b.price) as sum_price')->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();
@ -438,7 +438,7 @@ class StoreCombination extends BaseModel
* @return mixed * @return mixed
*/ */
public static function getBargainRefundList($where = array()){ public static function getBargainRefundList($where = array()){
$model = StoreOrder::alias('a')->join('__store_combination__ b','b.id=a.combination_id'); $model = StoreOrder::alias('a')->join('store_combination b','b.id=a.combination_id');
$list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.combination_id') $list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.combination_id')
->order('count desc')->page((int)$where['page'],(int)$where['limit']) ->order('count desc')->page((int)$where['page'],(int)$where['limit'])
->field('count(a.combination_id) as count,b.title as store_name,sum(b.price) as sum_price') ->field('count(a.combination_id) as count,b.title as store_name,sum(b.price) as sum_price')

View File

@ -28,7 +28,7 @@ class StoreCouponIssue extends BaseModel
protected $insert = ['add_time']; protected $insert = ['add_time'];
public static function stsypage($where){ public static function stsypage($where){
$model = self::alias('A')->field('A.*,B.title')->join('__store_coupon__ B','A.cid = B.id')->where('A.is_del',0)->order('A.add_time DESC'); $model = self::alias('A')->field('A.*,B.title')->join('store_coupon B','A.cid = B.id')->where('A.is_del',0)->order('A.add_time DESC');
if(isset($where['status']) && $where['status']!=''){ if(isset($where['status']) && $where['status']!=''){
$model=$model->where('A.status',$where['status']); $model=$model->where('A.status',$where['status']);
} }

View File

@ -22,7 +22,7 @@ class StoreCouponIssueUser extends BaseModel
public static function systemCouponIssuePage($issue_coupon_id) public static function systemCouponIssuePage($issue_coupon_id)
{ {
$model = self::alias('A')->field('B.nickname,B.avatar,A.add_time') $model = self::alias('A')->field('B.nickname,B.avatar,A.add_time')
->join('__user__ B','A.uid = B.uid') ->join('user B','A.uid = B.uid')
->where('A.issue_coupon_id',$issue_coupon_id); ->where('A.issue_coupon_id',$issue_coupon_id);
return self::page($model,function($item){ return self::page($model,function($item){
$item['add_time'] = $item['add_time'] == 0 ? '未知' : date('Y/m/d H:i',$item['add_time']); $item['add_time'] = $item['add_time'] == 0 ? '未知' : date('Y/m/d H:i',$item['add_time']);

View File

@ -37,8 +37,8 @@ class StorePink extends BaseModel
if($where['status']) $model = $model->where('p.status',$where['status']); if($where['status']) $model = $model->where('p.status',$where['status']);
$model = $model->where('p.k_id',0); $model = $model->where('p.k_id',0);
$model = $model->order('p.id desc'); $model = $model->order('p.id desc');
$model = $model->join('__store_combination__ c','c.id=p.cid'); $model = $model->join('store_combination c','c.id=p.cid');
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
return self::page($model,function($item)use($where){ return self::page($model,function($item)use($where){
$item['count_people'] = bcadd(self::where('k_id',$item['id'])->count(),1,0); $item['count_people'] = bcadd(self::where('k_id',$item['id'])->count(),1,0);
},$where); },$where);
@ -72,7 +72,7 @@ class StorePink extends BaseModel
$model = $model->alias('p'); $model = $model->alias('p');
$model = $model->field('p.*,u.nickname,u.avatar'); $model = $model->field('p.*,u.nickname,u.avatar');
$model = $model->where('id',$id); $model = $model->where('id',$id);
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
$list = $model->find(); $list = $model->find();
if($list) return $list->toArray(); if($list) return $list->toArray();
else return []; else return [];
@ -88,7 +88,7 @@ class StorePink extends BaseModel
$model = $model->field('p.*,u.nickname,u.avatar'); $model = $model->field('p.*,u.nickname,u.avatar');
$model = $model->where('k_id',$id); $model = $model->where('k_id',$id);
$model = $model->where('is_refund',0); $model = $model->where('is_refund',0);
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
$model = $model->order('id asc'); $model = $model->order('id asc');
$list = $model->select(); $list = $model->select();
if($list) return $list->toArray(); if($list) return $list->toArray();

View File

@ -172,7 +172,7 @@ class StoreSeckill extends BaseModel
*/ */
public static function getMaxList($where){ public static function getMaxList($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model=StoreOrder::alias('a')->join('__store_seckill__ b','b.id=a.seckill_id')->where('a.paid',1); $model=StoreOrder::alias('a')->join('store_seckill b','b.id=a.seckill_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('p_count desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('p_count desc')->limit(10)
->field(['count(a.seckill_id) as p_count','b.title as store_name','sum(b.price) as sum_price'])->select(); ->field(['count(a.seckill_id) as p_count','b.title as store_name','sum(b.price) as sum_price'])->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();
@ -202,7 +202,7 @@ class StoreSeckill extends BaseModel
*/ */
public static function ProfityTop10($where){ public static function ProfityTop10($where){
$classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan']; $classs=['layui-bg-red','layui-bg-orange','layui-bg-green','layui-bg-blue','layui-bg-cyan'];
$model = StoreOrder::alias('a')->join('__store_seckill__ b','b.id = a.seckill_id')->where('a.paid',1); $model = StoreOrder::alias('a')->join('store_seckill b','b.id = a.seckill_id')->where('a.paid',1);
$list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('profity desc')->limit(10) $list=self::getModelTime($where,$model,'a.add_time')->group('a.seckill_id')->order('profity desc')->limit(10)
->field(['count(a.seckill_id) as p_count','b.title as store_name','sum(b.price) as sum_price','(b.price-b.cost) as profity']) ->field(['count(a.seckill_id) as p_count','b.title as store_name','sum(b.price) as sum_price','(b.price-b.cost) as profity'])
->select(); ->select();
@ -255,7 +255,7 @@ class StoreSeckill extends BaseModel
* @return mixed * @return mixed
*/ */
public static function getBargainRefundList($where = array()){ public static function getBargainRefundList($where = array()){
$model = StoreOrder::alias('a')->join('__store_seckill__ b','b.id=a.seckill_id'); $model = StoreOrder::alias('a')->join('store_seckill b','b.id=a.seckill_id');
$list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.seckill_id')->order('count desc')->page((int)$where['page'],(int)$where['limit']) $list = self::getModelTime($where,$model,'a.add_time')->where('a.refund_status','<>',0)->group('a.seckill_id')->order('count desc')->page((int)$where['page'],(int)$where['limit'])
->field(['count(a.seckill_id) as count','b.title as store_name','sum(b.price) as sum_price'])->select(); ->field(['count(a.seckill_id) as count','b.title as store_name','sum(b.price) as sum_price'])->select();
if(count($list)) $list=$list->toArray(); if(count($list)) $list=$list->toArray();

View File

@ -413,7 +413,7 @@ class User extends BaseModel
public static function getBadgeList($where){ public static function getBadgeList($where){
$user_count = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter','status'])->count(); $user_count = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter','status'])->count();
$user_count_old = self::getOldDate($where)->count(); $user_count_old = self::getOldDate($where)->count();
$store_brokerage_statu = SystemConfigService::get('store_brokerage_statu'); $store_brokerage_statu = sysConfig('store_brokerage_statu');
if($store_brokerage_statu == 1) if($store_brokerage_statu == 1)
$fenxiao = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter','status'])->where('spread_uid','<>',0)->count(); $fenxiao = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter','status'])->where('spread_uid','<>',0)->count();
else else
@ -483,7 +483,7 @@ class User extends BaseModel
(count($xdata) > $limit) && $Zoom = $xdata[$limit-5]; (count($xdata) > $limit) && $Zoom = $xdata[$limit-5];
//多次购物会员数量饼状图 //多次购物会员数量饼状图
$count = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter'])->count(); $count = self::setWherePage(self::getModelTime($where,new self),$where,['is_promoter'])->count();
$user_count = self::setWherePage(self::getModelTime($where,self::alias('a')->join('__store_order__ r','r.uid=a.uid'),'a.add_time'),$where,['is_promoter']) $user_count = self::setWherePage(self::getModelTime($where,self::alias('a')->join('store_order r','r.uid=a.uid'),'a.add_time'),$where,['is_promoter'])
->where('r.paid',1)->count('a.uid'); ->where('r.paid',1)->count('a.uid');
$shop_xdata = ['多次购买数量占比','无购买数量占比']; $shop_xdata = ['多次购买数量占比','无购买数量占比'];
$shop_data = []; $shop_data = [];
@ -724,7 +724,7 @@ class User extends BaseModel
*/ */
public static function getUserBusinessChart($where,$limit=20){ public static function getUserBusinessChart($where,$limit=20){
//获取购物会员人数趋势图 //获取购物会员人数趋势图
$list=self::getModelTime($where,self::where('a.status',1)->alias('a')->join('__store_order__ r','r.uid=a.uid'),'a.add_time') $list=self::getModelTime($where,self::where('a.status',1)->alias('a')->join('store_order r','r.uid=a.uid'),'a.add_time')
->where('r.paid', 1) ->where('r.paid', 1)
->where('a.is_promoter', 0) ->where('a.is_promoter', 0)
->where('a.add_time','<>',0) ->where('a.add_time','<>',0)
@ -742,7 +742,7 @@ class User extends BaseModel
} }
count($xdata) > $limit && $zoom=$xdata[$limit-5]; count($xdata) > $limit && $zoom=$xdata[$limit-5];
//会员访问量 //会员访问量
$visit=self::getModelTime($where,self::alias('a')->join('__store_visit__ t','t.uid=a.uid'),'t.add_time') $visit=self::getModelTime($where,self::alias('a')->join('store_visit t','t.uid=a.uid'),'t.add_time')
->where('a.is_promoter',0) ->where('a.is_promoter',0)
->field('FROM_UNIXTIME(t.add_time,"%Y-%m-%d") as _add_time,count(t.uid) as count_user') ->field('FROM_UNIXTIME(t.add_time,"%Y-%m-%d") as _add_time,count(t.uid) as count_user')
->group('_add_time') ->group('_add_time')
@ -759,7 +759,7 @@ class User extends BaseModel
count($visit_xdata) > $limit && $visit_zoom=$visit_xdata[$limit-5]; count($visit_xdata) > $limit && $visit_zoom=$visit_xdata[$limit-5];
//多次购物会员数量饼状图 //多次购物会员数量饼状图
$count=self::getModelTime($where,self::where('is_promoter',0))->count(); $count=self::getModelTime($where,self::where('is_promoter',0))->count();
$user_count=self::getModelTime($where,self::alias('a')->join('__store_order__ r','r.uid=a.uid'),'a.add_time') $user_count=self::getModelTime($where,self::alias('a')->join('store_order r','r.uid=a.uid'),'a.add_time')
->where('a.is_promoter',0) ->where('a.is_promoter',0)
->where('r.paid',1) ->where('r.paid',1)
->group('a.uid') ->group('a.uid')
@ -817,7 +817,7 @@ class User extends BaseModel
$orderPayCount = StoreOrder::getOrderPayCount($is_promoter); $orderPayCount = StoreOrder::getOrderPayCount($is_promoter);
if($orderPayCount){ if($orderPayCount){
$shopcount=self::alias('a') $shopcount=self::alias('a')
->join('__store_order__ r','r.uid=a.uid') ->join('store_order r','r.uid=a.uid')
->where('r.paid', 1) ->where('r.paid', 1)
->where('a.is_promoter', $is_promoter) ->where('a.is_promoter', $is_promoter)
->group('r.uid') ->group('r.uid')
@ -830,7 +830,7 @@ class User extends BaseModel
//购物金额排行榜 //购物金额排行榜
if($orderPayCount){ if($orderPayCount){
$order=self::alias('a') $order=self::alias('a')
->join('__store_order__ r','r.uid=a.uid') ->join('store_order r','r.uid=a.uid')
->where('r.paid', 1) ->where('r.paid', 1)
->where('a.is_promoter', $is_promoter) ->where('a.is_promoter', $is_promoter)
->group('r.uid') ->group('r.uid')
@ -844,7 +844,7 @@ class User extends BaseModel
$orderPayCount = StoreOrder::getOrderPayMonthCount($is_promoter); $orderPayCount = StoreOrder::getOrderPayMonthCount($is_promoter);
if($orderPayCount){ if($orderPayCount){
$lastorder=self::alias('a') $lastorder=self::alias('a')
->join('__store_order__ r','r.uid=a.uid') ->join('store_order r','r.uid=a.uid')
->where('r.paid', 1) ->where('r.paid', 1)
->where('a.is_promoter', $is_promoter) ->where('a.is_promoter', $is_promoter)
// ->whereTime('r.pay_time','last month') // ->whereTime('r.pay_time','last month')
@ -1014,7 +1014,7 @@ class User extends BaseModel
} }
count($visit_xdata) > $limit && $visit_zoom=$visit_xdata[$limit-5]; count($visit_xdata) > $limit && $visit_zoom=$visit_xdata[$limit-5];
//获取购物会员人数趋势图 //获取购物会员人数趋势图
$list=self::getModelTime($where,self::where('a.status',1)->alias('a')->join('__store_order__ r','r.uid=a.uid'),'a.add_time') $list=self::getModelTime($where,self::where('a.status',1)->alias('a')->join('store_order r','r.uid=a.uid'),'a.add_time')
->where('r.paid', 1) ->where('r.paid', 1)
->where('a.is_promoter', 1) ->where('a.is_promoter', 1)
->where('a.add_time','<>',0) ->where('a.add_time','<>',0)
@ -1034,7 +1034,7 @@ class User extends BaseModel
//多次购物分销会员数量饼状图 //多次购物分销会员数量饼状图
$count=self::getModelTime($where,self::where('is_promoter',1))->count(); $count=self::getModelTime($where,self::where('is_promoter',1))->count();
$user_count=self::getModelTime($where,self::alias('a') $user_count=self::getModelTime($where,self::alias('a')
->join('__store_order__ r','r.uid=a.uid'),'a.add_time') ->join('store_order r','r.uid=a.uid'),'a.add_time')
->where('a.is_promoter',1) ->where('a.is_promoter',1)
->where('r.paid',1) ->where('r.paid',1)
->group('a.uid') ->group('a.uid')
@ -1110,11 +1110,11 @@ class User extends BaseModel
{ {
$userInfo = User::getUserInfo($orderInfo['uid']); $userInfo = User::getUserInfo($orderInfo['uid']);
if(!$userInfo || !$userInfo['spread_uid']) return true; if(!$userInfo || !$userInfo['spread_uid']) return true;
$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型 $storeBrokerageStatu = sysConfig('store_brokerage_statu') ? : 1;//获取后台分销类型
if($storeBrokerageStatu == 1){ if($storeBrokerageStatu == 1){
if(!User::be(['uid'=>$userInfo['spread_uid'],'is_promoter'=>1])) return true; if(!User::be(['uid'=>$userInfo['spread_uid'],'is_promoter'=>1])) return true;
} }
$brokerageRatio = (SystemConfigService::get('store_brokerage_ratio') ?: 0)/100; $brokerageRatio = (sysConfig('store_brokerage_ratio') ?: 0)/100;
if($brokerageRatio <= 0) return true; if($brokerageRatio <= 0) return true;
$cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价 $cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回 if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回
@ -1142,11 +1142,11 @@ class User extends BaseModel
$userInfo = User::getUserInfo($orderInfo['uid']); $userInfo = User::getUserInfo($orderInfo['uid']);
$userInfoTwo = User::getUserInfo($userInfo['spread_uid']); $userInfoTwo = User::getUserInfo($userInfo['spread_uid']);
if(!$userInfoTwo || !$userInfoTwo['spread_uid']) return true; if(!$userInfoTwo || !$userInfoTwo['spread_uid']) return true;
$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型 $storeBrokerageStatu = sysConfig('store_brokerage_statu') ? : 1;//获取后台分销类型
if($storeBrokerageStatu == 1){ if($storeBrokerageStatu == 1){
if(!User::be(['uid'=>$userInfoTwo['spread_uid'],'is_promoter'=>1])) return true; if(!User::be(['uid'=>$userInfoTwo['spread_uid'],'is_promoter'=>1])) return true;
} }
$brokerageRatio = (SystemConfigService::get('store_brokerage_two') ?: 0)/100; $brokerageRatio = (sysConfig('store_brokerage_two') ?: 0)/100;
if($brokerageRatio <= 0) return true; if($brokerageRatio <= 0) return true;
$cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价 $cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回 if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回

View File

@ -130,7 +130,7 @@ class UserBill extends BaseModel
->where('a.type', 'brokerage') ->where('a.type', 'brokerage')
->where('a.pm', 1) ->where('a.pm', 1)
->order('a.number desc') ->order('a.number desc')
->join('__store_order__ o','o.id=a.link_id') ->join('store_order o','o.id=a.link_id')
->field('o.order_id,FROM_UNIXTIME(a.add_time,"%Y-%c-%d") as add_time,a.uid,o.uid as down_uid,r.nickname,r.avatar,r.spread_uid,r.level,a.number') ->field('o.order_id,FROM_UNIXTIME(a.add_time,"%Y-%c-%d") as add_time,a.uid,o.uid as down_uid,r.nickname,r.avatar,r.spread_uid,r.level,a.number')
->page((int)$where['page'],(int)$where['limit']) ->page((int)$where['page'],(int)$where['limit'])
->select(); ->select();
@ -139,7 +139,7 @@ class UserBill extends BaseModel
} }
//获取返佣用户总人数 //获取返佣用户总人数
public static function getFanCount(){ public static function getFanCount(){
return self::alias('a')->join('user r','a.uid=r.uid')->join('__store_order__ o','o.id=a.link_id')->where('a.category','now_money')->where('a.type', 'brokerage')->where('a.pm', 1)->count(); return self::alias('a')->join('user r','a.uid=r.uid')->join('store_order o','o.id=a.link_id')->where('a.category','now_money')->where('a.type', 'brokerage')->where('a.pm', 1)->count();
} }
//获取用户充值数据 //获取用户充值数据
public static function getEchartsRecharge($where,$limit=15){ public static function getEchartsRecharge($where,$limit=15){

View File

@ -75,7 +75,7 @@ class UserExtract extends BaseModel
if($where['nireid'] != '') $model = $model->where('a.real_name|a.id|b.nickname|a.bank_code|a.alipay_code','like',"%$where[nireid]%"); if($where['nireid'] != '') $model = $model->where('a.real_name|a.id|b.nickname|a.bank_code|a.alipay_code','like',"%$where[nireid]%");
$model = $model->alias('a'); $model = $model->alias('a');
$model = $model->field('a.*,b.nickname'); $model = $model->field('a.*,b.nickname');
$model = $model->join('__user__ b','b.uid=a.uid','LEFT'); $model = $model->join('user b','b.uid=a.uid','LEFT');
$model = $model->order('a.id desc'); $model = $model->order('a.id desc');
return self::page($model, $where); return self::page($model, $where);
} }
@ -325,7 +325,7 @@ class UserExtract extends BaseModel
*/ */
public static function getUserCountPrice($uid = 0){ public static function getUserCountPrice($uid = 0){
if(!$uid) return 0; if(!$uid) return 0;
$price = self::where('uid',$uid)->where('status',1)->field('sum(extract_price) as price')->find()['price']; $price = self::where('uid',$uid)->where('status',1)->sum('extract_price');
return $price ? $price : 0; return $price ? $price : 0;
} }

View File

@ -46,7 +46,7 @@ class UserLevel extends BaseModel
{ {
$data=self::setWhere($where,'a')->group('a.uid')->order('grade desc') $data=self::setWhere($where,'a')->group('a.uid')->order('grade desc')
->field('a.*,u.nickname,u.avatar') ->field('a.*,u.nickname,u.avatar')
->join('__user__ u','a.uid=u.uid')->page((int)$where['page'],(int)$where['limit'])->select(); ->join('user u','a.uid=u.uid')->page((int)$where['page'],(int)$where['limit'])->select();
$data=count($data) ? $data->toArray() : []; $data=count($data) ? $data->toArray() : [];
foreach ($data as &$item){ foreach ($data as &$item){
$info=SystemUserLevel::where('id',$item['level_id'])->find(); $info=SystemUserLevel::where('id',$item['level_id'])->find();
@ -57,7 +57,7 @@ class UserLevel extends BaseModel
$item['is_forever']= $item['is_forever'] ? '永久会员':'限时会员'; $item['is_forever']= $item['is_forever'] ? '永久会员':'限时会员';
$item['valid_time']=$item['is_forever'] ? '永久':date('Y-m-d H:i:s',$item['valid_time']); $item['valid_time']=$item['is_forever'] ? '永久':date('Y-m-d H:i:s',$item['valid_time']);
} }
$count=self::setWhere($where,'a')->group('a.level_id')->order('grade desc')->join('__user__ u','a.uid=u.uid')->count(); $count=self::setWhere($where,'a')->group('a.level_id')->order('grade desc')->join('user u','a.uid=u.uid')->count();
return compact('data','count'); return compact('data','count');
} }

View File

@ -77,7 +77,7 @@ class UserPoint extends BaseModel
->ExcelSave(); ->ExcelSave();
} }
public static function setWhere($where){ public static function setWhere($where){
$model=UserBill::alias('a')->join('__user__ b','a.uid=b.uid','left')->where('a.category','integral'); $model=UserBill::alias('a')->join('user b','a.uid=b.uid','left')->where('a.category','integral');
$time['data']=''; $time['data']='';
if($where['start_time']!='' && $where['end_time']!=''){ if($where['start_time']!='' && $where['end_time']!=''){
$time['data']=$where['start_time'].' - '.$where['end_time']; $time['data']=$where['start_time'].' - '.$where['end_time'];

View File

@ -44,7 +44,7 @@ use crmeb\services\PHPExcelService;
$model = $model->where('A.recharge_type','weixin'); $model = $model->where('A.recharge_type','weixin');
$model = $model->where('A.paid',1); $model = $model->where('A.paid',1);
$model = $model->field('A.*,B.nickname'); $model = $model->field('A.*,B.nickname');
$model = $model->join('__user__ B','A.uid = B.uid','RIGHT'); $model = $model->join('user B','A.uid = B.uid','RIGHT');
$model = $model->order('A.id desc'); $model = $model->order('A.id desc');
return self::page($model,$where); return self::page($model,$where);

View File

@ -170,7 +170,7 @@ use app\admin\model\order\StoreOrderStatus;
$model=$model->alias($alias)->join('user u','a.uid=u.uid')->order('u.uid desc'); $model=$model->alias($alias)->join('user u','a.uid=u.uid')->order('u.uid desc');
$alias.='.'; $alias.='.';
} }
$status = (int)SystemConfigService::get('store_brokerage_statu'); $status = (int)sysConfig('store_brokerage_statu');
if ($status == 1) { if ($status == 1) {
if ($Listuids = User::where(['is_promoter' => 1])->field('uid')->select()) { if ($Listuids = User::where(['is_promoter' => 1])->field('uid')->select()) {
$newUids = []; $newUids = [];
@ -209,7 +209,7 @@ use app\admin\model\order\StoreOrderStatus;
*/ */
public static function agentSystemPage($where = array()){ public static function agentSystemPage($where = array()){
$model=self::setSpreadWhere($where); $model=self::setSpreadWhere($where);
$status =SystemConfigService::get('store_brokerage_statu'); $status =sysConfig('store_brokerage_statu');
if(isset($where['excel']) && $where['excel'] == 1){ if(isset($where['excel']) && $where['excel'] == 1){
$list = $model->field(['a.uid','u.phone','a.nickname','a.sex','a.country','a.province','a.city','a.now_money','a.subscribe','u.brokerage_price'])->select()->toArray(); $list = $model->field(['a.uid','u.phone','a.nickname','a.sex','a.country','a.province','a.city','a.now_money','a.subscribe','u.brokerage_price'])->select()->toArray();
$export = []; $export = [];
@ -235,7 +235,7 @@ use app\admin\model\order\StoreOrderStatus;
$uids = array_merge($uids); $uids = array_merge($uids);
} }
$item['extract_sum_price'] = self::getModelTime($where,UserExtract::where('uid',$item['uid']))->sum('extract_price'); $item['extract_sum_price'] = self::getModelTime($where,UserExtract::where('uid',$item['uid']))->sum('extract_price');
$item['extract_count_price'] = UserExtract::getUserCountPrice($item['uid'].$where);//累计提现金额 $item['extract_count_price'] = UserExtract::getUserCountPrice($item['uid']);//累计提现金额
$item['extract_count_num'] = UserExtract::getUserCountNum($item['uid'],$where);//提现次数 $item['extract_count_num'] = UserExtract::getUserCountNum($item['uid'],$where);//提现次数
$item['order_price'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->sum('pay_price') : 0;//订单金额 $item['order_price'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->sum('pay_price') : 0;//订单金额
$item['order_count'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->count() : 0;//订单数量 $item['order_count'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->count() : 0;//订单数量
@ -298,7 +298,7 @@ use app\admin\model\order\StoreOrderStatus;
$uids = array_merge($uids); $uids = array_merge($uids);
} }
$item['extract_sum_price'] = self::getModelTime($where,UserExtract::where('uid',$item['uid']))->sum('extract_price'); $item['extract_sum_price'] = self::getModelTime($where,UserExtract::where('uid',$item['uid']))->sum('extract_price');
$item['extract_count_price'] = UserExtract::getUserCountPrice($item['uid'],$where);//累计提现金额 $item['extract_count_price'] = UserExtract::getUserCountPrice($item['uid']);//累计提现金额
$item['extract_count_num'] = UserExtract::getUserCountNum($item['uid'],$where);//提现次数 $item['extract_count_num'] = UserExtract::getUserCountNum($item['uid'],$where);//提现次数
$item['order_price'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->sum('pay_price') : 0;//订单金额 $item['order_price'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->sum('pay_price') : 0;//订单金额
$item['order_count'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->count() : 0;//订单数量 $item['order_count'] = count($uids) ? StoreOrder::where('uid','in',$uids)->where(['paid'=>1,'refund_status'=>0])->count() : 0;//订单数量
@ -539,7 +539,7 @@ use app\admin\model\order\StoreOrderStatus;
public static function getStairList($where) public static function getStairList($where)
{ {
if(!isset($where['uid'])) return []; if(!isset($where['uid'])) return [];
$data = self::setSairWhere($where,new User())->page((int)$where['page'],(int)$where['limit'])->select(); $data = self::setSairWhere($where,new User())->order('add_time desc')->page((int)$where['page'],(int)$where['limit'])->select();
$data = count($data) ? $data->toArray() : []; $data = count($data) ? $data->toArray() : [];
$userInfo = User::where('uid',$where['uid'])->find(); $userInfo = User::where('uid',$where['uid'])->find();
foreach ($data as &$item){ foreach ($data as &$item){
@ -719,7 +719,7 @@ use app\admin\model\order\StoreOrderStatus;
public static function clearUserTag() public static function clearUserTag()
{ {
Cache::deleteItem('_wechat_tag'); Cache::delete('_wechat_tag');
} }
public static function getUserGroup() public static function getUserGroup()
@ -739,7 +739,7 @@ use app\admin\model\order\StoreOrderStatus;
public static function clearUserGroup() public static function clearUserGroup()
{ {
Cache::deleteItem('_wechat_group'); Cache::delete('_wechat_group');
} }
/** /**

View File

@ -253,16 +253,15 @@
$eb.$swal('delete',function(){ $eb.$swal('delete',function(){
$eb.axios.get(url).then(function(res){ $eb.axios.get(url).then(function(res){
if(res.status == 200 && res.data.code == 200) { if(res.status == 200 && res.data.code == 200) {
$eb.$swal('success',res.data.msg); $eb.$swal('success',res.data.msg)
obj.del();
}else }else
return Promise.reject(res.data.msg || '清除失败') return Promise.reject(res.data.msg || '清除失败')
}).catch(function(err){ }).catch(function(err){
$eb.$swal('error',err); $eb.$swal('error',err);
}); });
},{ },{
title:'您将解除【'+data.nickname+'】的推广权限,请谨慎操作!', title:'您将解除【'+data.nickname+'】的上级推广人,请谨慎操作!',
text:'解除后可在会员管理里面开启', text:'解除后无法恢复',
confirm:'是的我要解除' confirm:'是的我要解除'
}) })
break; break;

View File

@ -301,7 +301,7 @@
$eb.message('error','一组图文消息最多可以添加8个'); $eb.message('error','一组图文消息最多可以添加8个');
return false; return false;
} }
var url = "/public/system/module/wechat/news/images/image.png"; var url = "{__MODULE_PATH}wechat/news/images/image.png";
html = ''; html = '';
html += '<div class="news-item transition active news-image" style=" margin-bottom: 20px;background-image:url('+url+')">' html += '<div class="news-item transition active news-image" style=" margin-bottom: 20px;background-image:url('+url+')">'
html += '<input type="hidden" name="new_id" value="" class="new-id">'; html += '<input type="hidden" name="new_id" value="" class="new-id">';

View File

@ -1,6 +1,6 @@
{extend name="public/container"} {extend name="public/container"}
{block name="head_top"} {block name="head_top"}
<link href="/public/system/module/wechat/news/css/index.css" type="text/css" rel="stylesheet"> <link href="{__MODULE_PATH}wechat/news/css/index.css" type="text/css" rel="stylesheet">
{/block} {/block}
{block name="content"} {block name="content"}
<style> <style>

View File

@ -38,12 +38,12 @@
</span> </span>
</a> </a>
<ul class="dropdown-menu animated fadeInRight m-t-xs"> <ul class="dropdown-menu animated fadeInRight m-t-xs">
<li><a class="J_menuItem admin_close" href="{:Url('setting.systemAdmin/adminInfo')}">个人资料</a> <li><a class="J_menuItem admin_close" href="{:Url('setting.systemAdmin/admin_info')}">个人资料</a>
</li> </li>
<li><a class="admin_close" target="_blank" href="http://www.crmeb.com/">联系我们</a> <li><a class="admin_close" target="_blank" href="http://www.crmeb.com/">联系我们</a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="{:Url('Login/logout')}">安全退出</a> <li><a href="{:Url('login/logout')}">安全退出</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -159,43 +159,28 @@
<div id="right-sidebar"> <div id="right-sidebar">
<div class="sidebar-container"> <div class="sidebar-container">
<ul class="nav nav-tabs navs-3"> <ul class="nav nav-tabs navs-3">
<!-- <li class="active">-->
<!-- <a data-toggle="tab" href="#tab-1">-->
<!-- <i class="fa fa-bell"></i>通知-->
<!-- </a>-->
<!-- </li>-->
<li class="active"> <li class="active">
<a data-toggle="tab" href="#tab-1"> <a data-toggle="tab" href="#tab-1">
<i class="fa fa-bell"></i>通知
</a>
</li>
<li class="">
<a data-toggle="tab" href="#tab-2">
<i class="fa fa-gear"></i> 设置 <i class="fa fa-gear"></i> 设置
</a> </a>
</li> </li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<!-- <div id="tab-1" class="tab-pane active">-->
<!-- <div class="sidebar-title">-->
<!-- <h3><i class="fa fa-comments-o"></i> 最新通知</h3>-->
<!-- <small><i class="fa fa-tim"></i> 您当前有0条未读信息</small>-->
<!-- </div>-->
<!-- <div>-->
<!-- </div>-->
<!-- </div>-->
<div id="tab-1" class="tab-pane active"> <div id="tab-1" class="tab-pane active">
<div class="sidebar-title">
<h3><i class="fa fa-comments-o"></i> 最新通知</h3>
<small><i class="fa fa-tim"></i> 您当前有0条未读信息</small>
</div>
<div>
<!--<div class="sidebar-message">
<a href="#">
<div class="pull-left text-center">
<img alt="image" class="img-circle message-avatar" src="http://ozwpnu2pa.bkt.clouddn.com/a1.jpg">
<div class="m-t-xs">
<i class="fa fa-star text-warning"></i> <i class="fa fa-star text-warning"></i>
</div>
</div>
<div class="media-body">
据天津日报报道瑞海公司董事长于学伟副董事长董社轩等10人在13日上午已被控制。 <br>
<small class="text-muted">今天 4:21 <a class="J_menuItem admin_close" href="/admin/setting.system_admin/admininfo.html" data-index="0">【查看】</a></small>
</div>
</a>
</div>-->
</div>
</div>
<div id="tab-2" class="tab-pane ">
<div class="sidebar-title"> <div class="sidebar-title">
<h3><i class="fa fa-comments-o"></i> 提示</h3> <h3><i class="fa fa-comments-o"></i> 提示</h3>
<small><i class="fa fa-tim"></i> 你可以从这里选择和预览主题的布局和样式,这些设置会被保存在本地,下次打开的时候会直接应用这些设置。</small> <small><i class="fa fa-tim"></i> 你可以从这里选择和预览主题的布局和样式,这些设置会被保存在本地,下次打开的时候会直接应用这些设置。</small>

View File

@ -8,6 +8,7 @@
<meta name="generator" content="CRMEB! v2.5" /> <meta name="generator" content="CRMEB! v2.5" />
<meta name="author" content="CRMEB! Team and CRMEB UI Team" /> <meta name="author" content="CRMEB! Team and CRMEB UI Team" />
<link href="{__FRAME_PATH}css/bootstrap.min.css?v=3.4.0" rel="stylesheet"> <link href="{__FRAME_PATH}css/bootstrap.min.css?v=3.4.0" rel="stylesheet">
<link href="{__PLUG_PATH}layui/css/layui.css" rel="stylesheet">
<link href="{__FRAME_PATH}css/font-awesome.min.css?v=4.3.0" rel="stylesheet"> <link href="{__FRAME_PATH}css/font-awesome.min.css?v=4.3.0" rel="stylesheet">
<link href="{__FRAME_PATH}css/animate.min.css" rel="stylesheet"> <link href="{__FRAME_PATH}css/animate.min.css" rel="stylesheet">
<link href="{__FRAME_PATH}css/style.min.css?v=3.0.0" rel="stylesheet"> <link href="{__FRAME_PATH}css/style.min.css?v=3.0.0" rel="stylesheet">
@ -22,7 +23,7 @@
<h3 class="login-logo"> <h3 class="login-logo">
<img src="{__ADMIN_PATH}images/logo.png"> <img src="{__ADMIN_PATH}images/logo.png">
</h3> </h3>
<form role="form" action="{:url('verify')}" method="post"> <form role="form" action="{:url('verify')}" method="post" id="form" onsubmit="return false">
<div class="form-group"> <div class="form-group">
<div class="input-group m-b"><span class="input-group-addon"><i class="fa fa-user"></i> </span> <div class="input-group m-b"><span class="input-group-addon"><i class="fa fa-user"></i> </span>
<input type="text" id="account" name="account" placeholder="用户名" placeholder="用户名" class="form-control"> <input type="text" id="account" name="account" placeholder="用户名" placeholder="用户名" class="form-control">
@ -42,11 +43,6 @@
</span> </span>
</div> </div>
</div> </div>
<div class="form-group">
<strong>
<p class="text-danger" id="err" style="display: none;"></p>
</strong>
</div>
<button type="submit" class="btn btn-primary block full-width m-b"> </button> <button type="submit" class="btn btn-primary block full-width m-b"> </button>
<?php /* <p class="text-muted text-center"> <a href="{:url('./forgetpwd')}"><small>忘记密码了?</small></a> | <a href="{:url('./register')}">注册一个新账号</a> <?php /* <p class="text-muted text-center"> <a href="{:url('./forgetpwd')}"><small>忘记密码了?</small></a> | <a href="{:url('./register')}">注册一个新账号</a>
</p> */ ?> </p> */ ?>
@ -63,6 +59,7 @@
<script src="{__FRAME_PATH}js/bootstrap.min.js?v=3.4.0"></script> <script src="{__FRAME_PATH}js/bootstrap.min.js?v=3.4.0"></script>
<script src="{__MODULE_PATH}login/flaotfont.js"></script> <script src="{__MODULE_PATH}login/flaotfont.js"></script>
<script src="{__MODULE_PATH}login/ios-parallax.js"></script> <script src="{__MODULE_PATH}login/ios-parallax.js"></script>
<script src="{__PLUG_PATH}layui/layui.all.js"></script>
<script src="{__MODULE_PATH}login/index.js"></script> <script src="{__MODULE_PATH}login/index.js"></script>
<!--统计代码,可删除--> <!--统计代码,可删除-->
<!--点击刷新验证码--> <!--点击刷新验证码-->

View File

@ -224,7 +224,7 @@
<i class="fa fa-motorcycle"></i> 去送货 <i class="fa fa-motorcycle"></i> 去送货
</a> </a>
</li> </li>
{{# if(d.use_integral > 0 && d.use_integral >= d.back_integral){ }} {{# if(parseFloat(d.use_integral) > 0 && parseFloat(d.use_integral) > parseFloat(d.back_integral)){ }}
<li> <li>
<a lay-event='marke' href="javascript:void(0);"> <a lay-event='marke' href="javascript:void(0);">
<i class="fa fa-paste"></i> 订单备注 <i class="fa fa-paste"></i> 订单备注
@ -280,7 +280,7 @@
<i class="fa fa-history"></i> 立即退款 <i class="fa fa-history"></i> 立即退款
</a> </a>
</li> </li>
{{# }else if(d.use_integral > 0 && d.use_integral >= d.back_integral){ }} {{# }else if(parseFloat(d.use_integral) > 0 && parseFloat(d.use_integral) > parseFloat(d.back_integral)){ }}
<li> <li>
<a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')"> <a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')">
<i class="fa fa-history"></i> 退积分 <i class="fa fa-history"></i> 退积分
@ -313,7 +313,7 @@
</a> </a>
</li> </li>
{{# };}} {{# };}}
{{# if(d.use_integral > 0 && d.use_integral >= d.back_integral){ }} {{# if(parseFloat(d.use_integral) > 0 && parseFloat(d.use_integral) > parseFloat(d.back_integral)){ }}
<li> <li>
<a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')"> <a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')">
<i class="fa fa-history"></i> 退积分 <i class="fa fa-history"></i> 退积分
@ -346,7 +346,7 @@
</a> </a>
</li> </li>
{{# } }} {{# } }}
{{# if(d.use_integral > 0 && d.use_integral >= d.back_integral){ }} {{# if(parseFloat(d.use_integral) > 0 && parseFloat(d.use_integral) >= parseFloat(d.back_integral)){ }}
<li> <li>
<a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')"> <a href="javascript:void(0);" onclick="$eb.createModalFrame('退积分','{:Url('integral_back')}?id={{d.id}}')">
<i class="fa fa-history"></i> 退积分 <i class="fa fa-history"></i> 退积分

View File

@ -22,6 +22,7 @@
</head> </head>
<body> <body>
<script> <script>
window.$f = null
formCreate.formSuccess = function(form,$r){ formCreate.formSuccess = function(form,$r){
<?=$form->getSuccessScript()?> <?=$form->getSuccessScript()?>
//刷新父级页面 //刷新父级页面
@ -51,7 +52,7 @@
if(_b) return ; if(_b) return ;
_b = true; _b = true;
if (!el) el = document.body; if (!el) el = document.body;
var $f = formCreate.create(getRule(), { $f = formCreate.create(getRule(), {
el: el, el: el,
form:<?=json_encode($form->getConfig('form'))?>, form:<?=json_encode($form->getConfig('form'))?>,
row:<?=json_encode($form->getConfig('row'))?>, row:<?=json_encode($form->getConfig('row'))?>,

View File

@ -15,7 +15,7 @@
<script> <script>
$eb = parent._mpApi; $eb = parent._mpApi;
window.controlle="<?php echo strtolower(trim(preg_replace("/[A-Z]/", "_\\0", app('request')->controller()), "_"));?>"; window.controlle="<?php echo strtolower(trim(preg_replace("/[A-Z]/", "_\\0", app('request')->controller()), "_"));?>";
window.module="<?php echo app('request')->app();?>"; window.module="<?php echo app('http')->getName();?>";
</script> </script>

View File

@ -0,0 +1,131 @@
{extend name="public/container"}
{block name="head"}
<style>
label.error{
color: #a94442;
margin-bottom: 0;
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transform: translate(0, 0);
}
</style>
<link href="{__FRAME_PATH}css/plugins/iCheck/custom.css" rel="stylesheet">
<script src="{__ADMIN_PATH}plug/validate/jquery.validate.js"></script>
<script src="{__ADMIN_PATH}frame/js/plugins/iCheck/icheck.min.js"></script>
<script src="{__ADMIN_PATH}frame/js/ajaxfileupload.js"></script>
{/block}
{block name="content"}
<div class="row">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-title">
<div class="text-left">个人资料</div>
<div class="ibox-tools">
</div>
</div>
<div class="ibox-content">
<form method="post" class="form-horizontal" id="signupForm" action="">
<input type="hidden" value="{$adminInfo.id}" name="id"/>
<div class="form-group">
<label class="col-sm-2 control-label">账号</label>
<div class="col-sm-10">
<div class="row">
<div class="col-md-6">
<input type="text" class="form-control" name="account" value="{$adminInfo.account}" validate="" disabled/>
</div>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label">姓名</label>
<div class="col-sm-10">
<div class="row">
<div class="col-md-6">
<input type="text" class="form-control" name="real_name" value="{$adminInfo.real_name}" validate="required:true" id="real_name"/>
</div>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label">原始密码</label>
<div class="col-sm-10">
<div class="row">
<div class="col-md-6">
<input type="password" class="form-control" name="pwd" id="pwd"/>
</div>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label">新密码</label>
<div class="col-sm-10">
<div class="row">
<div class="col-md-6">
<input type="password" class="form-control" name="new_pwd" id="new_pwd"/>
</div>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label">确认新密码</label>
<div class="col-sm-10">
<div class="row">
<div class="col-md-6">
<input type="password" class="form-control" name="new_pwd_ok" id="new_pwd_ok"/>
</div>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group" style="text-align: center;">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-primary add" type="button">提交</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script>
$eb = parent._mpApi;
$().ready(function() {
$("#signupForm").validate();
})
$('.add').on('click',function (e) {
var list = [];
list.real_name = $('#real_name').val();
list.pwd = $('#pwd').val();
list.new_pwd = $('#new_pwd').val();
list.new_pwd_ok = $('#new_pwd_ok').val();
if(list.real_name.length < 1) return $eb.message('error','请填写姓名');
var url = "{:Url('setAdminInfo')}";
$.ajax({
url:url,
data:{real_name:list.real_name,pwd:list.pwd,new_pwd:list.new_pwd,new_pwd_ok:list.new_pwd_ok},
type:'post',
dataType:'json',
success:function (re) {
if(re.code == 400)
return $eb.message('error',re.msg);
else
return $eb.message('success',re.msg);
}
})
})
</script>
{/block}

View File

@ -4,9 +4,9 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title><?=$form->getTitle()?></title> <title><?=$form->getTitle()?></title>
<link href="/system/frame/css/bootstrap.min.css?v=3.4.0" rel="stylesheet"> <link href="{__FRAME_PATH}/css/bootstrap.min.css?v=3.4.0" rel="stylesheet">
<link href="/system/css/layui-admin.css" rel="stylesheet"> <link href="{__ADMIN_PATH}/css/layui-admin.css" rel="stylesheet">
<link href="/system/frame/css/style.min.css?v=3.0.0" rel="stylesheet"> <link href="{__FRAME_PATH}/css/style.min.css?v=3.0.0" rel="stylesheet">
<link href="{__FRAME_PATH}css/font-awesome.min.css?v=4.3.0" rel="stylesheet"> <link href="{__FRAME_PATH}css/font-awesome.min.css?v=4.3.0" rel="stylesheet">
<script src="{__PLUG_PATH}vue/dist/vue.min.js"></script> <script src="{__PLUG_PATH}vue/dist/vue.min.js"></script>
<link href="{__PLUG_PATH}iview/dist/styles/iview.css" rel="stylesheet"> <link href="{__PLUG_PATH}iview/dist/styles/iview.css" rel="stylesheet">
@ -65,7 +65,7 @@
<script> <script>
formCreate.formSuccess = function(form,$r){ formCreate.formSuccess = function(form,$r){
<?=$form->getSuccessScript()?> <?=$form->getSuccessScript()?>
$f.btn.loading(false)(); $r.btn.loading(false);
}; };
(function () { (function () {

View File

@ -175,7 +175,7 @@
<!--单图-->{else/} <!--单图-->{else/}
<div style="display: inline-flex;"> <div style="display: inline-flex;">
<input type="file" class="{$vo.menu_name}_1" name="{$vo.menu_name}" style="display: none;" data-name="{$vo.menu_name}" id="{$vo.menu_name}" data-type = "{$vo.upload_type}" /> <input type="file" class="{$vo.menu_name}_1" name="{$vo.menu_name}" style="display: none;" data-name="{$vo.menu_name}" id="{$vo.menu_name}" data-type = "{$vo.upload_type}" />
<div class="flag" style="width: 100px;height: 80px;background-image:url('/public/system/module/wechat/news/images/image.png');cursor: pointer" data-name="{$vo.menu_name}" > <div class="flag" style="width: 100px;height: 80px;background-image:url('{__MODULE_PATH}wechat/news/images/image.png');cursor: pointer" data-name="{$vo.menu_name}" >
</div> </div>
{if condition="$num_img LT 1"} {if condition="$num_img LT 1"}
<div class="file-box"> <div class="file-box">

View File

@ -157,7 +157,7 @@
<button class="btn btn-info btn-xs" type="button" onclick="$eb.createModalFrame('编辑','{:Url('setting.system_config/edit_config',array('id'=>$vo['id']))}')"><i class="fa fa-paste"></i> 编辑</button> <button class="btn btn-info btn-xs" type="button" onclick="$eb.createModalFrame('编辑','{:Url('setting.system_config/edit_config',array('id'=>$vo['id']))}')"><i class="fa fa-paste"></i> 编辑</button>
<button class="btn btn-warning btn-xs del_config_tab" data-id="{$vo.id}" type="button" data-url="{:Url('setting.system_config/delete_cinfig',array('id'=>$vo['id']))}" ><i class="fa fa-warning"></i> 删除 <button class="btn btn-warning btn-xs del_config_tab" data-id="{$vo.id}" type="button" data-url="{:Url('setting.system_config/delete_config',array('id'=>$vo['id']))}" ><i class="fa fa-warning"></i> 删除
</button> </button>

View File

@ -21,7 +21,7 @@
.message-content-btn {text-align: center;padding: 10px 0;} .message-content-btn {text-align: center;padding: 10px 0;}
.media-body .message-but{margin-top: 10px;} .media-body .message-but{margin-top: 10px;}
.message-content .message-content-btn .layui-btn {height: auto;line-height: 26px;padding: 5px 30px;font-size: 16px;} .message-content .message-content-btn .layui-btn {height: auto;line-height: 26px;padding: 5px 30px;font-size: 16px;}
.message-content .homepage-bottom .layadmin-privateletterlist-item .meida-left img{width: 151px;height: 81px;} .message-content .homepage-bottom .layadmin-privateletterlist-item .meida-left img{width: 100%;}
.message-content .homepage-bottom .layadmin-privateletterlist-item{border: 1px solid #e0e0e0;margin-bottom: 10px;cursor:pointer;} .message-content .homepage-bottom .layadmin-privateletterlist-item{border: 1px solid #e0e0e0;margin-bottom: 10px;cursor:pointer;}
.message-content .homepage-bottom .layadmin-privateletterlist-item .meida-right{padding: 10px;} .message-content .homepage-bottom .layadmin-privateletterlist-item .meida-right{padding: 10px;}
.message-content .homepage-bottom .layadmin-privateletterlist-item.on{border: 1px solid #0092DC!important;} .message-content .homepage-bottom .layadmin-privateletterlist-item.on{border: 1px solid #0092DC!important;}
@ -75,9 +75,7 @@
<div class="layui-card-header" style="padding-top: 10px;"> <div class="layui-card-header" style="padding-top: 10px;">
<div style="height: 30px;line-height: 30px;float:left;" >评论产品</div> <div style="height: 30px;line-height: 30px;float:left;" >评论产品</div>
<div style="height: 30px;line-height: 30px;float: right;"> <div style="height: 30px;line-height: 30px;float: right;">
<input style="display: inline;width: auto;" type="text" class="layui-input layui-input-search" v-model="where.product_name" placeholder="搜索产品"> <input style="display: inline;width: auto;" type="text" class="layui-input layui-input-search" v-model="where.product_name" @blur='seachs' placeholder="搜索产品">
<button class="layui-btn layui-btn-primary layui-btn-sm" type="button" style="height: 32px;line-height: 32px;" @click="seachs"><i class="layui-icon layui-icon-search"></i>搜索</button>
<button class="layui-btn layui-btn-primary layui-btn-sm" type="button" style="height: 32px;line-height: 32px;margin-left: 0;" @click="Reset"><i class="layui-icon layui-icon-refresh-3"></i>重置</button>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
@ -126,7 +124,7 @@
</div> </div>
<div class="message-text"> <div class="message-text">
<p v-text="item.comment"></p> <p v-text="item.comment"></p>
<div class="image-box" v-if="item.pics.length"> <div class="image-box" v-if="item.pics && typeof item.pics == 'object'">
<img :src="pic" alt="" v-for="pic in item.pics" @click="lockImage(pic)"> <img :src="pic" alt="" v-for="pic in item.pics" @click="lockImage(pic)">
</div> </div>
</div> </div>
@ -263,8 +261,8 @@
if(that.product.loadend) return; if(that.product.loadend) return;
that.product.loadTitle='加载中'; that.product.loadTitle='加载中';
layList.baseGet(layList.U({a:'get_product_imaes_list',q:that.where}),function (res) { layList.baseGet(layList.U({a:'get_product_imaes_list',q:that.where}),function (res) {
var list=res.data; var list = res.data;
var loadend=list.length < that.where.limit; var loadend = list.length < that.where.limit;
that.where.page=that.where.page+1; that.where.page=that.where.page+1;
that.product.loading=false; that.product.loading=false;
that.product.loadend=loadend; that.product.loadend=loadend;

View File

@ -1,58 +1,118 @@
{include file="public/frame_head"} {include file="public/frame_head"}
<style> <style>
.panel{
width: 100%;margin-top:20px; text-align: left;padding: 20px 40px;
}
.panel button{display: block;margin:5px;} .panel button{display: block;margin:5px;}
.clear_tit span{font-size: 12px; color: #ED4014;margin: 15px 0;}
.clear_box{border: 1px solid #DADFE6;border-radius: 3px;display: flex;flex-direction: column;align-items: center;padding: 30px 10px;box-sizing:border-box}
.clear_box_sp1{font-size: 16px;color: #000000;display: block;}
.clear_box_sp2{font-size: 14px;color: #ED4014;display: block;margin: 12px 0;}
.layui-btn-danger {background-color: #FF5722;}
</style> </style>
<div class="col-sm-12"> <div class="layui-fluid">
<blockquote class="text-warning" style="font-size:14px">清除数据请谨慎,清除就无法恢复哦! <div class="layui-row layui-col-space15" id="app">
</blockquote> <div class="layui-col-md12">
<div class="layui-card">
<hr> <div class="layui-card-body">
<blockquote class="layui-elem-quote layui-quote-nm">
清除数据请谨慎,清除就无法恢复哦!
</blockquote>
<div class="clear_box layui-col-md3 layui-col-lg3 layui-col-sm3" v-for="item in clearData">
<span class="clear_box_sp1">{{item.name}}</span>
<span class="clear_box_sp2" v-if="item.info">{{item.info}}</span>
<button type="primary" class="layui-btn layui-btn-danger cleardata" @click="unDate(item)">立即清理</button>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<div class="row panel">
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/userRelevantData')}">清除用户数据</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/storeData')}">清除商城数据</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/categoryData')}">清除产品分类</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/orderData')}">清除订单数据</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/kefuData')}">清除客服数据</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/wechatData')}">清除微信数据</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/wechatuserData')}">清除微信用户</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/articleData')}">清除内容分类</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/uploadData')}">清除所有附件</button><br>
<button type="button" class="btn btn-w-m btn-danger btn-primary cleardata" data-url="{:Url('system.SystemCleardata/systemdata')}">清除系统记录</button><br>
<!--<button type="button" class="btn btn-w-m btn-danger btn-primary creatuser" data-url="{:Url('system.SystemCleardata/userdate')}">创建前台用户用户名crmeb 密码123456</button>--> <!--<button type="button" class="btn btn-w-m btn-danger btn-primary creatuser" data-url="{:Url('system.SystemCleardata/userdate')}">创建前台用户用户名crmeb 密码123456</button>-->
</div> </div>
<script type="text/javascript" src="/static/plug/vue/dist/vue.min.js"></script>
<script> <script>
$('.cleardata').on('click',function(){ new Vue({
window.t = $(this); data:{
var _this = $(this),url =_this.data('url'); clearData:[
$eb.$swal('delete',function(){ {
$eb.axios.get(url).then(function(res){ name:'清除用户生成的临时附件',
if(res.status == 200 && res.data.code == 200) { info:'清除用户生成的临时附件,不会影响产品图',
$eb.$swal('success',res.data.msg); url:"{:Url('system.SystemCleardata/undata',['type'=>1])}"
}else },
return Promise.reject(res.data.msg || '操作失败') {
}).catch(function(err){ name: '清除回收站产品',
$eb.$swal('error',err); info:'清除回收站产品,谨慎操作',
}); url: "{:Url('system.SystemCleardata/undata',['type'=>2])}",
},{'title':'您确定要进行此操作吗?','text':'数据清除无法恢复','confirm':'是的,我要操作'}) },
}); {
$('.creatuser').on('click',function(){ name:'清除用户数据',
window.t = $(this); info:'用户相关的所有表都将被清除,谨慎操作',
var _this = $(this),url =_this.data('url'); url: "{:Url('system.SystemCleardata/userRelevantData')}",
$eb.$swal('delete',function(){ },
$eb.axios.get(url).then(function(res){ {
if(res.status == 200 && res.data.code == 200) { name:'清除商城数据',
$eb.$swal('success',res.data.msg); info:'清除商城数据,谨慎操作',
}else url: "{:Url('system.SystemCleardata/storeData')}",
return Promise.reject(res.data.msg || '操作失败') },
}).catch(function(err){ {
$eb.$swal('error',err); name:'清除产品分类',
}); info:"会清除所有产品分类,谨慎操作",
},{'title':'您确定要进行此操作吗?','text':'用户数据清除之后才能进行此操作','confirm':'是的,我要操作'}) url:"{:Url('system.SystemCleardata/categoryData')}",
}) },
{
name:"清除订单数据",
info:'清除用户所有订单数据,谨慎操作',
url:"{:Url('system.SystemCleardata/orderData')}",
},
{
name:'清除客服数据',
info:'清除添加的客服数据,谨慎操作',
url:"{:Url('system.SystemCleardata/kefuData')}",
},
{
name:'清除微信数据',
info:'清除微信菜单保存数据,微信关键字无效回复',
url:"{:Url('system.SystemCleardata/wechatData')}",
},
{
name:'清除微信用户',
info:"清除用户表和微信用户表,谨慎操作",
url:"{:Url('system.SystemCleardata/wechatuserData')}"
},
{
name:'清除内容分类',
info:'清除添加的文章和文章分类,谨慎操作',
url:"{:Url('system.SystemCleardata/articleData')}",
},
{
name:'清除所有附件',
info:'清除所有附件用户生成和后台上传,谨慎操作',
url:"{:Url('system.SystemCleardata/uploadData')}",
},
{
name:'清除系统记录',
info:'清除系统记录,谨慎操作',
url:"{:Url('system.SystemCleardata/systemdata')}",
}
],
},
methods:{
unDate:function (item) {
$eb.$swal('delete',function(){
$eb.axios.get(item.url).then(function(res){
if(res.status == 200 && res.data.code == 200) {
$eb.$swal('success',res.data.msg);
}else
return Promise.reject(res.data.msg || '操作失败')
}).catch(function(err){
$eb.$swal('error',typeof err == 'object' ? err.toString() : err);
});
},{'title':'您确定要'+item.name+'吗?','text':'数据清除无法恢复','confirm':'是的,我要操作'})
}
},
mounted:function () {
}
}).$mount(document.getElementById('app'));
</script> </script>
{include file="public/inner_footer"} {include file="public/inner_footer"}

View File

@ -39,8 +39,8 @@
<Form-Item> <Form-Item>
<Row> <Row>
<i-Col span="13"> <i-Col span="13">
<span>门店电话</span> <span>门店手机号</span>
<i-Input placeholder="门店电话" v-model="form.phone" style="width: 80%" type="text"></i-Input> <i-Input placeholder="门店手机号" v-model="form.phone" style="width: 80%" type="text"></i-Input>
</i-Col> </i-Col>
</Row> </Row>
</Form-Item> </Form-Item>
@ -89,7 +89,7 @@
</div> </div>
</template> </template>
</div> </div>
<div class="ivu-upload" style="display: inline-block; width: 58px;" @click="openWindows('选择图片','{:Url('widget.images/index',['fodder'=>'image'])}')" v-if="!form.image"> <div class="ivu-upload" style="display: inline-block; width: 58px;" @click="openWindows('选择图片','{:Url('widget.images/index',['fodder'=>'image'])}',{w:900,h:550})" v-if="!form.image">
<div class="ivu-upload ivu-upload-drag"> <div class="ivu-upload ivu-upload-drag">
<div style="width: 58px; height: 58px; line-height: 58px;"> <div style="width: 58px; height: 58px; line-height: 58px;">
<i class="ivu-icon ivu-icon-camera" style="font-size: 20px;"></i> <i class="ivu-icon ivu-icon-camera" style="font-size: 20px;"></i>
@ -146,7 +146,7 @@
} }
}); });
new Vue({ new Vue({
data() { data:function() {
return { return {
id:storeData.id || 0, id:storeData.id || 0,
addresData:city, addresData:city,
@ -191,6 +191,7 @@
}, },
handleChange:function(value,selectedData){ handleChange:function(value,selectedData){
var that = this; var that = this;
that.form.address = [];
$.each(selectedData,function (key,item) { $.each(selectedData,function (key,item) {
that.form.address.push(item.label); that.form.address.push(item.label);
}); });

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
{include file="public/head"}
<title>{$title|default=''}</title>
<style>
</style>
</head>
<body id="body" style="position: absolute;height: 100%;width: 100%">
<iframe id="mapPage" width="100%" height="100%" frameborder=0
src="https://3gimg.qq.com/lightmap/components/locationPicker2/index.html?type=1&key={$key}&referer=myapp">
</iframe>
</body>
<script>
window.onload=function(){
document.getElementById('body').style.height=document.body.clientHeight+'px';
}
mpFrame.start(function(layer) {
window.addEventListener('message',function (evevt) {
if(evevt.data){
parent.selectAdderss(evevt.data);
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}else{
return layer.msg('请选择地图');
}
});
})
</script>

View File

@ -30,7 +30,7 @@
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="m-b-md"> <div class="m-b-md">
<h2>在线升级 <span style="font-size: 5px;color: red">当前版本为:{{version}}</span></h2> <h2>在线升级 <span style="font-size: 12px;color: red">当前版本为:{{version}}</span></h2>
</div> </div>
</div> </div>
</div> </div>

View File

@ -51,7 +51,7 @@
<input type='checkbox' name='id' disabled lay-skin='switch' value="{{d.id}}" lay-filter='is_forever' lay-text='永久|非永久' {{ d.is_forever == 1 ? 'checked' : '' }}> <input type='checkbox' name='id' disabled lay-skin='switch' value="{{d.id}}" lay-filter='is_forever' lay-text='永久|非永久' {{ d.is_forever == 1 ? 'checked' : '' }}>
</script> </script>
<script type="text/html" id="is_show"> <script type="text/html" id="is_show">
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='显示|隐藏' {{ d.is_show == 1 ? 'checked' : '' }}> <input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='开启|关闭' {{ d.is_show == 1 ? 'checked' : '' }}>
</script> </script>
<script type="text/html" id="is_pay"> <script type="text/html" id="is_pay">
<input type='checkbox' name='id' disabled lay-skin='switch' value="{{d.id}}" lay-filter='is_pay' lay-text='付费|免费' {{ d.is_pay == 1 ? 'checked' : '' }}> <input type='checkbox' name='id' disabled lay-skin='switch' value="{{d.id}}" lay-filter='is_pay' lay-text='付费|免费' {{ d.is_pay == 1 ? 'checked' : '' }}>
@ -94,11 +94,10 @@
{field: 'icon', title: '等级图标',templet:'#icon',align:"center",width:'10%'}, {field: 'icon', title: '等级图标',templet:'#icon',align:"center",width:'10%'},
{field: 'name', title: '等级名称',edit:'name',width:'6%',align:"center"}, {field: 'name', title: '等级名称',edit:'name',width:'6%',align:"center"},
{field: 'grade', title: '等级',edit:'grade',width:'6%',align:"center"}, {field: 'grade', title: '等级',edit:'grade',width:'6%',align:"center"},
{field: 'discount', title: '享受折扣',edit:'discount',width:'6%',align:"center"}, {field: 'discount', title: '享受折扣',edit:'discount',width:'8%',align:"center"},
{field: 'valid_date', title: '有效时间',width:'12%',align:"center"}, {field: 'valid_date', title: '有效时间',width:'12%',align:"center"},
{field: 'is_forever', title: '是否永久',templet:'#is_forever',width:'6%',align:"center"}, {field: 'is_forever', title: '是否永久',templet:'#is_forever',width:'8%',align:"center"},
{field: 'is_pay', title: '是否付费',templet:'#is_pay',width:'8%',align:"center"}, {field: 'is_show', title: '是否使用',templet:'#is_show',width:'8%',align:"center"},
{field: 'is_show', title: '是否显示',templet:'#is_show',width:'6%',align:"center"},
{field: 'explain', title: '等级说明',align:"center"}, {field: 'explain', title: '等级说明',align:"center"},
{field: 'right', title: '操作',align:'center',toolbar:'#act',width:'8%'}, {field: 'right', title: '操作',align:'center',toolbar:'#act',width:'8%'},
]; ];

View File

@ -53,7 +53,7 @@
<img style="cursor: pointer" lay-event='open_image' src="{{d.image}}"> <img style="cursor: pointer" lay-event='open_image' src="{{d.image}}">
</script> </script>
<script type="text/html" id="is_show"> <script type="text/html" id="is_show">
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='显示|隐藏' {{ d.is_show == 1 ? 'checked' : '' }}> <input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_show' lay-text='开启|关闭' {{ d.is_show == 1 ? 'checked' : '' }}>
</script> </script>
<script type="text/html" id="is_must"> <script type="text/html" id="is_must">
<input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_must' lay-text='全部完成|达成其一' {{ d.is_must == 1 ? 'checked' : '' }}> <input type='checkbox' name='id' lay-skin='switch' value="{{d.id}}" lay-filter='is_must' lay-text='全部完成|达成其一' {{ d.is_must == 1 ? 'checked' : '' }}>
@ -84,7 +84,7 @@
{field: 'level_name', title: '等级名称',}, {field: 'level_name', title: '等级名称',},
{field: 'name', title: '任务名称',}, {field: 'name', title: '任务名称',},
{field: 'sort', title: '排序',sort: true,event:'sort',edit:'sort',width:'7%'}, {field: 'sort', title: '排序',sort: true,event:'sort',edit:'sort',width:'7%'},
{field: 'is_show', title: '是否显示',templet:'#is_show',width:'10%'}, {field: 'is_show', title: '是否使用',templet:'#is_show',width:'10%'},
{field: 'is_must', title: '务必达成',templet:'#is_must',width:'15%'}, {field: 'is_must', title: '务必达成',templet:'#is_must',width:'15%'},
{field: 'illustrate', title: '任务说明'}, {field: 'illustrate', title: '任务说明'},
{field: 'right', title: '操作',align:'center',toolbar:'#act',width:'13%'}, {field: 'right', title: '操作',align:'center',toolbar:'#act',width:'13%'},

View File

@ -65,9 +65,9 @@
<div class="operation-item"> <div class="operation-item">
<!-- <span class="glyphicon glyphicon-chevron-up" aria-hidden="true" @click="itemUp(index)"></span>--> <!-- <span class="glyphicon glyphicon-chevron-up" aria-hidden="true" @click="itemUp(index)"></span>-->
<!-- <span class="glyphicon glyphicon-chevron-down" aria-hidden="true" @click="itemDown(index)"></span>--> <!-- <span class="glyphicon glyphicon-chevron-down" aria-hidden="true" @click="itemDown(index)"></span>-->
<span class="glyphicon glyphicon-trash" aria-hidden="true" @click="itemDel(index)"></span> <span class="glyphicon glyphicon-trash" aria-hidden="true" v-if="index" @click="itemDel(index)"></span>
</div> </div>
<div v-if="index==0"> <div v-if="index == 0">
<div class="news-item transition news-image" :class="action==index ? 'active' :''" style="margin-bottom: 20px" @click="isShow(index)"> <div class="news-item transition news-image" :class="action==index ? 'active' :''" style="margin-bottom: 20px" @click="isShow(index)">
<img :src="item.image_input" style="width: 100%;height: 100%;"/> <img :src="item.image_input" style="width: 100%;height: 100%;"/>
</div> </div>
@ -191,8 +191,10 @@
if(that.newList.length == 1) return $eb.message('error','不能再删除了'); if(that.newList.length == 1) return $eb.message('error','不能再删除了');
that.newList.splice(indexItem,1); that.newList.splice(indexItem,1);
if(indexItem == that.indexItem){ if(indexItem == that.indexItem){
if(that.newList.length == 1) that.setNewListIndex(0); if(that.newList.length == 1)
else that.setNewListIndex(parseInt(indexItem) + parseInt(1)); that.setNewListIndex(0);
else
that.setNewListIndex(parseInt(indexItem) + parseInt(1));
}else{ }else{
if(indexItem < that.indexItem){ if(indexItem < that.indexItem){
that.indexItem = parseInt(that.indexItem) + parseInt(1); that.indexItem = parseInt(that.indexItem) + parseInt(1);
@ -259,7 +261,7 @@
'title':'', 'title':'',
'author':$author, 'author':$author,
'content':'', 'content':'',
'image_input':'/public/system/module/wechat/news/images/image.png', 'image_input':'{__MODULE_PATH}/wechat/news/images/image.png',
'synopsis':'' 'synopsis':''
} }
this.newList.push(arr); this.newList.push(arr);

View File

@ -36,18 +36,18 @@ class PublicController
$menus = GroupDataService::getData('routine_home_menus') ?: [];//TODO 首页按钮 $menus = GroupDataService::getData('routine_home_menus') ?: [];//TODO 首页按钮
$roll = GroupDataService::getData('routine_home_roll_news') ?: [];//TODO 首页滚动新闻 $roll = GroupDataService::getData('routine_home_roll_news') ?: [];//TODO 首页滚动新闻
$activity = GroupDataService::getData('routine_home_activity', 3) ?: [];//TODO 首页活动区域图片 $activity = GroupDataService::getData('routine_home_activity', 3) ?: [];//TODO 首页活动区域图片
$site_name = SystemConfigService::get('site_name'); $site_name = sysConfig('site_name');
$routine_index_page = GroupDataService::getData('routine_index_page'); $routine_index_page = GroupDataService::getData('routine_index_page');
$info['fastInfo'] = $routine_index_page[0]['fast_info'] ?? '';//SystemConfigService::get('fast_info');//TODO 快速选择简介 $info['fastInfo'] = $routine_index_page[0]['fast_info'] ?? '';//sysConfig('fast_info');//TODO 快速选择简介
$info['bastInfo'] = $routine_index_page[0]['bast_info'] ?? '';//SystemConfigService::get('bast_info');//TODO 精品推荐简介 $info['bastInfo'] = $routine_index_page[0]['bast_info'] ?? '';//sysConfig('bast_info');//TODO 精品推荐简介
$info['firstInfo'] = $routine_index_page[0]['first_info'] ?? '';//SystemConfigService::get('first_info');//TODO 首发新品简介 $info['firstInfo'] = $routine_index_page[0]['first_info'] ?? '';//sysConfig('first_info');//TODO 首发新品简介
$info['salesInfo'] = $routine_index_page[0]['sales_info'] ?? '';//SystemConfigService::get('sales_info');//TODO 促销单品简介 $info['salesInfo'] = $routine_index_page[0]['sales_info'] ?? '';//sysConfig('sales_info');//TODO 促销单品简介
$logoUrl = SystemConfigService::get('routine_index_logo');//TODO 促销单品简介 $logoUrl = sysConfig('routine_index_logo');//TODO 促销单品简介
if (strstr($logoUrl, 'http') === false) $logoUrl = SystemConfigService::get('site_url') . $logoUrl; if (strstr($logoUrl, 'http') === false) $logoUrl = sysConfig('site_url') . $logoUrl;
$logoUrl = str_replace('\\', '/', $logoUrl); $logoUrl = str_replace('\\', '/', $logoUrl);
$fastNumber = $routine_index_page[0]['fast_number'] ?? 6;//SystemConfigService::get('fast_number');//TODO 快速选择分类个数 $fastNumber = $routine_index_page[0]['fast_number'] ?? 6;//sysConfig('fast_number');//TODO 快速选择分类个数
$bastNumber = $routine_index_page[0]['bast_number'] ?? 6;//SystemConfigService::get('bast_number');//TODO 精品推荐个数 $bastNumber = $routine_index_page[0]['bast_number'] ?? 6;//sysConfig('bast_number');//TODO 精品推荐个数
$firstNumber = $routine_index_page[0]['first_number'] ?? 6;//SystemConfigService::get('first_number');//TODO 首发新品个数 $firstNumber = $routine_index_page[0]['first_number'] ?? 6;//sysConfig('first_number');//TODO 首发新品个数
$info['fastList'] = StoreCategory::byIndexList((int)$fastNumber);//TODO 快速选择分类个数 $info['fastList'] = StoreCategory::byIndexList((int)$fastNumber);//TODO 快速选择分类个数
$info['bastList'] = StoreProduct::getBestProduct('id,image,store_name,cate_id,price,ot_price,IFNULL(sales,0) + IFNULL(ficti,0) as sales,unit_name', (int)$bastNumber, $request->uid());//TODO 精品推荐个数 $info['bastList'] = StoreProduct::getBestProduct('id,image,store_name,cate_id,price,ot_price,IFNULL(sales,0) + IFNULL(ficti,0) as sales,unit_name', (int)$bastNumber, $request->uid());//TODO 精品推荐个数
$info['firstList'] = StoreProduct::getNewProduct('id,image,store_name,cate_id,price,unit_name,IFNULL(sales,0) + IFNULL(ficti,0) as sales', (int)$firstNumber,$request->uid());//TODO 首发新品个数 $info['firstList'] = StoreProduct::getNewProduct('id,image,store_name,cate_id,price,unit_name,IFNULL(sales,0) + IFNULL(ficti,0) as sales', (int)$firstNumber,$request->uid());//TODO 首发新品个数
@ -65,11 +65,11 @@ class PublicController
*/ */
public function share() public function share()
{ {
$data['img'] = SystemConfigService::get('wechat_share_img'); $data['img'] = sysConfig('wechat_share_img');
if (strstr($data['img'], 'http') === false) $data['img'] = SystemConfigService::get('site_url') . $data['img']; if (strstr($data['img'], 'http') === false) $data['img'] = sysConfig('site_url') . $data['img'];
$data['img'] = str_replace('\\', '/', $data['img']); $data['img'] = str_replace('\\', '/', $data['img']);
$data['title'] = SystemConfigService::get('wechat_share_title'); $data['title'] = sysConfig('wechat_share_title');
$data['synopsis'] = SystemConfigService::get('wechat_share_synopsis'); $data['synopsis'] = sysConfig('wechat_share_synopsis');
return app('json')->successful(compact('data')); return app('json')->successful(compact('data'));
} }
@ -86,15 +86,20 @@ class PublicController
{ {
$menusInfo = GroupDataService::getData('routine_my_menus') ?? []; $menusInfo = GroupDataService::getData('routine_my_menus') ?? [];
$user = $request->user(); $user = $request->user();
$vipOpen = sysConfig('vip_open');
$vipOpen = is_string($vipOpen) ? (int)$vipOpen : $vipOpen;
foreach ($menusInfo as $key=>&$value){ foreach ($menusInfo as $key=>&$value){
$value['pic'] = UtilService::setSiteUrl($value['pic']); $value['pic'] = UtilService::setSiteUrl($value['pic']);
if($value['id'] == 137 && !(intval(SystemConfigService::get('store_brokerage_statu')) == 2 || $user->is_promoter == 1)) if($value['id'] == 137 && !(intval(sysConfig('store_brokerage_statu')) == 2 || $user->is_promoter == 1))
unset($menusInfo[$key]); unset($menusInfo[$key]);
if($value['id'] == 174 && !StoreService::orderServiceStatus($user->uid)) if($value['id'] == 174 && !StoreService::orderServiceStatus($user->uid))
unset($menusInfo[$key]); unset($menusInfo[$key]);
if(!StoreService::orderServiceStatus($user->uid) && $value['wap_url'] === '/order/order_cancellation'){ if(!StoreService::orderServiceStatus($user->uid) && $value['wap_url'] === '/order/order_cancellation')
unset($menusInfo[$key]);
if($value['wap_url'] == '/user/vip' && !$vipOpen)
unset($menusInfo[$key]);
if($value['wap_url'] == '/customer/index' && !StoreService::orderServiceStatus($user->uid))
unset($menusInfo[$key]); unset($menusInfo[$key]);
}
} }
return app('json')->successful(['routine_my_menus'=>$menusInfo]); return app('json')->successful(['routine_my_menus'=>$menusInfo]);
} }

View File

@ -299,7 +299,7 @@ class StoreBargainController
$price = StoreBargainUserHelp::getSurplusPrice($bargainId, $user['uid']);//TODO 获取砍价剩余金额 $price = StoreBargainUserHelp::getSurplusPrice($bargainId, $user['uid']);//TODO 获取砍价剩余金额
$alreadyPrice = StoreBargainUser::getBargainUserPrice(StoreBargainUser::getBargainUserTableId($bargainId, $user['uid'])); $alreadyPrice = StoreBargainUser::getBargainUserPrice(StoreBargainUser::getBargainUserTableId($bargainId, $user['uid']));
try{ try{
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
$data['title'] = $storeBargainInfo['title']; $data['title'] = $storeBargainInfo['title'];
$data['image'] = $storeBargainInfo['image']; $data['image'] = $storeBargainInfo['image'];
$data['price'] = bcsub($storeBargainInfo['price'],$alreadyPrice,2); $data['price'] = bcsub($storeBargainInfo['price'],$alreadyPrice,2);
@ -311,7 +311,7 @@ class StoreBargainController
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
if(!$imageInfo){ if(!$imageInfo){
$valueData = 'id='.$bargainId.'&bargain='.$user['uid']; $valueData = 'id='.$bargainId.'&bargain='.$user['uid'];
if($user['is_promoter'] || SystemConfigService::get('store_brokerage_statu') == 2) $valueData.='&pid='.$user['uid']; if($user['is_promoter'] || sysConfig('store_brokerage_statu') == 2) $valueData.='&pid='.$user['uid'];
$res = RoutineCode::getPageCode('pages/activity/goods_bargain_details/index',$valueData,280); $res = RoutineCode::getPageCode('pages/activity/goods_bargain_details/index',$valueData,280);
if(!$res) return app('json')->fail('二维码生成失败'); if(!$res) return app('json')->fail('二维码生成失败');
$imageInfo = UploadService::getInstance()->setUploadPath('routine/activity/bargain/code')->imageStream($name,$res); $imageInfo = UploadService::getInstance()->setUploadPath('routine/activity/bargain/code')->imageStream($name,$res);

View File

@ -31,7 +31,7 @@ class StoreCombinationController
['limit',10], ['limit',10],
],$request, true); ],$request, true);
$combinationList = StoreCombination::getAll($page, $limit); $combinationList = StoreCombination::getAll($page, $limit);
if(!count($combinationList)) return app('json')->fail('暂无拼团'); if(!count($combinationList)) return app('json')->successful([]);
return app('json')->successful($combinationList->hidden(['info','product_id','images','mer_id','attr','sort','stock','sales','add_time','is_del','is_show','browse','cost','is_show','start_time','stop_time','description','postage','is_postage','is_host','mer_use','combination'])->toArray()); return app('json')->successful($combinationList->hidden(['info','product_id','images','mer_id','attr','sort','stock','sales','add_time','is_del','is_show','browse','cost','is_show','start_time','stop_time','description','postage','is_postage','is_host','mer_use','combination'])->toArray());
} }
@ -51,15 +51,17 @@ class StoreCombinationController
//公众号 //公众号
$name = $id.'_combination_detail_wap.jpg'; $name = $id.'_combination_detail_wap.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if(!$imageInfo){ if(!$imageInfo){
$codeUrl = UtilService::setHttpType($siteUrl.'/activity/group_detail/'.$id, 1);//二维码链接 $codeUrl = UtilService::setHttpType($siteUrl.'/activity/group_detail/'.$id, 1);//二维码链接
$imageInfo = UtilService::getQRCodePath($codeUrl, $name); $imageInfo = UtilService::getQRCodePath($codeUrl, $name);
if(is_array($imageInfo)){ if(is_array($imageInfo)){
SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2); SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2);
$url = $imageInfo['dir']; $url = $imageInfo['dir'];
}else }else {
$url = ''; $url = '';
$imageInfo = ['image_type'=>0];
}
}else $url = $imageInfo['att_dir']; }else $url = $imageInfo['att_dir'];
if($imageInfo['image_type'] == 1) if($imageInfo['image_type'] == 1)
$url = $siteUrl.$url; $url = $siteUrl.$url;
@ -192,14 +194,14 @@ class StoreCombinationController
$count = count($pinkAll)+1; $count = count($pinkAll)+1;
$data['msg'] = '原价¥'.$storeCombinationInfo['product_price'].' 还差'.(int)bcsub((int)$pinkInfo['people'],$count,0).'人拼团成功'; $data['msg'] = '原价¥'.$storeCombinationInfo['product_price'].' 还差'.(int)bcsub((int)$pinkInfo['people'],$count,0).'人拼团成功';
try{ try{
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if($from == 'routine'){ if($from == 'routine'){
//小程序 //小程序
$name = $pinkId.'_'.$user['uid'].'_'.$user['is_promoter'].'_pink_share_routine.jpg'; $name = $pinkId.'_'.$user['uid'].'_'.$user['is_promoter'].'_pink_share_routine.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
if(!$imageInfo){ if(!$imageInfo){
$valueData = 'id='.$pinkId; $valueData = 'id='.$pinkId;
if($user['is_promoter'] || SystemConfigService::get('store_brokerage_statu')==2) $valueData.='&pid='.$user['uid']; if($user['is_promoter'] || sysConfig('store_brokerage_statu')==2) $valueData.='&pid='.$user['uid'];
$res = RoutineCode::getPageCode('pages/activity/goods_combination_status/index',$valueData,280); $res = RoutineCode::getPageCode('pages/activity/goods_combination_status/index',$valueData,280);
if(!$res) return app('json')->fail('二维码生成失败'); if(!$res) return app('json')->fail('二维码生成失败');
$imageInfo = UploadService::getInstance()->setUploadPath('routine/activity/pink/code')->imageStream($name,$res); $imageInfo = UploadService::getInstance()->setUploadPath('routine/activity/pink/code')->imageStream($name,$res);

View File

@ -59,8 +59,8 @@ class StoreSeckillController
} }
} }
} }
$data['lovely'] = SystemConfigService::get('seckill_header_banner'); $data['lovely'] = sysConfig('seckill_header_banner');
if(strstr($data['lovely'],'http') === false && strlen(trim($data['lovely']))) $data['lovely'] = SystemConfigService::get('site_url').$data['lovely']; if(strstr($data['lovely'],'http') === false && strlen(trim($data['lovely']))) $data['lovely'] = sysConfig('site_url').$data['lovely'];
$data['lovely'] = str_replace('\\','/',$data['lovely']); $data['lovely'] = str_replace('\\','/',$data['lovely']);
$data['seckillTime'] = $seckillTime; $data['seckillTime'] = $seckillTime;
$data['seckillTimeIndex'] = $seckillTimeIndex; $data['seckillTimeIndex'] = $seckillTimeIndex;
@ -83,7 +83,7 @@ class StoreSeckillController
['limit',0], ['limit',0],
],$request, true); ],$request, true);
if(!$time) return app('json')->fail('参数错误'); if(!$time) return app('json')->fail('参数错误');
$timeInfo = GroupDataService::getDataNumber($time); $timeInfo = GroupDataService::getDataNumber((int)$time);
$activityEndHour = bcadd((int)$timeInfo['time'],(int)$timeInfo['continued'],0); $activityEndHour = bcadd((int)$timeInfo['time'],(int)$timeInfo['continued'],0);
$startTime = bcadd(strtotime(date('Y-m-d')),bcmul($timeInfo['time'],3600,0)); $startTime = bcadd(strtotime(date('Y-m-d')),bcmul($timeInfo['time'],3600,0));
$stopTime = bcadd(strtotime(date('Y-m-d')),bcmul($activityEndHour,3600,0)); $stopTime = bcadd(strtotime(date('Y-m-d')),bcmul($activityEndHour,3600,0));
@ -110,15 +110,17 @@ class StoreSeckillController
//公众号 //公众号
$name = $id.'_seckill_detail_wap.jpg'; $name = $id.'_seckill_detail_wap.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if(!$imageInfo){ if(!$imageInfo){
$codeUrl = UtilService::setHttpType($siteUrl.'/activity/seckill_detail/'.$id.'/'.$time, 1);//二维码链接 $codeUrl = UtilService::setHttpType($siteUrl.'/activity/seckill_detail/'.$id.'/'.$time, 1);//二维码链接
$imageInfo = UtilService::getQRCodePath($codeUrl, $name); $imageInfo = UtilService::getQRCodePath($codeUrl, $name);
if(is_array($imageInfo)){ if(is_array($imageInfo)){
SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2); SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2);
$url = $imageInfo['dir']; $url = $imageInfo['dir'];
}else }else {
$url = ''; $url = '';
$imageInfo = ['image_type'=>0];
}
}else $url = $imageInfo['att_dir']; }else $url = $imageInfo['att_dir'];
if($imageInfo['image_type'] == 1) $url = $siteUrl.$url; if($imageInfo['image_type'] == 1) $url = $siteUrl.$url;
$storeInfo['image'] = UtilService::setSiteUrl($storeInfo['image'], $siteUrl); $storeInfo['image'] = UtilService::setSiteUrl($storeInfo['image'], $siteUrl);

View File

@ -352,7 +352,7 @@ class StoreOrderController
$refundData['pay_price'] = $orderInfo['pay_price']; $refundData['pay_price'] = $orderInfo['pay_price'];
$refundData['refund_price'] = $price; $refundData['refund_price'] = $price;
if($orderInfo['pay_type'] == 'weixin'){ if($orderInfo['pay_type'] == 'weixin'){
if($orderInfo['is_channel']){// 小程序 if($orderInfo['is_channel'] == 1){// 小程序
try{ try{
MiniProgramService::payOrderRefund($orderInfo['order_id'], $refundData); MiniProgramService::payOrderRefund($orderInfo['order_id'], $refundData);
}catch(\Exception $e){ }catch(\Exception $e){

View File

@ -3,15 +3,15 @@ namespace app\api\controller\order;
use app\admin\model\system\SystemAttachment; use app\admin\model\system\SystemAttachment;
use app\models\routine\RoutineFormId; use app\models\routine\RoutineFormId;
use app\models\store\{ use crmeb\repositories\OrderRepository;
StoreBargainUser, use app\models\store\{StoreBargainUser,
StoreCart, StoreCart,
StoreCouponUser, StoreCouponUser,
StoreOrder, StoreOrder,
StoreOrderCartInfo, StoreOrderCartInfo,
StoreOrderStatus,
StorePink, StorePink,
StoreProductReply StoreProductReply};
};
use app\models\system\SystemStore; use app\models\system\SystemStore;
use app\models\user\UserAddress; use app\models\user\UserAddress;
use app\models\user\UserLevel; use app\models\user\UserLevel;
@ -46,8 +46,8 @@ class StoreOrderController
$cartInfo = $cartGroup['valid']; $cartInfo = $cartGroup['valid'];
$priceGroup = StoreOrder::getOrderPriceGroup($cartInfo); $priceGroup = StoreOrder::getOrderPriceGroup($cartInfo);
$other = [ $other = [
'offlinePostage' => SystemConfigService::get('offline_postage'), 'offlinePostage' => sysConfig('offline_postage'),
'integralRatio' => SystemConfigService::get('integral_ratio') 'integralRatio' => sysConfig('integral_ratio')
]; ];
$usableCoupon = StoreCouponUser::beUsableCoupon($uid, $priceGroup['totalPrice']); $usableCoupon = StoreCouponUser::beUsableCoupon($uid, $priceGroup['totalPrice']);
$cartIdA = explode(',', $cartId); $cartIdA = explode(',', $cartId);
@ -79,8 +79,8 @@ class StoreOrderController
} }
$data['userInfo'] = $user; $data['userInfo'] = $user;
$data['integralRatio'] = $other['integralRatio']; $data['integralRatio'] = $other['integralRatio'];
$data['offline_pay_status'] = (int)SystemConfigService::get('offline_pay_status') ?? (int)2; $data['offline_pay_status'] = (int)sysConfig('offline_pay_status') ?? (int)2;
$data['store_self_mention']= (int)SystemConfigService::get('store_self_mention') ?? 0;//门店自提是否开启 $data['store_self_mention']= (int)sysConfig('store_self_mention') ?? 0;//门店自提是否开启
$data['system_store'] = ($res = SystemStore::getStoreDispose()) ? $res : [];//门店信息 $data['system_store'] = ($res = SystemStore::getStoreDispose()) ? $res : [];//门店信息
return app('json')->successful($data); return app('json')->successful($data);
} }
@ -167,7 +167,10 @@ class StoreOrderController
return app('json')->status('ORDER_EXIST', '订单生成失败,你已经参加该团了,请先支付订单', ['orderId' => StoreOrder::getStoreIdPink($pinkId, $request->uid())]); return app('json')->status('ORDER_EXIST', '订单生成失败,你已经参加该团了,请先支付订单', ['orderId' => StoreOrder::getStoreIdPink($pinkId, $request->uid())]);
} }
$isChannel = 1; $isChannel = 1;
if($from == 'weixin') $isChannel = 0; if($from == 'weixin')
$isChannel = 0;
elseif ($from == 'weixinh5')
$isChannel = 2;
$order = StoreOrder::cacheKeyCreateOrder($request->uid(), $key, $addressId, $payType, (int)$useIntegral, $couponId, $mark, $combinationId, $pinkId, $seckill_id, $bargainId, false, $isChannel,$shipping_type,$real_name,$phone); $order = StoreOrder::cacheKeyCreateOrder($request->uid(), $key, $addressId, $payType, (int)$useIntegral, $couponId, $mark, $combinationId, $pinkId, $seckill_id, $bargainId, false, $isChannel,$shipping_type,$real_name,$phone);
if($order === false) return app('json')->fail(StoreOrder::getErrorInfo('订单生成失败')); if($order === false) return app('json')->fail(StoreOrder::getErrorInfo('订单生成失败'));
$orderId = $order['order_id']; $orderId = $order['order_id'];
@ -280,9 +283,26 @@ class StoreOrderController
],$request,true); ],$request,true);
if (!$uni) return app('json')->fail('参数错误!'); if (!$uni) return app('json')->fail('参数错误!');
$order = StoreOrder::getUserOrderDetail($request->uid(), $uni); $order = StoreOrder::getUserOrderDetail($request->uid(), $uni);
if (!$order) return app('json')->fail('订单不存在!'); if (!$order)
if ($order['paid']) return app('json')->fail('该订单已支付!'); return app('json')->fail('订单不存在!');
if ($order['pink_id']) if (StorePink::isPinkStatus($order['pink_id'])) return app('json')->fail('该订单已失效!'); if ($order['paid'])
return app('json')->fail('该订单已支付!');
if ($order['pink_id']) if (StorePink::isPinkStatus($order['pink_id']))
return app('json')->fail('该订单已失效!');
if($from == 'weixin') {//0
if(in_array($order->is_channel,[1,2]))
$order['order_id'] = mt_rand(100,999).'_'.$order['order_id'];
}
if($from == 'weixinh5'){//2
if(in_array($order->is_channel,[0,1]))
$order['order_id'] = mt_rand(100,999).'_'.$order['order_id'];
}
if($from == 'routine'){//1
if(in_array($order->is_channel,[0,2]))
$order['order_id'] = mt_rand(100,999).'_'.$order['order_id'];
}
$order['pay_type'] = $paytype; //重新支付选择支付方式 $order['pay_type'] = $paytype; //重新支付选择支付方式
switch ($order['pay_type']) { switch ($order['pay_type']) {
case 'weixin': case 'weixin':
@ -369,7 +389,7 @@ class StoreOrderController
if($order['shipping_type'] === 2 && $order['verify_code']){ if($order['shipping_type'] === 2 && $order['verify_code']){
$name = $order['verify_code'].'.jpg'; $name = $order['verify_code'].'.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if(!$imageInfo){ if(!$imageInfo){
$imageInfo = UtilService::getQRCodePath($order['verify_code'], $name); $imageInfo = UtilService::getQRCodePath($order['verify_code'], $name);
if(is_array($imageInfo)){ if(is_array($imageInfo)){
@ -381,7 +401,7 @@ class StoreOrderController
if(isset($imageInfo['image_type']) && $imageInfo['image_type'] == 1) $url = $siteUrl.$url; if(isset($imageInfo['image_type']) && $imageInfo['image_type'] == 1) $url = $siteUrl.$url;
$order['code'] = $url; $order['code'] = $url;
} }
$order['mapKey'] = SystemConfigService::get('tengxun_map_key'); $order['mapKey'] = sysConfig('tengxun_map_key');
return app('json')->successful('ok',StoreOrder::tidyOrder($order,true,true)); return app('json')->successful('ok',StoreOrder::tidyOrder($order,true,true));
} }
@ -477,7 +497,7 @@ class StoreOrderController
public function comment(Request $request) public function comment(Request $request)
{ {
$group = UtilService::postMore([ $group = UtilService::postMore([
['unique',''],['comment',''],['pics',[]],['product_score',5],['service_score',5] ['unique',''],['comment',''],['pics',''],['product_score',5],['service_score',5]
], $request); ], $request);
$unique = $group['unique']; $unique = $group['unique'];
unset($group['unique']); unset($group['unique']);
@ -496,13 +516,7 @@ class StoreOrderController
else if($cartInfo['cart_info']['seckill_id']) $productId = $cartInfo['cart_info']['product_id']; else if($cartInfo['cart_info']['seckill_id']) $productId = $cartInfo['cart_info']['product_id'];
else if($cartInfo['cart_info']['bargain_id']) $productId = $cartInfo['cart_info']['product_id']; else if($cartInfo['cart_info']['bargain_id']) $productId = $cartInfo['cart_info']['product_id'];
else $productId = $cartInfo['product_id']; else $productId = $cartInfo['product_id'];
if(count($group['pics'])){ if($group['pics']) $group['pics'] = json_encode(explode(',',$group['pics']));
$pics = [];
foreach ($group['pics'] as $key=>&$item){
if(strlen(trim($item))) $pics[] = $item;
}
$group['pics'] = $pics;
}
$group = array_merge($group,[ $group = array_merge($group,[
'uid'=>$uid, 'uid'=>$uid,
'oid'=>$cartInfo['oid'], 'oid'=>$cartInfo['oid'],
@ -525,6 +539,7 @@ class StoreOrderController
} }
StoreProductReply::commitTrans(); StoreProductReply::commitTrans();
event('UserCommented', $res); event('UserCommented', $res);
event('AdminNewPush');
return app('json')->successful(); return app('json')->successful();
} }
@ -544,7 +559,7 @@ class StoreOrderController
*/ */
public function refund_reason() public function refund_reason()
{ {
$reason = SystemConfigService::get('stor_reason')?:[];//退款理由 $reason = sysConfig('stor_reason')?:[];//退款理由
$reason = str_replace("\r\n","\n",$reason);//防止不兼容 $reason = str_replace("\r\n","\n",$reason);//防止不兼容
$reason = explode("\n",$reason); $reason = explode("\n",$reason);
return app('json')->successful($reason); return app('json')->successful($reason);
@ -650,6 +665,9 @@ class StoreOrderController
try{ try{
$orderInfo->status = 2; $orderInfo->status = 2;
if($orderInfo->save()){ if($orderInfo->save()){
OrderRepository::storeProductOrderTakeDeliveryAdmin($orderInfo);
StoreOrderStatus::status($orderInfo->id,'take_delivery','已核销');
event('ShortMssageSend',[$orderInfo['order_id'],'Receiving']);
StoreOrder::commitTrans(); StoreOrder::commitTrans();
return app('json')->success('核销成功'); return app('json')->success('核销成功');
}else{ }else{

View File

@ -60,9 +60,9 @@ class StoreProductController
switch ($userType){ switch ($userType){
case 'wechat': case 'wechat':
//公众号 //公众号
$name = $id.'_product_detail_'.$user['uid'].'_is_promoter_'.$user['is_promoter'].'.wap.jpg'; $name = $id.'_product_detail_'.$user['uid'].'_is_promoter_'.$user['is_promoter'].'_wap.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if(!$imageInfo){ if(!$imageInfo){
$codeUrl = UtilService::setHttpType($siteUrl.'/detail/'.$id.'?spread='.$user['uid'], 1);//二维码链接 $codeUrl = UtilService::setHttpType($siteUrl.'/detail/'.$id.'?spread='.$user['uid'], 1);//二维码链接
$imageInfo = UtilService::getQRCodePath($codeUrl, $name); $imageInfo = UtilService::getQRCodePath($codeUrl, $name);
@ -77,10 +77,10 @@ class StoreProductController
//小程序 //小程序
$name = $id.'_'.$user['uid'].'_'.$user['is_promoter'].'_product.jpg'; $name = $id.'_'.$user['uid'].'_'.$user['is_promoter'].'_product.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url').DS; $siteUrl = sysConfig('site_url').DS;
if(!$imageInfo){ if(!$imageInfo){
$data='id='.$id; $data='id='.$id;
if($user['is_promoter'] || SystemConfigService::get('store_brokerage_statu')==2) $data.='&pid='.$user['uid']; if($user['is_promoter'] || sysConfig('store_brokerage_statu')==2) $data.='&pid='.$user['uid'];
$res = \app\models\routine\RoutineCode::getPageCode('pages/goods_details/index',$data,280); $res = \app\models\routine\RoutineCode::getPageCode('pages/goods_details/index',$data,280);
if(!$res) return app('json')->fail('二维码生成失败'); if(!$res) return app('json')->fail('二维码生成失败');
$imageInfo = \crmeb\services\UploadService::getInstance()->setUploadPath('routine/product')->imageStream($name,$res); $imageInfo = \crmeb\services\UploadService::getInstance()->setUploadPath('routine/product')->imageStream($name,$res);
@ -110,15 +110,17 @@ class StoreProductController
//公众号 //公众号
$name = $id.'_product_detail_wap.jpg'; $name = $id.'_product_detail_wap.jpg';
$imageInfo = SystemAttachment::getInfo($name,'name'); $imageInfo = SystemAttachment::getInfo($name,'name');
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
if(!$imageInfo){ if(!$imageInfo){
$codeUrl = UtilService::setHttpType($siteUrl.'/detail/'.$id, 1);//二维码链接 $codeUrl = UtilService::setHttpType($siteUrl.'/detail/'.$id, 1);//二维码链接
$imageInfo = UtilService::getQRCodePath($codeUrl, $name); $imageInfo = UtilService::getQRCodePath($codeUrl, $name);
if(is_array($imageInfo)){ if(is_array($imageInfo)){
SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2); SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time'],2);
$url = $imageInfo['dir']; $url = $imageInfo['dir'];
}else }else {
$url = ''; $url = '';
$imageInfo = ['image_type'=>0];
}
}else $url = $imageInfo['att_dir']; }else $url = $imageInfo['att_dir'];
if($imageInfo['image_type'] == 1) $url = $siteUrl.$url; if($imageInfo['image_type'] == 1) $url = $siteUrl.$url;
$storeInfo['image'] = UtilService::setSiteUrl($storeInfo['image'], $siteUrl); $storeInfo['image'] = UtilService::setSiteUrl($storeInfo['image'], $siteUrl);
@ -140,7 +142,7 @@ class StoreProductController
$data['productValue'] = $productValue; $data['productValue'] = $productValue;
$data['priceName'] = 0; $data['priceName'] = 0;
if($uid){ if($uid){
$storeBrokerageStatus = SystemConfigService::get('store_brokerage_statu') ?? 1; $storeBrokerageStatus = sysConfig('store_brokerage_statu') ?? 1;
if($storeBrokerageStatus == 2) if($storeBrokerageStatus == 2)
$data['priceName'] = StoreProduct::getPacketPrice($storeInfo, $productValue); $data['priceName'] = StoreProduct::getPacketPrice($storeInfo, $productValue);
else{ else{
@ -163,8 +165,8 @@ class StoreProductController
} else $data['replyChance'] = 0; } else $data['replyChance'] = 0;
$data['mer_id'] = $storeInfo['mer_id']; $data['mer_id'] = $storeInfo['mer_id'];
$data['system_store'] = ($res = SystemStore::getStoreDispose()) ? $res : []; $data['system_store'] = ($res = SystemStore::getStoreDispose()) ? $res : [];
$data['good_list'] = StoreProduct::getGoodList(18,'image,store_name,price,id'); $data['good_list'] = StoreProduct::getGoodList(18,'image,store_name,price,id,ot_price');
$data['mapKey'] = SystemConfigService::get('tengxun_map_key'); $data['mapKey'] = sysConfig('tengxun_map_key');
return app('json')->successful($data); return app('json')->successful($data);
} }
@ -184,7 +186,7 @@ class StoreProductController
['limit',0] ['limit',0]
], $request, true); ], $request, true);
if(!$limit) return app('json')->successful([]); if(!$limit) return app('json')->successful([]);
$productHot = StoreProduct::getHotProductLoading('id,image,store_name,cate_id,price,unit_name',(int)$page,(int)$limit); $productHot = StoreProduct::getHotProductLoading('id,image,store_name,cate_id,price,unit_name,ot_price',(int)$page,(int)$limit);
return app('json')->successful($productHot); return app('json')->successful($productHot);
} }

View File

@ -151,7 +151,7 @@ class UserBillController
try{ try{
$resRoutine = true;//小程序 $resRoutine = true;//小程序
$resWap = true;//公众号 $resWap = true;//公众号
$siteUrl = SystemConfigService::get('site_url'); $siteUrl = sysConfig('site_url');
$routineSpreadBanner = GroupDataService::getData('routine_spread_banner'); $routineSpreadBanner = GroupDataService::getData('routine_spread_banner');
if(!count($routineSpreadBanner)) return app('json')->fail('暂无海报'); if(!count($routineSpreadBanner)) return app('json')->fail('暂无海报');
if($type == 1){ if($type == 1){
@ -207,7 +207,7 @@ class UserBillController
'angle'=>0, 'angle'=>0,
), ),
array( array(
'text'=>'邀请您加入'.SystemConfigService::get('site_name'), 'text'=>'邀请您加入'.sysConfig('site_name'),
'left'=>250, 'left'=>250,
'top'=>880, 'top'=>880,
'fontPath'=>$rootPath.'public'. DS .$filelink['Normal'], //字体文件 'fontPath'=>$rootPath.'public'. DS .$filelink['Normal'], //字体文件
@ -280,7 +280,7 @@ class UserBillController
'angle'=>0, 'angle'=>0,
), ),
array( array(
'text'=>'邀请您加入'.SystemConfigService::get('site_name'), 'text'=>'邀请您加入'.sysConfig('site_name'),
'left'=>250, 'left'=>250,
'top'=>880, 'top'=>880,
'fontPath'=>$rootPath.'public'. DS .$filelink['Normal'], //字体文件 'fontPath'=>$rootPath.'public'. DS .$filelink['Normal'], //字体文件

View File

@ -86,8 +86,8 @@ class UserController
$user['orderStatusSum'] = StoreOrder::getOrderStatusSum($user['uid']);//累计消费 $user['orderStatusSum'] = StoreOrder::getOrderStatusSum($user['uid']);//累计消费
$user['extractTotalPrice'] = UserExtract::userExtractTotalPrice($user['uid']);//累计提现 $user['extractTotalPrice'] = UserExtract::userExtractTotalPrice($user['uid']);//累计提现
$user['extractPrice'] = $user['brokerage_price'];//可提现 $user['extractPrice'] = $user['brokerage_price'];//可提现
$user['statu'] = (int)SystemConfigService::get('store_brokerage_statu'); $user['statu'] = (int)sysConfig('store_brokerage_statu');
if(!SystemConfigService::get('vip_open')) if(!sysConfig('vip_open'))
$user['vip']=false; $user['vip']=false;
else{ else{
$vipId=UserLevel::getUserLevel($user['uid']); $vipId=UserLevel::getUserLevel($user['uid']);
@ -99,7 +99,7 @@ class UserController
} }
} }
$user['yesterDay'] = UserBill::yesterdayCommissionSum($user['uid']); $user['yesterDay'] = UserBill::yesterdayCommissionSum($user['uid']);
$user['recharge_switch'] = (int)SystemConfigService::get('recharge_switch');//充值开关 $user['recharge_switch'] = (int)sysConfig('recharge_switch');//充值开关
$user['adminid'] = (boolean)\app\models\store\StoreService::orderServiceStatus($user['uid']); $user['adminid'] = (boolean)\app\models\store\StoreService::orderServiceStatus($user['uid']);
if($user['phone'] && $user['user_type'] != 'h5'){ if($user['phone'] && $user['user_type'] != 'h5'){
$user['switchUserInfo'][] = $request->user(); $user['switchUserInfo'][] = $request->user();
@ -427,7 +427,7 @@ class UserController
} }
unset($user['pwd']); unset($user['pwd']);
if(!$user['is_promoter']){ if(!$user['is_promoter']){
$user['is_promoter']=(int)SystemConfigService::get('store_brokerage_statu') == 2 ? true : false; $user['is_promoter']=(int)sysConfig('store_brokerage_statu') == 2 ? true : false;
} }
return app('json')->successful($user->hidden(['account','real_name','birthday','card_id','mark','partner_id','group_id','add_time','add_ip','phone','last_time','last_ip','spread_uid','spread_time','user_type','status','level','clean_time','addres'])->toArray()); return app('json')->successful($user->hidden(['account','real_name','birthday','card_id','mark','partner_id','group_id','add_time','add_ip','phone','last_time','last_ip','spread_uid','spread_time','user_type','status','level','clean_time','addres'])->toArray());
} }
@ -507,7 +507,7 @@ class UserController
],$request); ],$request);
return app('json')->success([ return app('json')->success([
'rank' => User::brokerageRank($data), 'rank' => User::brokerageRank($data),
'position'=> User::currentUserRank($request->user()['brokerage_price']) 'position'=> User::currentUserRank($data['type'],$request->user()['brokerage_price'])
]); ]);
} }

View File

@ -24,10 +24,10 @@ class UserExtractController
{ {
$user = $request->user(); $user = $request->user();
$data['commissionCount'] = $user['brokerage_price'];//可提现佣金 $data['commissionCount'] = $user['brokerage_price'];//可提现佣金
$extractBank = SystemConfigService::get('user_extract_bank') ?? []; //提现银行 $extractBank = sysConfig('user_extract_bank') ?? []; //提现银行
$extractBank = str_replace("\r\n","\n",$extractBank);//防止不兼容 $extractBank = str_replace("\r\n","\n",$extractBank);//防止不兼容
$data['extractBank'] = explode("\n",is_array($extractBank) ? ( isset($extractBank[0]) ? $extractBank[0]: $extractBank): $extractBank); $data['extractBank'] = explode("\n",is_array($extractBank) ? ( isset($extractBank[0]) ? $extractBank[0]: $extractBank): $extractBank);
$data['minPrice'] = SystemConfigService::get('user_extract_min_price');//提现最低金额 $data['minPrice'] = sysConfig('user_extract_min_price');//提现最低金额
return app('json')->successful($data); return app('json')->successful($data);
} }

View File

@ -24,7 +24,7 @@ class UserRechargeController
{ {
list($price,$type) = UtilService::postMore([['price',0],['type',0]], $request, true); list($price,$type) = UtilService::postMore([['price',0],['type',0]], $request, true);
if(!$price || $price <=0) return app('json')->fail('参数错误'); if(!$price || $price <=0) return app('json')->fail('参数错误');
$storeMinRecharge = SystemConfigService::get('store_user_min_recharge'); $storeMinRecharge = sysConfig('store_user_min_recharge');
if($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于'.$storeMinRecharge); if($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于'.$storeMinRecharge);
switch ((int)$type){ switch ((int)$type){
case 0: //支付充值余额 case 0: //支付充值余额
@ -58,7 +58,7 @@ class UserRechargeController
{ {
list($price, $from,$type) = UtilService::postMore([['price',0], ['from','weixin'],['type',0]], $request, true); list($price, $from,$type) = UtilService::postMore([['price',0], ['from','weixin'],['type',0]], $request, true);
if(!$price || $price <=0) return app('json')->fail('参数错误'); if(!$price || $price <=0) return app('json')->fail('参数错误');
$storeMinRecharge = SystemConfigService::get('store_user_min_recharge'); $storeMinRecharge = sysConfig('store_user_min_recharge');
if($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于'.$storeMinRecharge); if($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于'.$storeMinRecharge);
switch ((int)$type){ switch ((int)$type){
case 0: //支付充值余额 case 0: //支付充值余额

View File

@ -97,18 +97,18 @@ class AuthController
public function get_logo(Request $request) public function get_logo(Request $request)
{ {
$logoType = $request->get('type',1); $logoType = $request->get('type',1);
switch ((int)$logoType){ switch ((int)$logoType) {
case 1: case 1:
$logo=SystemConfigService::get('routine_logo'); $logo = sysConfig('routine_logo');
break; break;
case 2: case 2:
$logo=SystemConfigService::get('wechat_avatar'); $logo = sysConfig('wechat_avatar');
break; break;
default: default:
$logo = ''; $logo = '';
break; break;
} }
if(strstr($logo,'http')===false && $logo) $logo = SystemConfigService::get('site_url').$logo; if (strstr($logo,'http') === false && $logo) $logo = sysConfig('site_url').$logo;
return app('json')->successful(['logo_url'=>str_replace('\\','/',$logo)]); return app('json')->successful(['logo_url'=>str_replace('\\','/',$logo)]);
} }

View File

@ -93,9 +93,12 @@ if (!function_exists('make_path')) {
/** /**
* 上传路径转化,默认路径 * 上传路径转化,默认路径
* $type 类型 * @param $path
* @param int $type
* @param bool $force
* @return string
*/ */
function make_path($path,$type = 2) function make_path($path, int $type = 2, bool $force = false)
{ {
$path = DS.ltrim(rtrim($path)); $path = DS.ltrim(rtrim($path));
switch ($type){ switch ($type){
@ -114,8 +117,39 @@ if (!function_exists('make_path')) {
return trim(str_replace(DS, '/',$path),'.'); return trim(str_replace(DS, '/',$path),'.');
}else return ''; }else return '';
}catch (\Exception $e){ }catch (\Exception $e){
if($force)
throw new \Exception($e->getMessage());
return '无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS; return '无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS. 'attach' . DS;
} }
} }
} }
if(!function_exists('sysConfig'))
{
/**
* 获取系统单个配置
* @param string $name
* @return string | null
*/
function sysConfig(string $name)
{
if(empty($name))
return null;
return app('sysConfig')->get($name);
}
}
if(!function_exists('sysData'))
{
/**
* 获取系统单个配置
* @param string $name
* @return string
*/
function sysData($name)
{
return app('sysGroupData')->getData($name);
}
}

View File

@ -21,13 +21,13 @@ return [
'HttpEnd' => [], 'HttpEnd' => [],
'LogLevel' => [], 'LogLevel' => [],
'LogWrite' => [], 'LogWrite' => [],
'task_2'=>[],//2秒钟执行的方法 'Task_2'=>[],//2秒钟执行的方法
'task_6'=>[],//6秒钟执行的方法 'Task_6'=>[],//6秒钟执行的方法
'task_10'=>[],//10秒钟执行的方法 'Task_10'=>[],//10秒钟执行的方法
'task_30'=>[],//30秒钟执行的方法 'Task_30'=>[],//30秒钟执行的方法
'task_60'=>[],//60秒钟执行的方法 'Task_60'=>[],//60秒钟执行的方法
'task_180'=>[],//180秒钟执行的方法 'Task_180'=>[],//180秒钟执行的方法
'task_300'=>[],//300秒钟执行的方法 'Task_300'=>[],//300秒钟执行的方法
'StoreProductOrderDeliveryAfter' => [], // OrderSubscribe 送货 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器 'StoreProductOrderDeliveryAfter' => [], // OrderSubscribe 送货 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器
'StoreProductOrderDeliveryGoodsAfter' => [], // OrderSubscribe 发货 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器 'StoreProductOrderDeliveryGoodsAfter' => [], // OrderSubscribe 发货 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器
'StoreProductOrderRefundNAfter' => [], // OrderSubscribe 订单状态不退款 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器 'StoreProductOrderRefundNAfter' => [], // OrderSubscribe 订单状态不退款 发送模板消息 admin模块 order.StoreOrder控制器/order.combinationOrder控制器
@ -55,7 +55,8 @@ return [
'UserCommented' => [], //用户评价商品 'UserCommented' => [], //用户评价商品
'RechargeSuccess' => [], //用户充值成功后 'RechargeSuccess' => [], //用户充值成功后
'ImportNowMoney' => [], //用户佣金转成余额成功后 'ImportNowMoney' => [], //用户佣金转成余额成功后
'ShortMssageSend'=>[],//MessageSubscribe 下发短信 'ShortMssageSend' =>[],//MessageSubscribe 下发短信
'AdminNewPush' => [],//MessageSubscribe 下单,评论,支付成功,后台消息提醒
], ],
'subscribe' => [ 'subscribe' => [

View File

@ -6,21 +6,51 @@ namespace app\http\middleware;
use app\Request; use app\Request;
use crmeb\interfaces\MiddlewareInterface; use crmeb\interfaces\MiddlewareInterface;
use think\facade\Config;
use think\Response; use think\Response;
/**
* 跨域中间件
* Class AllowOriginMiddleware
* @package app\http\middleware
*/
class AllowOriginMiddleware implements MiddlewareInterface class AllowOriginMiddleware implements MiddlewareInterface
{ {
/**
* header头
* @var array
*/
protected $header = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Headers' => 'Authori-zation,Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With',
'Access-Control-Allow-Methods' => 'GET,POST,PATCH,PUT,DELETE,OPTIONS,DELETE',
'Access-Control-Max-Age' => '1728000'
];
/**
* 允许跨域的域名
* @var string
*/
protected $cookieDomain;
/**
* @param Request $request
* @param \Closure $next
* @return Response
*/
public function handle(Request $request, \Closure $next) public function handle(Request $request, \Closure $next)
{ {
header('Access-Control-Allow-Origin: *'); $this->cookieDomain = Config::get('cookie.domain', '');
header('Access-Control-Allow-Headers: Authori-zation,Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With'); $header = $this->header;
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE'); $origin = $request->header('origin');
header('Access-Control-Max-Age: 1728000');
if ($request->isOptions()) { if ($origin && ('' != $this->cookieDomain && strpos($origin, $this->cookieDomain)))
$response = new Response('ok'); $header['Access-Control-Allow-Origin'] = $origin;
if ($request->method(true) == 'OPTIONS') {
$response = Response::create('ok')->code(200)->header($header);
} else { } else {
$response = $next($request); $response = $next($request)->header($header);
} }
return $response; return $response;

View File

@ -14,6 +14,11 @@ use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException; use think\db\exception\ModelNotFoundException;
use think\exception\DbException; use think\exception\DbException;
/**
* token验证中间件
* Class AuthTokenMiddleware
* @package app\http\middleware
*/
class AuthTokenMiddleware implements MiddlewareInterface class AuthTokenMiddleware implements MiddlewareInterface
{ {
public function handle(Request $request, \Closure $next, bool $force = true) public function handle(Request $request, \Closure $next, bool $force = true)

View File

@ -30,7 +30,7 @@ class Article extends BaseModel
public function profile() public function profile()
{ {
return $this->hasOne(StoreProduct::class,'id','product_id')->field('store_name,image,price,id'); return $this->hasOne(StoreProduct::class,'id','product_id')->field('store_name,image,price,id,ot_price');
} }
protected function getImageInputAttr($value) protected function getImageInputAttr($value)
@ -51,7 +51,7 @@ class Article extends BaseModel
if(!$id) return []; if(!$id) return [];
$list = self::where('status',1)->where('hide',0)->where('id',$id)->order('id desc')->find(); $list = self::where('status',1)->where('hide',0)->where('id',$id)->order('id desc')->find();
if($list){ if($list){
$list->store_info = $list->profile ? StoreProduct::setLevelPrice($list->profile->toArray(),0,true) : null; $list->store_info = $list->profile ? $list->profile->toArray() : null;
$list = $list->hidden(['hide','status','admin_id','mer_id'])->toArray(); $list = $list->hidden(['hide','status','admin_id','mer_id'])->toArray();
$list["content"] = Db::name('articleContent')->where('nid',$id)->value('content'); $list["content"] = Db::name('articleContent')->where('nid',$id)->value('content');
return $list; return $list;
@ -107,7 +107,7 @@ class Article extends BaseModel
$model = $model->where('hide', 0); $model = $model->where('hide', 0);
$model = $model->where('is_banner', 1); $model = $model->where('is_banner', 1);
$model = $model->order('sort DESC,add_time DESC'); $model = $model->order('sort DESC,add_time DESC');
$model = $model->limit(SystemConfigService::get('news_slides_limit') ?? 3); $model = $model->limit(sysConfig('news_slides_limit') ?? 3);
return $model->select(); return $model->select();
} }
} }

View File

@ -1,7 +1,7 @@
<?php <?php
namespace app\models\routine; namespace app\models\routine;
use crmeb\services\Template; use crmeb\utils\Template;
use app\models\store\StoreOrder; use app\models\store\StoreOrder;
use app\models\user\WechatUser; use app\models\user\WechatUser;
@ -50,7 +50,6 @@ class RoutineTemplate
$data['keyword2'] = $order['delivery_name']; $data['keyword2'] = $order['delivery_name'];
$data['keyword3'] = $order['delivery_id']; $data['keyword3'] = $order['delivery_id'];
$data['keyword4'] = date('Y-m-d H:i:s',time()); $data['keyword4'] = date('Y-m-d H:i:s',time());
$data['keyword5'] = '您的商品已经发货请注意查收';
return self::sendOut('ORDER_DELIVER_SUCCESS',$order['uid'],$data); return self::sendOut('ORDER_DELIVER_SUCCESS',$order['uid'],$data);
} }
} }
@ -148,7 +147,8 @@ class RoutineTemplate
}else{ }else{
$form['form_id']=$formId; $form['form_id']=$formId;
} }
return Template::instance()->routine_two->sendTemplate($TempCode,$openid,$data,$form['form_id'],$link); return Template::instance()->routine()->setTemplateUrl($link)->setTemplateOpenId($openid)
->setTemplateData($data)->setTemplateFormId($form['form_id'])->setTemplateCode($TempCode)->send();
}catch (\Exception $e){ }catch (\Exception $e){
return false; return false;
} }

View File

@ -84,7 +84,7 @@ class StoreBargain extends BaseModel
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException * @throws \think\exception\DbException
*/ */
public static function getBargainTerm($bargainId = 0,$field = 'id,product_id,bargain_num,num,unit_name,image,title,price,min_price,image,description,start_time,stop_time,rule'){ public static function getBargainTerm($bargainId = 0,$field = 'id,product_id,bargain_num,num,unit_name,image,title,price,min_price,image,description,start_time,stop_time,rule,info'){
if(!$bargainId) return []; if(!$bargainId) return [];
$model = self::validWhere(); $model = self::validWhere();
$bargain = $model->field($field)->where('id',$bargainId)->find(); $bargain = $model->field($field)->where('id',$bargainId)->find();
@ -179,11 +179,11 @@ class StoreBargain extends BaseModel
*/ */
public static function IncBargainStock($num,$bargainId) public static function IncBargainStock($num,$bargainId)
{ {
$bargain=self::where('id',$bargainId)->field(['stock','sales'])->find(); $bargain = self::where('id',$bargainId)->field(['stock','sales'])->find();
if(!$bargain) return true; if(!$bargain) return true;
if($bargain->sales > 0) $bargain->sales=bcsub($bargain->sales,$num,0); if($bargain->sales > 0) $bargain->sales = bcsub($bargain->sales,$num,0);
if($bargain->sales < 0) $bargain->sales=0; if($bargain->sales < 0) $bargain->sales = 0;
$bargain->stock=bcadd($bargain->stock,$num,0); $bargain->stock = bcadd($bargain->stock,$num,0);
return $bargain->save(); return $bargain->save();
} }

View File

@ -79,9 +79,13 @@ class StoreCategory extends BaseModel
return self::where('pid', '>', 0)->where('is_show', 1)->field($field)->order('sort DESC')->limit($limit)->select(); return self::where('pid', '>', 0)->where('is_show', 1)->field($field)->order('sort DESC')->limit($limit)->select();
} }
/**
* 获取子集分类查询条件
* @return \think\model\relation\HasMany
*/
public function children() public function children()
{ {
return $this->hasMany(self::class, 'pid','id')->where('is_show',1); return $this->hasMany(self::class, 'pid','id')->where('is_show',1)->order('sort DESC,id DESC');
} }
} }

View File

@ -163,11 +163,11 @@ class StoreCombination extends BaseModel
public static function incCombinationStock($num,$CombinationId) public static function incCombinationStock($num,$CombinationId)
{ {
$combination=self::where('id',$CombinationId)->field(['stock','sales'])->find(); $combination = self::where('id',$CombinationId)->field(['stock','sales'])->find();
if(!$combination) return true; if(!$combination) return true;
if($combination->sales > 0) $combination->sales=bcsub($combination->sales,$num,0); if($combination->sales > 0) $combination->sales = bcsub($combination->sales,$num,0);
if($combination->sales < 0) $combination->sales=0; if($combination->sales < 0) $combination->sales = 0;
$combination->stock=bcadd($combination->stock,$num,0); $combination->stock = bcadd($combination->stock,$num,0);
return $combination->save(); return $combination->save();
} }

View File

@ -39,7 +39,7 @@ class StoreCouponIssue extends BaseModel
public static function getIssueCouponList($uid, $limit, $page = 0) public static function getIssueCouponList($uid, $limit, $page = 0)
{ {
$model = self::validWhere('A')->alias('A')->join('__store_coupon__ B', 'A.cid = B.id') $model = self::validWhere('A')->alias('A')->join('store_coupon B', 'A.cid = B.id')
->field('A.*,B.coupon_price,B.use_min_price')->order('B.sort DESC,A.id DESC'); ->field('A.*,B.coupon_price,B.use_min_price')->order('B.sort DESC,A.id DESC');
if ($page) $list = $model->page((int)$page, (int)$limit); if ($page) $list = $model->page((int)$page, (int)$limit);
else $list = $model->limit($limit); else $list = $model->limit($limit);
@ -49,24 +49,24 @@ class StoreCouponIssue extends BaseModel
$query->where('uid', $uid); $query->where('uid', $uid);
}]); }]);
$list = $list->select(); $list = $list->select()->hidden(['is_del', 'status', 'used']);
foreach ($list as $k=>$v) { foreach ($list as $k=>$v) {
$v['is_use'] = $uid ? isset($v->used) : false; $v['is_use'] = $uid ? isset($v->used) : false;
// if(!$v['is_use']){
// $v['is_use']=$v['remain_count'] <= 0 && !$v['is_permanent'] ? 2 : $v['is_use'];
// }
if(!$v['end_time']){ if(!$v['end_time']){
$v['add_time']= ''; $v['start_time']= '';
$v['end_time'] = '不限时'; $v['end_time'] = '不限时';
}else{ }else{
$v['add_time']=date('Y/m/d',$v['add_time']); $v['start_time']=date('Y/m/d',$v['start_time']);
$v['end_time']=$v['end_time'] ? date('Y/m/d',$v['end_time']) : date('Y/m/d',time()+86400); $v['end_time']=$v['end_time'] ? date('Y/m/d',$v['end_time']) : date('Y/m/d',time()+86400);
} }
$v['coupon_price']=(int)$v['coupon_price']; $v['coupon_price']=(int)$v['coupon_price'];
$list[$k] = $v; $list[$k] = $v;
} }
return $list->hidden(['is_del', 'status', 'used', 'add_time'])->toArray(); if($list)
return $list->toArray();
else
return [];
} }
/** /**

View File

@ -17,14 +17,13 @@ use app\models\user\UserBill;
use app\models\user\WechatUser; use app\models\user\WechatUser;
use crmeb\basic\BaseModel; use crmeb\basic\BaseModel;
use crmeb\repositories\OrderRepository; use crmeb\repositories\OrderRepository;
use crmeb\services\CustomerService; use crmeb\repositories\UserRepository;
use crmeb\services\MiniProgramService; use crmeb\services\MiniProgramService;
use crmeb\services\SystemConfigService; use crmeb\services\SystemConfigService;
use crmeb\services\WechatService; use crmeb\services\WechatService;
use crmeb\services\WechatTemplateService; use crmeb\services\WechatTemplateService;
use crmeb\services\workerman\ChannelService; use crmeb\services\workerman\ChannelService;
use think\facade\Cache; use think\facade\Cache;
use think\exception\PDOException;
use crmeb\traits\ModelTrait; use crmeb\traits\ModelTrait;
use think\facade\Log; use think\facade\Log;
use think\facade\Route; use think\facade\Route;
@ -77,8 +76,8 @@ class StoreOrder extends BaseModel
*/ */
public static function getOrderPriceGroup($cartInfo) public static function getOrderPriceGroup($cartInfo)
{ {
$storePostage = floatval(SystemConfigService::get('store_postage')) ?: 0;//邮费基础价 $storePostage = floatval(sysConfig('store_postage')) ?: 0;//邮费基础价
$storeFreePostage = floatval(SystemConfigService::get('store_free_postage')) ?: 0;//满额包邮 $storeFreePostage = floatval(sysConfig('store_free_postage')) ?: 0;//满额包邮
$totalPrice = self::getOrderSumPrice($cartInfo, 'truePrice');//获取订单总金额 $totalPrice = self::getOrderSumPrice($cartInfo, 'truePrice');//获取订单总金额
$costPrice = self::getOrderSumPrice($cartInfo, 'costPrice');//获取订单成本价 $costPrice = self::getOrderSumPrice($cartInfo, 'costPrice');//获取订单成本价
$vipPrice = self::getOrderSumPrice($cartInfo, 'vip_truePrice');//获取订单会员优惠金额 $vipPrice = self::getOrderSumPrice($cartInfo, 'vip_truePrice');//获取订单会员优惠金额
@ -119,8 +118,8 @@ class StoreOrder extends BaseModel
*/ */
public static function getCombinationOrderPriceGroup($cartInfo) public static function getCombinationOrderPriceGroup($cartInfo)
{ {
$storePostage = floatval(SystemConfigService::get('store_postage')) ?: 0; $storePostage = floatval(sysConfig('store_postage')) ?: 0;
$storeFreePostage = floatval(SystemConfigService::get('store_free_postage')) ?: 0; $storeFreePostage = floatval(sysConfig('store_free_postage')) ?: 0;
$totalPrice = self::getCombinationOrderTotalPrice($cartInfo); $totalPrice = self::getCombinationOrderTotalPrice($cartInfo);
$costPrice = self::getCombinationOrderTotalPrice($cartInfo); $costPrice = self::getCombinationOrderTotalPrice($cartInfo);
if (!$storeFreePostage) { if (!$storeFreePostage) {
@ -189,7 +188,7 @@ class StoreOrder extends BaseModel
*/ */
public static function clearCacheOrderInfo($uid, $key) public static function clearCacheOrderInfo($uid, $key)
{ {
Cache::deleteItem('user_order_' . $uid . $key); Cache::delete('user_order_' . $uid . $key);
} }
/** /**
@ -222,7 +221,7 @@ class StoreOrder extends BaseModel
self::beginTrans(); self::beginTrans();
try{ try{
$shipping_type = (int)$shipping_type; $shipping_type = (int)$shipping_type;
$offlinePayStatus = (int)SystemConfigService::get('offline_pay_status') ?? (int)2; $offlinePayStatus = (int)sysConfig('offline_pay_status') ?? (int)2;
if($offlinePayStatus == 2) unset(self::$payType['offline']); if($offlinePayStatus == 2) unset(self::$payType['offline']);
if (!array_key_exists($payType, self::$payType)) return self::setErrorInfo('选择支付方式有误!',true); if (!array_key_exists($payType, self::$payType)) return self::setErrorInfo('选择支付方式有误!',true);
if (self::be(['unique' => $key, 'uid' => $uid])) return self::setErrorInfo('请勿重复提交订单',true); if (self::be(['unique' => $key, 'uid' => $uid])) return self::setErrorInfo('请勿重复提交订单',true);
@ -287,7 +286,7 @@ class StoreOrder extends BaseModel
if (!$res1) return self::setErrorInfo('使用优惠劵失败!',true); if (!$res1) return self::setErrorInfo('使用优惠劵失败!',true);
//$shipping_type = 1 快递发货 $shipping_type = 2 门店自提 //$shipping_type = 1 快递发货 $shipping_type = 2 门店自提
$store_self_mention = SystemConfigService::get('store_self_mention') ?? 0; $store_self_mention = sysConfig('store_self_mention') ?? 0;
if(!$store_self_mention) $shipping_type = 1; if(!$store_self_mention) $shipping_type = 1;
if($shipping_type === 1) { if($shipping_type === 1) {
//是否包邮 //是否包邮
@ -301,15 +300,18 @@ class StoreOrder extends BaseModel
//积分抵扣 //积分抵扣
$res2 = true; $res2 = true;
$SurplusIntegral = 0;
if ($useIntegral && $userInfo['integral'] > 0) { if ($useIntegral && $userInfo['integral'] > 0) {
$deductionPrice = (float)bcmul($userInfo['integral'], $other['integralRatio'], 2); $deductionPrice = (float)bcmul($userInfo['integral'], $other['integralRatio'], 2);
if ($deductionPrice < $payPrice) { if ($deductionPrice < $payPrice) {
$payPrice = bcsub($payPrice, $deductionPrice, 2); $payPrice = bcsub($payPrice, $deductionPrice, 2);
$usedIntegral = $userInfo['integral']; $usedIntegral = $userInfo['integral'];
$SurplusIntegral = 0;
$res2 = false !== User::edit(['integral' => 0], $userInfo['uid'], 'uid'); $res2 = false !== User::edit(['integral' => 0], $userInfo['uid'], 'uid');
} else { } else {
$deductionPrice = $payPrice; $deductionPrice = $payPrice;
$usedIntegral = (float)bcdiv($payPrice, $other['integralRatio'], 2); $usedIntegral = (float)bcdiv($payPrice, $other['integralRatio'], 2);
$SurplusIntegral = bcsub($userInfo['integral'],$usedIntegral,2);
$res2 = false !== User::bcDec($userInfo['uid'], 'integral', $usedIntegral, 'uid'); $res2 = false !== User::bcDec($userInfo['uid'], 'integral', $usedIntegral, 'uid');
$payPrice = 0; $payPrice = 0;
} }
@ -328,6 +330,7 @@ class StoreOrder extends BaseModel
'pay_postage' => $payPostage, 'pay_postage' => $payPostage,
'coupon_price' => $couponPrice, 'coupon_price' => $couponPrice,
'deduction_price' => $deductionPrice, 'deduction_price' => $deductionPrice,
'SurplusIntegral'=> $SurplusIntegral,
]; ];
} }
$orderInfo = [ $orderInfo = [
@ -380,7 +383,8 @@ class StoreOrder extends BaseModel
//购物车状态修改 //购物车状态修改
$res6 = false !== StoreCart::where('id', 'IN', $cartIds)->update(['is_pay' => 1]); $res6 = false !== StoreCart::where('id', 'IN', $cartIds)->update(['is_pay' => 1]);
if (!$res4 || !$res5 || !$res6) return self::setErrorInfo('订单生成失败!',true); if (!$res4 || !$res5 || !$res6) return self::setErrorInfo('订单生成失败!',true);
GoodsRepository::storeProductOrderCreateEbApi($order, compact('cartInfo', 'addressId')); //自动设置默认地址
UserRepository::storeProductOrderCreateEbApi($order, compact('cartInfo', 'addressId'));
self::clearCacheOrderInfo($uid, $key); self::clearCacheOrderInfo($uid, $key);
self::commitTrans(); self::commitTrans();
StoreOrderStatus::status($order['id'], 'cache_key_create_order', '订单生成'); StoreOrderStatus::status($order['id'], 'cache_key_create_order', '订单生成');
@ -572,7 +576,7 @@ class StoreOrder extends BaseModel
if ($orderInfo['pay_price'] <= 0) exception('该支付无需支付!'); if ($orderInfo['pay_price'] <= 0) exception('该支付无需支付!');
$openid = WechatUser::getOpenId($orderInfo['uid']); $openid = WechatUser::getOpenId($orderInfo['uid']);
$bodyContent = self::getProductTitle($orderInfo['cart_id']); $bodyContent = self::getProductTitle($orderInfo['cart_id']);
$site_name = SystemConfigService::get('site_name'); $site_name = sysConfig('site_name');
if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称'); if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称');
return MiniProgramService::jsPay($openid, $orderInfo['order_id'], $orderInfo['pay_price'], 'productr',self::getSubstrUTf8($site_name.' - '.$bodyContent,30)); return MiniProgramService::jsPay($openid, $orderInfo['order_id'], $orderInfo['pay_price'], 'productr',self::getSubstrUTf8($site_name.' - '.$bodyContent,30));
} }
@ -597,7 +601,7 @@ class StoreOrder extends BaseModel
if($orderInfo['pay_price'] <= 0) exception('该支付无需支付!'); if($orderInfo['pay_price'] <= 0) exception('该支付无需支付!');
$openid = WechatUser::uidToOpenid($orderInfo['uid'],'openid'); $openid = WechatUser::uidToOpenid($orderInfo['uid'],'openid');
$bodyContent = self::getProductTitle($orderInfo['cart_id']); $bodyContent = self::getProductTitle($orderInfo['cart_id']);
$site_name = SystemConfigService::get('site_name'); $site_name = sysConfig('site_name');
if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称'); if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称');
return WechatService::jsPay($openid,$orderInfo['order_id'],$orderInfo['pay_price'],'product',self::getSubstrUTf8($site_name.' - '.$bodyContent,30)); return WechatService::jsPay($openid,$orderInfo['order_id'],$orderInfo['pay_price'],'product',self::getSubstrUTf8($site_name.' - '.$bodyContent,30));
} }
@ -621,7 +625,7 @@ class StoreOrder extends BaseModel
if($orderInfo['paid']) exception('支付已支付!'); if($orderInfo['paid']) exception('支付已支付!');
if($orderInfo['pay_price'] <= 0) exception('该支付无需支付!'); if($orderInfo['pay_price'] <= 0) exception('该支付无需支付!');
$bodyContent = self::getProductTitle($orderInfo['cart_id']); $bodyContent = self::getProductTitle($orderInfo['cart_id']);
$site_name = SystemConfigService::get('site_name'); $site_name = sysConfig('site_name');
if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称'); if(!$bodyContent && !$site_name) exception('支付参数缺少:请前往后台设置->系统设置-> 填写 网站名称');
return WechatService::paymentPrepare(null,$orderInfo['order_id'],$orderInfo['pay_price'],'product',self::getSubstrUTf8($site_name.' - '.$bodyContent,30),'','MWEB'); return WechatService::paymentPrepare(null,$orderInfo['order_id'],$orderInfo['pay_price'],'product',self::getSubstrUTf8($site_name.' - '.$bodyContent,30),'','MWEB');
} }
@ -712,7 +716,7 @@ class StoreOrder extends BaseModel
return self::setErrorInfo('申请退款失败!'); return self::setErrorInfo('申请退款失败!');
else { else {
try{ try{
$adminIds = SystemConfigService::get('site_store_admin_uids'); $adminIds = sysConfig('site_store_admin_uids');
if (!empty($adminIds)) { if (!empty($adminIds)) {
if (!($adminList = array_unique(array_filter(explode(',', trim($adminIds)))))) { if (!($adminList = array_unique(array_filter(explode(',', trim($adminIds)))))) {
return self::setErrorInfo('申请退款成功,'); return self::setErrorInfo('申请退款成功,');
@ -747,42 +751,11 @@ class StoreOrder extends BaseModel
$order = self::where('order_id', $orderId)->find(); $order = self::where('order_id', $orderId)->find();
$resPink = true; $resPink = true;
$res1 = self::where('order_id', $orderId)->update(['paid' => 1, 'pay_type' => $paytype, 'pay_time' => time()]);//订单改为支付 $res1 = self::where('order_id', $orderId)->update(['paid' => 1, 'pay_type' => $paytype, 'pay_time' => time()]);//订单改为支付
User::bcInc($order['uid'], 'pay_count', 1, 'uid');
if ($order->combination_id && $res1 && !$order->refund_status) $resPink = StorePink::createPink($order);//创建拼团 if ($order->combination_id && $res1 && !$order->refund_status) $resPink = StorePink::createPink($order);//创建拼团
$oid = self::where('order_id', $orderId)->value('id'); $oid = self::where('order_id', $orderId)->value('id');
StoreOrderStatus::status($oid, 'pay_success', '用户付款成功'); StoreOrderStatus::status($oid, 'pay_success', '用户付款成功');
$openid = WechatUser::uidToOpenid($order['uid'], 'openid');
$routineOpenid = WechatUser::uidToOpenid($order['uid'], 'routine_openid');
try{
if($openid){//公众号发送模板消息
WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_PAY_SUCCESS, [
'first'=>'亲,您购买的商品已支付成功',
'keyword1'=>$orderId,
'keyword2'=>$order['pay_price'],
'remark'=>'点击查看订单详情'
],Route::buildUrl('order/detail/'.$orderId)->suffix('')->domain(true)->build());
CustomerService::sendOrderPaySuccessCustomerService($order, 1);
WechatTemplateService::sendAdminNoticeTemplate([
'first'=>"亲,您有一个新订单 \n订单号:{$order['order_id']}",
'keyword1'=>'新订单',
'keyword2'=>'已支付',
'keyword3'=>date('Y/m/d H:i',time()),
'remark'=>'请及时处理'
]);
}else if($routineOpenid){//小程序发送模板消息
RoutineTemplate::sendOrderSuccess($formId, $orderId);
CustomerService::sendOrderPaySuccessCustomerService($order, 0);
}
//向后台发送新订单消息
ChannelService::instance()->send('NEW_ORDER', ['order_id'=>$orderId]);
}catch (\Exception $e){}
$user = User::where('uid', $order['uid'])->find()->toArray();
//检测会员等级
event('UserLevelAfter', [$user]);
//支付成功后 //支付成功后
event('OrderPaySuccess', [$order]); event('OrderPaySuccess', [$order,$formId]);
//短信通知 下发用户支付成功 下发管理员支付通知
event('ShortMssageSend',[$order['order_id'],['PaySuccess','AdminPaySuccess']]);
$res = $res1 && $resPink; $res = $res1 && $resPink;
return false !== $res; return false !== $res;
} }
@ -866,7 +839,7 @@ class StoreOrder extends BaseModel
public static function orderTakeAfter($order) public static function orderTakeAfter($order)
{ {
$title=self::getProductTitle($order['cart_id']); $title=self::getProductTitle($order['cart_id']);
if ($order['is_channel']) {//小程序 if ($order['is_channel'] == 1) {//小程序
RoutineTemplate::sendOut('OREDER_TAKEVER', $order['uid'], [ RoutineTemplate::sendOut('OREDER_TAKEVER', $order['uid'], [
'keyword1' => $order['order_id'], 'keyword1' => $order['order_id'],
'keyword2' => $title, 'keyword2' => $title,
@ -932,6 +905,7 @@ class StoreOrder extends BaseModel
return self::setErrorInfo($e->getMessage()); return self::setErrorInfo($e->getMessage());
} }
self::commitTrans(); self::commitTrans();
event('UserLevelAfter',[User::get($uni)]);
event('UserOrderTake', $uni); event('UserOrderTake', $uni);
//短信通知 //短信通知
event('ShortMssageSend',[$order['order_id'],['Receiving','AdminConfirmTakeOver']]); event('ShortMssageSend',[$order['order_id'],['Receiving','AdminConfirmTakeOver']]);
@ -1076,7 +1050,7 @@ class StoreOrder extends BaseModel
} }
} }
} }
$order['offlinePayStatus'] = (int)SystemConfigService::get('offline_pay_status') ?? (int)2; $order['offlinePayStatus'] = (int)sysConfig('offline_pay_status') ?? (int)2;
return $order; return $order;
} }
@ -1384,7 +1358,7 @@ class StoreOrder extends BaseModel
//订单已完成 数量 //订单已完成 数量
$data['complete_count'] = self::statusByWhere(4, $uid)->where('is_del', 0)->where('uid', $uid)->count(); $data['complete_count'] = self::statusByWhere(4, $uid)->where('is_del', 0)->where('uid', $uid)->count();
//订单退款 //订单退款
$data['refund_count'] = self::statusByWhere(-3, $uid)->where('is_del', 0)->where('uid', $uid)->count(); $data['refund_count'] = self::statusByWhere(-1, $uid)->where('is_del', 0)->where('uid', $uid)->count();
return $data; return $data;
} }
@ -1439,7 +1413,7 @@ class StoreOrder extends BaseModel
* @return string|null * @return string|null
* @throws \Psr\SimpleCache\InvalidArgumentException * @throws \Psr\SimpleCache\InvalidArgumentException
*/ */
public static function orderUnpaidCancel($limit = 10, $prefid = 'order_unpaid_page', $expire = 3600) public static function orderUnpaidCancel()
{ {
//系统预设取消订单时间段 //系统预设取消订单时间段
$keyValue = ['order_cancel_time', 'order_activity_time', 'order_bargain_time', 'order_seckill_time', 'order_pink_time']; $keyValue = ['order_cancel_time', 'order_activity_time', 'order_bargain_time', 'order_seckill_time', 'order_pink_time'];
@ -1451,47 +1425,37 @@ class StoreOrder extends BaseModel
//检查是否有未支付的订单 未支付查询条件 //检查是否有未支付的订单 未支付查询条件
$unPidCount = self::where('paid', 0)->where('pay_type', '<>', 'offline')->where('is_del', 0)->where('status', 0)->where('refund_status', 0)->count(); $unPidCount = self::where('paid', 0)->where('pay_type', '<>', 'offline')->where('is_del', 0)->where('status', 0)->where('refund_status', 0)->count();
if (!$unPidCount) return null; if (!$unPidCount) return null;
//总分页条数
$pagesSum = ceil(bcdiv($unPidCount, $limit, 2));
if (Cache::has($prefid)) {
$pages = Cache::get($prefid);
$pages++;
Cache::set($prefid, $pages, $expire);
} else {
$pages = 1;
Cache::set($prefid, $pages, $expire);
}
if ($pages > $pagesSum) Cache::set($prefid, 0, $expire);
self::beginTrans();
try { try {
$res = true; $res = true;
// 未支付查询条件 // 未支付查询条件
$orderList = self::where('paid', 0)->where('pay_type', '<>', 'offline')->where('is_del', 0)->where('status', 0)->where('refund_status', 0)->field('add_time,pink_id,order_id,seckill_id,bargain_id,combination_id,status,cart_id,use_integral,refund_status,uid,unique,back_integral,coupon_id,paid,is_del')->page($pages, $limit)->select(); $orderList = self::where('paid', 0)->where('pay_type', '<>', 'offline')->where('is_del', 0)->where('status', 0)->where('refund_status', 0)->field('add_time,pink_id,order_id,seckill_id,bargain_id,combination_id,status,cart_id,use_integral,refund_status,uid,unique,back_integral,coupon_id,paid,is_del')->select();
foreach ($orderList as $order) { foreach ($orderList as $order) {
if ($order['seckill_id']) { if ($order['seckill_id']) {
//优先使用单独配置的过期时间 //优先使用单独配置的过期时间
$order_seckill_time = $systemValue['order_seckill_time'] ? $systemValue['order_seckill_time'] : $systemValue['order_activity_time']; $order_seckill_time = $systemValue['order_seckill_time'] ? $systemValue['order_seckill_time'] : $systemValue['order_activity_time'];
$res = $res && self::RegressionAll($order_seckill_time, $order); $res = $res && self::RegressionAll($order_seckill_time, $order);
unset($order_seckill_time);
} else if ($order['bargain_id']) { } else if ($order['bargain_id']) {
$order_bargain_time = $systemValue['order_bargain_time'] ? $systemValue['order_bargain_time'] : $systemValue['order_activity_time']; $order_bargain_time = $systemValue['order_bargain_time'] ? $systemValue['order_bargain_time'] : $systemValue['order_activity_time'];
$res = $res && self::RegressionAll($order_bargain_time, $order); $res = $res && self::RegressionAll($order_bargain_time, $order);
unset($order_bargain_time);
} else if ($order['pink_id'] || $order['combination_id']) { } else if ($order['pink_id'] || $order['combination_id']) {
$order_pink_time = $systemValue['order_pink_time'] ? $systemValue['order_pink_time'] : $systemValue['order_activity_time']; $order_pink_time = $systemValue['order_pink_time'] ? $systemValue['order_pink_time'] : $systemValue['order_activity_time'];
$res = $res && self::RegressionAll($order_pink_time, $order); $res = $res && self::RegressionAll($order_pink_time, $order);
unset($order_pink_time);
} else { } else {
$res = $res && self::RegressionAll($systemValue['order_cancel_time'], $order); $res = $res && self::RegressionAll($systemValue['order_cancel_time'], $order);
} }
} }
if ($res) self::commitTrans(); if (!$res) throw new \Exception('更新错误');
unset($orderList,$res,$pages);
return null; return null;
} catch (PDOException $e) { } catch (PDOException $e) {
self::rollbackTrans();
Log::error('未支付自动取消时发生数据库查询错误,错误原因为:'.$e->getMessage()); Log::error('未支付自动取消时发生数据库查询错误,错误原因为:'.$e->getMessage());
return $e->getMessage(); throw new \Exception($e->getMessage());
} catch (\think\Exception $e) { } catch (\think\Exception $e) {
self::rollbackTrans();
Log::error('未支付自动取消时发生系统错误,错误原因为:'.$e->getMessage()); Log::error('未支付自动取消时发生系统错误,错误原因为:'.$e->getMessage());
return $e->getMessage(); throw new \Exception($e->getMessage());
} }
} }
@ -1515,6 +1479,7 @@ class StoreOrder extends BaseModel
$res3 = self::RegressionCoupon($order); $res3 = self::RegressionCoupon($order);
$res = $res1 && $res2 && $res3; $res = $res1 && $res2 && $res3;
if ($res) $res = false !== self::where('order_id', $order['order_id'])->update(['is_del' => 1, 'mark' => '订单未支付已超过系统预设时间']); if ($res) $res = false !== self::where('order_id', $order['order_id'])->update(['is_del' => 1, 'mark' => '订单未支付已超过系统预设时间']);
unset($res1,$res2,$res3);
return $res; return $res;
} else } else
return true; return true;
@ -1599,43 +1564,40 @@ class StoreOrder extends BaseModel
*/ */
public static function startTakeOrder() public static function startTakeOrder()
{ {
self::beginTrans(); //7天前时间戳
try{ $systemDeliveryTime = sysConfig('system_delivery_time') ?? 0;
//7天前时间戳 //0为取消自动收货功能
$systemDeliveryTime = SystemConfigService::get('system_delivery_time') ?? 0; if($systemDeliveryTime == 0) return true;
//0为取消自动收货功能 $sevenDay = strtotime(date('Y-m-d H:i:s',strtotime('-'. $systemDeliveryTime .' day')));
if($systemDeliveryTime == 0) return true; $model = new self;
$sevenDay = strtotime(date('Y-m-d H:i:s',strtotime('-'. $systemDeliveryTime .' day'))); $model = $model->alias('o');
$model = new self; $model = $model->join('StoreOrderStatus s','s.oid=o.id');
$model = $model->alias('o'); $model = $model->where('o.paid', 1);
$model = $model->join('StoreOrderStatus s','s.oid=o.id'); $model = $model->where('s.change_type', 'delivery_goods');
$model = $model->where('o.paid', 1); $model = $model->where('s.change_time', '<',$sevenDay);
$model = $model->where('s.change_type', 'delivery_goods'); $model = $model->where('o.status', 1);
$model = $model->where('s.change_time', '<',$sevenDay); $model = $model->where('o.refund_status', 0);
$model = $model->where('o.status', 1); $model = $model->where('o.is_del', 0);
$model = $model->where('o.refund_status', 0); $orderInfo = $model->column('id','id');
$model = $model->where('o.is_del', 0); if(!count($orderInfo)) return true;
$orderInfo = $model->column('id','id'); $res = true;
if(!count($orderInfo)) return true; foreach ($orderInfo as $key=>&$item){
$res = true; $order = self::get($item);
foreach ($orderInfo as $key=>&$item){ if($order['status'] == 2) continue;
$order = self::get($item); if($order['paid'] == 1 && $order['status'] == 1) $data['status'] = 2;
if($order['status'] == 2) continue; else if($order['pay_type'] == 'offline') $data['status'] = 2;
if($order['paid'] == 1 && $order['status'] == 1) $data['status'] = 2; else continue;
else if($order['pay_type'] == 'offline') $data['status'] = 2; if(!self::edit($data,$item,'id')) continue;
else continue; try{
if(!self::edit($data,$item,'id')) continue; OrderRepository::storeProductOrderTakeDeliveryAdmin($order, $item);
try{ $res = $res && true;
OrderRepository::storeProductOrderTakeDeliveryAdmin($order, $item); }catch (\Exception $e){
$res = $res && true; $res = $res && false;
}catch (\Exception $e){
$res = $res && false;
}
$res = $res && StoreOrderStatus::status($item,'take_delivery','已收货[自动收货]');
} }
self::checkTrans($res); $res = $res && StoreOrderStatus::status($item,'take_delivery','已收货[自动收货]');
}catch (\Exception $e){ }
self::rollbackTrans(); if(!$res){
throw new \Exception('收货失败');
} }
} }

View File

@ -70,7 +70,7 @@ class StorePink extends BaseModel
$model = $model->alias('p'); $model = $model->alias('p');
$model = $model->field('p.*,u.nickname,u.avatar'); $model = $model->field('p.*,u.nickname,u.avatar');
$model = $model->where('id',$id); $model = $model->where('id',$id);
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
return $model->find(); return $model->find();
} }
@ -85,7 +85,7 @@ class StorePink extends BaseModel
$model = $model->field('p.*,u.nickname,u.avatar'); $model = $model->field('p.*,u.nickname,u.avatar');
$model = $model->where('k_id',$id); $model = $model->where('k_id',$id);
$model = $model->where('is_refund',0); $model = $model->where('is_refund',0);
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
$model = $model->order('id asc'); $model = $model->order('id asc');
return $model->select(); return $model->select();
} }
@ -116,7 +116,7 @@ class StorePink extends BaseModel
$model = $model->where('p.k_id',0); $model = $model->where('p.k_id',0);
$model = $model->where('p.is_refund',0); $model = $model->where('p.is_refund',0);
$model = $model->order('p.add_time desc'); $model = $model->order('p.add_time desc');
$model = $model->join('__user__ u','u.uid = p.uid'); $model = $model->join('user u','u.uid = p.uid');
$list = $model->select(); $list = $model->select();
$list=count($list) ? $list->toArray() : []; $list=count($list) ? $list->toArray() : [];
if($isAll){ if($isAll){
@ -194,7 +194,7 @@ class StorePink extends BaseModel
if($openid){ //公众号模板消息 if($openid){ //公众号模板消息
$firstWeChat = '亲,您的拼团已经完成了'; $firstWeChat = '亲,您的拼团已经完成了';
$keyword1WeChat = self::where('id|k_id',$pid)->where('uid',$item)->value('order_id'); $keyword1WeChat = self::where('id|k_id',$pid)->where('uid',$item)->value('order_id');
$keyword2WeChat = self::alias('p')->where('p.id|p.k_id',$pid)->where('p.uid',$item)->join('__store_combination__ c','c.id=p.cid')->value('c.title'); $keyword2WeChat = self::alias('p')->where('p.id|p.k_id',$pid)->where('p.uid',$item)->join('store_combination c','c.id=p.cid')->value('c.title');
$remarkWeChat = '点击查看订单详情'; $remarkWeChat = '点击查看订单详情';
$urlWeChat = Route::buildUrl('order/detail/'.$keyword1WeChat)->suffix('')->domain(true)->build(); $urlWeChat = Route::buildUrl('order/detail/'.$keyword1WeChat)->suffix('')->domain(true)->build();
WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_USER_GROUPS_SUCCESS,[ WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_USER_GROUPS_SUCCESS,[
@ -223,7 +223,7 @@ class StorePink extends BaseModel
* @param $pid * @param $pid
*/ */
public static function orderPinkAfterNo($uid,$pid,$formId='',$fillTilt='',$isRemove=false){ public static function orderPinkAfterNo($uid,$pid,$formId='',$fillTilt='',$isRemove=false){
$store = self::alias('p')->where('p.id|p.k_id',$pid)->field('c.*')->where('p.uid',$uid)->join('__store_combination__ c','c.id=p.cid')->find(); $store = self::alias('p')->where('p.id|p.k_id',$pid)->field('c.*')->where('p.uid',$uid)->join('store_combination c','c.id=p.cid')->find();
$pink = self::where('id|k_id',$pid)->where('uid',$uid)->find(); $pink = self::where('id|k_id',$pid)->where('uid',$uid)->find();
$openid = WechatUser::uidToOpenid($uid, 'openid'); $openid = WechatUser::uidToOpenid($uid, 'openid');
$routineOpenid = WechatUser::uidToOpenid($uid, 'routine_openid'); $routineOpenid = WechatUser::uidToOpenid($uid, 'routine_openid');
@ -451,7 +451,7 @@ class StorePink extends BaseModel
$res = $res1 && $res2; $res = $res1 && $res2;
} }
// 开团成功发送模板消息 // 开团成功发送模板消息
if($openid && !$order['is_channel']){ //公众号模板消息 if($openid && $order['is_channel'] != 1){ //公众号模板消息
$urlWeChat = Route::buildUrl('/order/detail/'.$pink['order_id'])->suffix('')->domain(true)->build(); $urlWeChat = Route::buildUrl('/order/detail/'.$pink['order_id'])->suffix('')->domain(true)->build();
WechatTemplateService::sendTemplate($openid,WechatTemplateService::OPEN_PINK_SUCCESS,[ WechatTemplateService::sendTemplate($openid,WechatTemplateService::OPEN_PINK_SUCCESS,[
'first'=> '您好,您已成功开团!赶紧与小伙伴们分享吧!!!', 'first'=> '您好,您已成功开团!赶紧与小伙伴们分享吧!!!',
@ -460,7 +460,7 @@ class StorePink extends BaseModel
'keyword3'=> $pink['people'], 'keyword3'=> $pink['people'],
'remark'=> '点击查看订单详情' 'remark'=> '点击查看订单详情'
],$urlWeChat); ],$urlWeChat);
}else if($routineOpenid && $order['is_channel']){ }else if($routineOpenid && $order['is_channel'] == 1){
RoutineTemplate::sendOut('OPEN_PINK_SUCCESS',$order['uid'],[ RoutineTemplate::sendOut('OPEN_PINK_SUCCESS',$order['uid'],[
'keyword1'=>date('Y-m-d H:i:s',$pink['add_time']), 'keyword1'=>date('Y-m-d H:i:s',$pink['add_time']),
'keyword2'=>date('Y-m-d H:i:s',$pink['stop_time']), 'keyword2'=>date('Y-m-d H:i:s',$pink['stop_time']),
@ -494,7 +494,7 @@ class StorePink extends BaseModel
// $pinkRakeBack = self::where('id',$id)->field('people,price,uid,id')->find()->toArray(); // $pinkRakeBack = self::where('id',$id)->field('people,price,uid,id')->find()->toArray();
// $countPrice = bcmul($pinkRakeBack['people'],$pinkRakeBack['price'],2); // $countPrice = bcmul($pinkRakeBack['people'],$pinkRakeBack['price'],2);
// if(bcsub((float)$countPrice,0,2) <= 0) return true; // if(bcsub((float)$countPrice,0,2) <= 0) return true;
// $rakeBack = (SystemConfigService::get('rake_back_colonel') ?: 0)/100; // $rakeBack = (sysConfig('rake_back_colonel') ?: 0)/100;
// if($rakeBack <= 0) return true; // if($rakeBack <= 0) return true;
// $rakeBackPrice = bcmul($countPrice,$rakeBack,2); // $rakeBackPrice = bcmul($countPrice,$rakeBack,2);
// if($rakeBackPrice <= 0) return true; // if($rakeBackPrice <= 0) return true;
@ -717,7 +717,7 @@ class StorePink extends BaseModel
foreach ($pinkUidList as $key=>&$item){ foreach ($pinkUidList as $key=>&$item){
$openid = WechatUser::uidToOpenid($item, 'openid'); $openid = WechatUser::uidToOpenid($item, 'openid');
$routineOpenid = WechatUser::uidToOpenid($item, 'routine_openid'); $routineOpenid = WechatUser::uidToOpenid($item, 'routine_openid');
$store = self::alias('p')->where('p.id|p.k_id',$pink)->field('c.*')->where('p.uid',$item)->join('__store_combination__ c','c.id=p.cid')->find(); $store = self::alias('p')->where('p.id|p.k_id',$pink)->field('c.*')->where('p.uid',$item)->join('store_combination c','c.id=p.cid')->find();
$pink = self::where('id|k_id',$pink)->where('uid',$item)->find(); $pink = self::where('id|k_id',$pink)->where('uid',$item)->find();
if($openid){ if($openid){
//公众号模板消息 //公众号模板消息
@ -792,7 +792,7 @@ class StorePink extends BaseModel
//公众号模板消息 //公众号模板消息
$firstWeChat = '亲,您的拼团已经完成了'; $firstWeChat = '亲,您的拼团已经完成了';
$keyword1WeChat = self::where('id|k_id',$pink)->where('uid',$item)->value('order_id'); $keyword1WeChat = self::where('id|k_id',$pink)->where('uid',$item)->value('order_id');
$keyword2WeChat = self::alias('p')->where('p.id|p.k_id',$pink)->where('p.uid',$item)->join('__store_combination__ c','c.id=p.cid')->value('c.title'); $keyword2WeChat = self::alias('p')->where('p.id|p.k_id',$pink)->where('p.uid',$item)->join('store_combination c','c.id=p.cid')->value('c.title');
$remarkWeChat = '点击查看订单详情'; $remarkWeChat = '点击查看订单详情';
$urlWeChat = Route::buildUrl('order/detail/'.$keyword1WeChat)->suffix('')->domain(true)->build(); $urlWeChat = Route::buildUrl('order/detail/'.$keyword1WeChat)->suffix('')->domain(true)->build();
WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_USER_GROUPS_SUCCESS,[ WechatTemplateService::sendTemplate($openid,WechatTemplateService::ORDER_USER_GROUPS_SUCCESS,[
@ -839,6 +839,7 @@ class StorePink extends BaseModel
$success = self::successPinkEdit($successPinkList); $success = self::successPinkEdit($successPinkList);
$error = self::failPinkEdit($failPinkList); $error = self::failPinkEdit($failPinkList);
$res = $success && $error; $res = $success && $error;
return $res; if(!$res)
throw new \Exception('拼团订单取消失败!');
} }
} }

View File

@ -226,7 +226,7 @@ class StoreProduct extends BaseModel
public static function setLevelPrice($list, $uid, $isSingle = false) public static function setLevelPrice($list, $uid, $isSingle = false)
{ {
if (is_object($list)) $list = count($list) ? $list->toArray() : []; if (is_object($list)) $list = count($list) ? $list->toArray() : [];
if (!SystemConfigService::get('vip_open')) { if (!sysConfig('vip_open')) {
if (is_array($list)) return $list; if (is_array($list)) return $list;
return $isSingle ? $list : 0; return $isSingle ? $list : 0;
} }
@ -299,6 +299,13 @@ class StoreProduct extends BaseModel
: StoreProductAttr::uniqueByStock($uniqueId); : StoreProductAttr::uniqueByStock($uniqueId);
} }
/**
* 加销量减销量
* @param $num
* @param $productId
* @param string $unique
* @return bool
*/
public static function decProductStock($num, $productId, $unique = '') public static function decProductStock($num, $productId, $unique = '')
{ {
if ($unique) { if ($unique) {
@ -309,7 +316,7 @@ class StoreProduct extends BaseModel
} }
if($res){ if($res){
$stock = self::where('id', $productId)->value('stock'); $stock = self::where('id', $productId)->value('stock');
$replenishment_num = SystemConfigService::get('store_stock') ?? 0;//库存预警界限 $replenishment_num = sysConfig('store_stock') ?? 0;//库存预警界限
if($replenishment_num >= $stock){ if($replenishment_num >= $stock){
try{ try{
ChannelService::instance()->send('STORE_STOCK', ['id'=>$productId]); ChannelService::instance()->send('STORE_STOCK', ['id'=>$productId]);
@ -319,13 +326,13 @@ class StoreProduct extends BaseModel
return $res; return $res;
} }
/* /**
* 减少销量,增加库存 * 减少销量,增加库存
* @param int $num 增加库存数量 * @param int $num 增加库存数量
* @param int $productId 产品id * @param int $productId 产品id
* @param string $unique 属性唯一值 * @param string $unique 属性唯一值
* @return boolean * @return boolean
* */ */
public static function incProductStock($num, $productId, $unique = '') public static function incProductStock($num, $productId, $unique = '')
{ {
$product = self::where('id', $productId)->field(['sales', 'stock'])->find(); $product = self::where('id', $productId)->field(['sales', 'stock'])->find();
@ -344,9 +351,15 @@ class StoreProduct extends BaseModel
return $res; return $res;
} }
/**
* 获取产品分销佣金最低和最高
* @param $storeInfo
* @param $productValue
* @return int|string
*/
public static function getPacketPrice($storeInfo, $productValue) public static function getPacketPrice($storeInfo, $productValue)
{ {
$store_brokerage_ratio = SystemConfigService::get('store_brokerage_ratio'); $store_brokerage_ratio = sysConfig('store_brokerage_ratio');
$store_brokerage_ratio = bcdiv($store_brokerage_ratio, 100, 2); $store_brokerage_ratio = bcdiv($store_brokerage_ratio, 100, 2);
if (count($productValue)) { if (count($productValue)) {
$Maxkey = self::getArrayMax($productValue, 'price'); $Maxkey = self::getArrayMax($productValue, 'price');
@ -385,9 +398,12 @@ class StoreProduct extends BaseModel
} }
} }
/* /**
* 获取二维数组中最大的值 * 获取二维数组中最大的值
* */ * @param $arr
* @param $field
* @return int|string
*/
public static function getArrayMax($arr, $field) public static function getArrayMax($arr, $field)
{ {
$temp = []; $temp = [];
@ -401,9 +417,12 @@ class StoreProduct extends BaseModel
return 0; return 0;
} }
/* /**
* 获取二维数组中最小的值 * 获取二维数组中最小的值
* */ * @param $arr
* @param $field
* @return int|string
*/
public static function getArrayMin($arr, $field) public static function getArrayMin($arr, $field)
{ {
$temp = []; $temp = [];
@ -426,6 +445,7 @@ class StoreProduct extends BaseModel
{ {
return self::whereIn('id', $productIds)->column('store_name,image', 'id'); return self::whereIn('id', $productIds)->column('store_name,image', 'id');
} }
/** /**
* TODO 获取某个字段值 * TODO 获取某个字段值
* @param $id * @param $id

View File

@ -140,14 +140,14 @@ class StoreProductRelation extends BaseModel
->alias('A') ->alias('A')
->where('A.type','collect')/*->where('A.category','product')*/ ->where('A.type','collect')/*->where('A.category','product')*/
->order('A.add_time DESC') ->order('A.add_time DESC')
->join('__store_product__ B','A.product_id = B.id') ->join('store_product B','A.product_id = B.id')
->page($page, $limit) ->page($page, $limit)
->select(); ->select();
}else{ }else{
$list = self::where('A.uid',$uid) $list = self::where('A.uid',$uid)
->field('B.id pid,A.category,B.store_name,B.price,B.ot_price,B.sales,B.image,B.is_del,B.is_show')->alias('A') ->field('B.id pid,A.category,B.store_name,B.price,B.ot_price,B.sales,B.image,B.is_del,B.is_show')->alias('A')
->where('A.type','collect')/*->where('A.category','product')*/ ->where('A.type','collect')/*->where('A.category','product')*/
->order('A.add_time DESC')->join('__store_product__ B','A.product_id = B.id') ->order('A.add_time DESC')->join('store_product B','A.product_id = B.id')
->select(); ->select();
} }
if(!$list) return []; if(!$list) return [];

View File

@ -40,11 +40,6 @@ class StoreProductReply extends BaseModel
return time(); return time();
} }
protected function setPicsAttr($value)
{
return is_array($value) ? json_encode($value) : $value;
}
protected function getPicsAttr($value) protected function getPicsAttr($value)
{ {
return json_decode($value,true); return json_decode($value,true);
@ -77,8 +72,8 @@ class StoreProductReply extends BaseModel
{ {
$model = self::productValidWhere($alias)->where('A.product_id',$productId) $model = self::productValidWhere($alias)->where('A.product_id',$productId)
->field('A.product_score,A.service_score,A.comment,A.merchant_reply_content,A.merchant_reply_time,A.pics,A.add_time,B.nickname,B.avatar,C.cart_info,A.merchant_reply_content') ->field('A.product_score,A.service_score,A.comment,A.merchant_reply_content,A.merchant_reply_time,A.pics,A.add_time,B.nickname,B.avatar,C.cart_info,A.merchant_reply_content')
->join('__user__ B','A.uid = B.uid') ->join('user B','A.uid = B.uid')
->join('__store_order_cart_info__ C','A.unique = C.unique'); ->join('store_order_cart_info C','A.unique = C.unique');
switch ($type){ switch ($type){
case 1: case 1:
$model=$model->where('A.product_score',5);//好评 $model=$model->where('A.product_score',5);//好评
@ -97,7 +92,7 @@ class StoreProductReply extends BaseModel
{ {
$model = self::setProductReplyWhere($productId,$order); $model = self::setProductReplyWhere($productId,$order);
if($page) $model = $model->page((int)$page,(int)$limit); if($page) $model = $model->page((int)$page,(int)$limit);
$list = $model->select()->toArray()?:[]; $list = $model->order('add_time desc')->select()->toArray()?:[];
foreach ($list as $k=>$reply){ foreach ($list as $k=>$reply){
$list[$k] = self::tidyProductReply($reply); $list[$k] = self::tidyProductReply($reply);
} }
@ -114,6 +109,7 @@ class StoreProductReply extends BaseModel
$res['star'] = bcadd($res['product_score'],$res['service_score'],2); $res['star'] = bcadd($res['product_score'],$res['service_score'],2);
$res['star'] =bcdiv($res['star'],2,0); $res['star'] =bcdiv($res['star'],2,0);
$res['comment'] = $res['comment'] ? :'此用户没有填写评价'; $res['comment'] = $res['comment'] ? :'此用户没有填写评价';
$res['pics'] = is_string($res['pics']) ? json_decode($res['pics'],true) : $res['pics'];
unset($res['cart_info']); unset($res['cart_info']);
return $res; return $res;
} }
@ -127,8 +123,8 @@ class StoreProductReply extends BaseModel
{ {
$res = self::productValidWhere('A')->where('A.product_id',$productId) $res = self::productValidWhere('A')->where('A.product_id',$productId)
->field('A.product_score,A.service_score,A.comment,A.merchant_reply_content,A.merchant_reply_time,A.pics,A.add_time,B.nickname,B.avatar,C.cart_info') ->field('A.product_score,A.service_score,A.comment,A.merchant_reply_content,A.merchant_reply_time,A.pics,A.add_time,B.nickname,B.avatar,C.cart_info')
->join('__user__ B','A.uid = B.uid') ->join('user B','A.uid = B.uid')
->join('__store_order_cart_info__ C','A.unique = C.unique') ->join('store_order_cart_info C','A.unique = C.unique')
->order('A.add_time DESC,A.product_score DESC, A.service_score DESC, A.add_time DESC')->find(); ->order('A.add_time DESC,A.product_score DESC, A.service_score DESC, A.add_time DESC')->find();
if(!$res) return null; if(!$res) return null;
return self::tidyProductReply($res->toArray()); return self::tidyProductReply($res->toArray());

Some files were not shown because too many files have changed in this diff Show More