* 'master' of https://gitee.com/ZhongBangKeJi/CRMEB:
  更新 README.md
  更新 README.md
  更新 README.md
  分享时显示产品名称
  更新 README.md
  修改 crmeb.sql中的eb_store_product表中slider_image的类型,进而修复了上传商品多张轮播图后编辑报错 原有eb_store_product表中slider_image的类型为varchar(512),导致上传多张轮播图后,内容长度超过了512,使得字段内容被截取,致使在上传多张轮播图后再点击编辑商品报错(原因是因为json_decode的结果为null)
  修复下单时报出的illegal offset错误 用于存放签名的临时数组$tem与返回的$data应初始化为array而不应该为空字符串
  修复公众号无法二级分销问题 公众号User模型l缺少了二级分销的函数,添加即可
  修复分销时二级推广人无法获得奖励金问题 源代码中获取二级返佣比例时字段名与数据库字段名不符合( store_brokerage_ratio_two),致使取出的比例为0,二级分销函数直接返回,进而导致了二级分销人无法得到佣金,修改字段为(store_brokerage_two),与数据库对应即可
  更新 README.md
  更新 README.md

# Conflicts:
#	.htaccess
#	application/wap/model/user/User.php
#	public/.htaccess
This commit is contained in:
sugar1569 2019-01-02 10:20:32 +08:00
commit f25078c485
5 changed files with 34 additions and 166 deletions

View File

