Browse Source

Merge branch 'master' of https://gitee.com/ZhongBangKeJi/CRMEB

* '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
sugar1569 7 years atrás
parent
commit
f25078c485

+ 29 - 12
README.md

@@ -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/)
 
 ## 项目介绍
@@ -61,15 +64,17 @@
    5.订单:能够完成用户的订单管理(发货、订单详情、修改订单、订单备注、订单记录、订单退款) 、售后服务 (评论的回复与删除)
    
    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 @@ jQuery:http://jquery.com
 
 iView:https://www.iviewui.com
 
-form-builder : https://github.com/xaboy/form-builder(也是参与本项目开发的技术)
-
 Vue:https://cn.vuejs.org/
 
 font-awesome: https://fontawesome.com/?from=io

+ 1 - 1
application/routine/model/user/User.php

@@ -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;//成本价大于支付价格时直接返回

+ 0 - 150
application/wap/model/user/User.php

@@ -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;
-    }
-
-}

+ 3 - 2
extend/service/RoutineService.php

@@ -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'];

+ 1 - 1
public/install/crmeb.sql

@@ -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 '关键字',