@ -1,3 +1,6 @@
<p align="center">
<img src="https://images.gitee.com/uploads/images/2018/1214/151026_2299df23_892944.gif" />
</p>
<h1 align="center"> CRMEB客户管理+电商管理系统</h1>
<p align="center">
<a href="http://www.crmeb.com">
@ -14,10 +17,10 @@
</a>
</p>
## 本项目还在不断开发完善中,如有建议或问题请[在这里提出](https://gitee.com/ZhongBangKeJi/CRMEB/issues)
## 本项目还在不断开发完善中,如有建议或问题请[官方论坛](http://bbs.crmeb.net)
# 如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢!
## :point_right: 小程序版https://gitee.com/ZhongBangKeJi/CRMEB_WeChatMiniProgram
## [帮助文档](https://gitee.com/ZhongBangKeJi/CRMEB/wikis/)
## 项目介绍
@ -62,14 +65,16 @@
6.分销:后台有分销统计管理,分销可以设置人人分销和指定人分销,也可以自己稍微开发一下修改规则,例如下单后成为分销等
7.设置:能够完成管理员对网站的商品资料(添加大类、添加小类、商品添加、属性快速生成、商品审查)、商品交易(外理订单、发
7.数据统计图表统计分析(财务统计、产品统计、会员统计、营销统计、分销统计、交易统计等)
8.设置:能够完成管理员对网站的商品资料(添加大类、添加小类、商品添加、属性快速生成、商品审查)、商品交易(外理订单、发
货查询)、会员管理(会员审查)、操作管理(管理员添加、管理员审查、管理员退出)、系统配置、后台通知等功能
8.内容:管理文章分类 (添加分类、删除分类、修改分类) 、 管理文章
9.内容:管理文章分类 (添加分类、删除分类、修改分类) 、 管理文章
9.维护:查看系统日志、文件变动效验、刷新网站缓存、在线更新系统、清除数据等功能
10.维护:查看系统日志、文件变动效验、刷新网站缓存、在线更新系统、清除数据、文件管理等功能
10.强大的权限管理系统
11.强大的权限管理系统
## 演示地址
演示站后台:[<a href='http://demo25.crmeb.net' target="_blank"> crmeb_v2.5 </a>]
@ -90,10 +95,6 @@ CRMEB微信小程序v2.5版:除了以上功能还带砍价、拼团功能
CRMEB微信公众号小程序打通v2.5版:除了以上功能还带砍价、拼团功能 需要申请微信开放平台
CRMEB微信公众号v2.0版:除了以上功能还带拼团功能
CRMEB微信小程序v2.0版:除了以上功能还带砍价、拼团功能
还有定制开发服务例如预约系统、O2O、付费阅读、多店版、多商家版
### 详情[<a href='https://s.click.taobao.com/W7hVkLw' target="_blank"> 进入淘宝 </a>]
@ -121,8 +122,26 @@ Git clone https://gitee.com/ZhongBangKeJi/CRMEB.git
QQ群: 116279623
官方论坛http://bbs.crmeb.net
Gitee: https://gitee.com/ZhongBangKeJi/CRMEB/issues
## 系统组件开源项目
#### form-builder
tp5 PHP表单生成器快速生成现代化的form表单。包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传等功能。
form-builder : https://github.com/xaboy/form-builder
#### laravel-form-builder
laravel PHP表单生成器快速生成现代化的form表单。包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传等功能。
https://github.com/xaboy/laravel-form-builder
#### form-create
具有动态渲染、数据收集、校验功能的表单生成器支持双向数据绑定、事件扩展以及自定义组件可快速生成包含有省市区三级联动、时间选择、日期选择等17种功能组件。 http://fc.gd8.top
https://github.com/xaboy/form-create
## 特别鸣谢
感谢以下的项目,排名不分先后
@ -134,8 +153,6 @@ jQueryhttp://jquery.com
iViewhttps://www.iviewui.com
form-builder : https://github.com/xaboy/form-builder也是参与本项目开发的技术
Vuehttps://cn.vuejs.org/
font-awesome https://fontawesome.com/?from=io

View File

@ -131,7 +131,7 @@ class User extends ModelBasic
if($storeBrokerageStatu == 1){
if(!User::be(['uid'=>$userInfoTwo['spread_uid'],'is_promoter'=>1])) return true;
}
$brokerageRatio = (SystemConfigService::get('store_brokerage_ratio_two') ?: 0)/100;
$brokerageRatio = (SystemConfigService::get('store_brokerage_two') ?: 0)/100;
if($brokerageRatio <= 0) return true;
$cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回

View File

@ -1,150 +0,0 @@
<?php
/**
*
* @author: xaboy<365615158@qq.com>
* @day: 2017/12/21
*/
namespace app\wap\model\user;
use basic\ModelBasic;
use service\SystemConfigService;
use think\Request;
use think\response\Redirect;
use think\Session;
use think\Url;
use traits\ModelTrait;
class User extends ModelBasic
{
use ModelTrait;
protected $insert = ['add_time','add_ip','last_time','last_ip'];
protected function setAddTimeAttr($value)
{
return time();
}
protected function setAddIpAttr($value)
{
return Request::instance()->ip();
}
protected function setLastTimeAttr($value)
{
return time();
}
protected function setLastIpAttr($value)
{
return Request::instance()->ip();
}
public static function setWechatUser($wechatUser,$spread_uid = 0)
{
return self::set([
'account'=>'wx'.$wechatUser['uid'].time(),
'pwd'=>md5(123456),
'nickname'=>$wechatUser['nickname']?:'',
'avatar'=>$wechatUser['headimgurl']?:'',
'spread_uid'=>$spread_uid,
'uid'=>$wechatUser['uid'],
'user_type'=>'wechat'
]);
}
public static function updateWechatUser($wechatUser,$uid)
{
return self::edit([
'nickname'=>$wechatUser['nickname']?:'',
'avatar'=>$wechatUser['headimgurl']?:''
],$uid,'uid');
}
public static function setSpreadUid($uid,$spreadUid)
{
return self::where('uid',$uid)->update(['spread_uid'=>$spreadUid]);
}
public static function getUserInfo($uid)
{
$userInfo = self::where('uid',$uid)->find();
if(!$userInfo) exception('读取用户信息失败!');
return $userInfo->toArray();
}
/**
* 获得当前登陆用户UID
* @return int $uid
*/
public static function getActiveUid()
{
$uid = null;
if(Session::has('loginUid','wap')) $uid = Session::get('loginUid','wap');
if(!$uid && Session::has('loginOpenid','wap') && ($openid = Session::get('loginOpenid','wap')))
$uid = WechatUser::openidToUid($openid);
if(!$uid) exit(exception('请登陆!'));
return $uid;
}
/** //TODO 一级返佣
* @param $orderInfo
* @return bool
*/
public static function backOrderBrokerage($orderInfo)
{
$userInfo = User::getUserInfo($orderInfo['uid']);
if(!$userInfo || !$userInfo['spread_uid']) return true;
$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型
if($storeBrokerageStatu == 1){
if(!User::be(['uid'=>$userInfo['spread_uid'],'is_promoter'=>1])) return true;
}
$brokerageRatio = (SystemConfigService::get('store_brokerage_ratio') ?: 0)/100;
if($brokerageRatio <= 0) return true;
$cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回
$brokeragePrice = bcmul(bcsub($orderInfo['pay_price'],$cost,2),$brokerageRatio,2);
if($brokeragePrice <= 0) return true;
$mark = $userInfo['nickname'].'成功消费'.floatval($orderInfo['pay_price']).'元,奖励推广佣金'.floatval($brokeragePrice);
self::beginTrans();
$res1 = UserBill::income('获得推广佣金',$userInfo['spread_uid'],'now_money','brokerage',$brokeragePrice,$orderInfo['id'],0,$mark);
$res2 = self::bcInc($userInfo['spread_uid'],'now_money',$brokeragePrice,'uid');
$res = $res1 && $res2;
self::checkTrans($res);
if($res) self::backOrderBrokerageTwo($orderInfo);
return $res;
}
/**
* //TODO 二级推广
* @param $orderInfo
* @return bool
*/
public static function backOrderBrokerageTwo($orderInfo){
$userInfo = User::getUserInfo($orderInfo['uid']);
$userInfoTwo = User::getUserInfo($userInfo['spread_uid']);
if(!$userInfoTwo || !$userInfoTwo['spread_uid']) return true;
$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ? : 1;//获取后台分销类型
if($storeBrokerageStatu == 1){
if(!User::be(['uid'=>$userInfoTwo['spread_uid'],'is_promoter'=>1])) return true;
}
$brokerageRatio = (SystemConfigService::get('store_brokerage_two') ?: 0)/100;
if($brokerageRatio <= 0) return true;
$cost = isset($orderInfo['cost']) ? $orderInfo['cost'] : 0;//成本价
if($cost > $orderInfo['pay_price']) return true;//成本价大于支付价格时直接返回
$brokeragePrice = bcmul(bcsub($orderInfo['pay_price'],$cost,2),$brokerageRatio,2);
if($brokeragePrice <= 0) return true;
$mark = '二级推广人'.$userInfo['nickname'].'成功消费'.floatval($orderInfo['pay_price']).'元,奖励推广佣金'.floatval($brokeragePrice);
self::beginTrans();
$res1 = UserBill::income('获得推广佣金',$userInfoTwo['spread_uid'],'now_money','brokerage',$brokeragePrice,$orderInfo['id'],0,$mark);
$res2 = self::bcInc($userInfoTwo['spread_uid'],'now_money',$brokeragePrice,'uid');
$res = $res1 && $res2;
self::checkTrans($res);
return $res;
}
}

View File

@ -65,13 +65,13 @@ class RoutineService{
$array = self::xml($xml);//全要大写
if($array['RETURN_CODE'] == 'SUCCESS' && $array['RESULT_CODE'] == 'SUCCESS'){
$time = time();
$tmp='';//临时数组用于签名
$tmp=array();//临时数组用于签名
$tmp['appId'] = $appid;
$tmp['nonceStr'] = $nonce_str;
$tmp['package'] = 'prepay_id='.$array['PREPAY_ID'];
$tmp['signType'] = 'MD5';
$tmp['timeStamp'] = "$time";
$data=array();
$data['state'] = 1;
$data['timeStamp'] = "$time";//时间戳
$data['nonceStr'] = $nonce_str;//随机字符串
@ -80,6 +80,7 @@ class RoutineService{
$data['paySign'] = self::sign($tmp);//签名,具体签名方案参见微信公众号支付帮助文档;
$data['out_trade_no'] = $out_trade_no;
}else{
$data=array();
$data['state'] = 0;
$data['text'] = "错误";
$data['RETURN_CODE'] = $array['RETURN_CODE'];

View File

@ -630,7 +630,7 @@ CREATE TABLE `eb_store_product` (
`id` mediumint(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
`mer_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)',
`image` varchar(128) NOT NULL COMMENT '商品图片',
`slider_image` varchar(512) NOT NULL COMMENT '轮播图',
`slider_image` text NOT NULL COMMENT '轮播图',
`store_name` varchar(128) NOT NULL COMMENT '商品名称',
`store_info` varchar(256) NOT NULL COMMENT '商品简介',
`keyword` varchar(256) NOT NULL COMMENT '关键字',