精华内容
下载资源
问答
  • 微信分销商城电脑手机三合一是以php+MySQL进行开发的微信商城分销系统源码,app,微信小程序,电脑三合一系统商城
  • thinkphp 5.1框架用户商城商家app,与商淘软件用户商城配套使用  

    thinkphp 5.1框架多用户商城商家端app,与商淘软件多用户商城配套使用

     

    展开全文
  • 多端合一小程序商城的功能优势近日,微盛网络重磅推出国内首个五端合一小程序矩阵平台,助力中小企业提升运营效率,快速打造在线销售之路。多端合一小程序商城PC+手机+公众号+APP+小程序实现全网覆盖 , 五站数据一键...
    多端合一小程序商城的功能优势

    近日,微盛网络重磅推出国内首个五端合一小程序矩阵平台,助力中小企业提升运营效率,快速打造在线销售之路。



    多端合一小程序商城

    PC+手机+公众号+APP+小程序

    实现全网覆盖 , 五站数据一键同步

    用最少的人力投入,完成最优的多端平台管理和维护

    助力产品更大市场覆盖率 , 精准吸引目标客户

    确认过眼神,遇上对的微盛



    下面小编通过(羊毛生活)馆案例分析多端合一商城的功能优势。



    (羊毛生活馆)小程序在微盛多端合一小程序商城的基础上增加了服装口袋定制的功能,用户可以选择自己喜欢的口袋风格图片,直接上传然后下单支付。目前小程序电商的核心用户主要是20~39岁的年轻群体,“强尝鲜欲望”和“高接受能力”让小程序比微信用户群体更偏向年轻化,定制成为了区别他人的一种标志,也成了新富阶层的一种时尚,也很符合小程序的用户群体。





    因此,小编整理出多端合一商城的功能优势在于:



    1.全网营销,可实现对端口对接,无限裂变发展下级,全民代言,打造万人销售团队

    2. 吸粉,转化下级分销商,微分销系统的最大优势就是吸粉,发展下级分销商.基于三级分销裂变模式,发展下级分销商,无下限扩大营销队伍.一变百,百变千,病毒式传播.分销商0成本加入,拉动身边的朋友参与进来,佣金返还的方式激励分销动力

    3. 先进的移动互联网思维,分享竞价,信任式传播,从而得到更快的找到精准消费全体的目的,系统有复销(促进会员二次消费),促销(拼团、秒杀、抢红包、微众筹、微砍价)和股东分红等多种运营模式,更快更好的增加粉丝流量和会员粘度.分销商可以分级别,享受不同的产品折扣,可以发展省、市、县级代理,享受更多的产品返佣

    4. 后台版块完全自定义设置

    自定义设置店铺装修,分销和分红规则,上传商品的图片和参数信息,打造个性化商城

    5. 独立自主运营自己的微店铺

    个性化定制功能,商家和消费者可随时查询订单物流情况,及时调整,自由打印快递单生成快递信息,佣金或者积分可以兑换产品或者提现,赠送粉丝优惠券,会员之间余额积分随机互转,灵活支配
    展开全文
  • 此项目为拼团商城类型,主要功能包括商品分类、商品详情、商品搜索、拼团、订单管理等。 ... 如果觉得对您有帮助,希望给个 star 鼓励一下。...使用 APICloud 多端技术进行开发,实现一套代码多端运行.

    此项目为拼团商城类型,主要功能包括商品分类、商品详情、商品搜索、拼团、订单管理等。
    项目源码在 https://github.com/apicloudcom/group-ec 仓库的 widget 目录下。
    如果觉得对您有帮助,希望给个 star 鼓励一下。

    项目中前端采用 avm多端开发技术进行开发,要点包括 TabLayout 布局、swiper 轮播图、rich-text 富文本、scroll-view 滚动视图、下拉刷新、组件封装等。使用 APICloud 多端技术进行开发,实现一套代码多端运行,支持编译成 Android & iOS App 以及微信小程序。

    项目后端则是使用的 APICloud 数据云 3.0 自定义云函数来构建的。

    在这里插入图片描述

    使用步骤

    1. 使用 APICloud Studio 3 作为开发工具。
    2. 下载本项目源码。
    3. 在开发工具中新建项目,并将本源码导入新建的项目中,注意更新config.xml 中的 appid 为你项目的 appid。
    4. 使用 AppLoader 进行真机同步调试预览。
    5. 或者提交项目源码,并为当前项目云编译自定义 Loader 进行真机同步调试预览。
    6. 云编译 生成 Android & iOS App以及微信小程序源码包。

    如果之前未接触过 APICloud 开发,建议先了解一个简单项目的初始化、预览、调试和打包等操作,请参考APICloud 多端开发快速上手教程

    网络请求接口封装

    在 script/util.js 中,封装了统一的网络请求接口 ajax 方法,对整个项目的请求进行统一管理,包括处理传入参数、拼装完整请求 url、设置请求头等,最后调用 api.ajax 方法发起请求,在请求的回调方法里面还对 cookie 是否过期做了全局判断,过期后会清除本地用户登录信息,并提示重新登录。

    // util.js
    ajax(p, callback) {
       var param = p;
       if (!param.headers) {
           param.headers = {};
       }
       param.headers['X-AppToken'] = UserCenter.getAccessToken();
       if (param.data && param.data.body) {
           param.headers['Content-Type'] = 'application/json; charset=utf-8';
       }
       if (param.url) {
           var baseUrl = 'https://a6047344573226-dev.apicloud-saas.com/api/';
           param.url = baseUrl + param.url;
       }
       api.ajax(param, (res, err)=> {
           let ret = res;
           if (err && err.body && err.body.errCode) {
               ret = err.body;
               callback(ret);
           } else {
               callback(ret, err);
           }
           let sessionExpiration = false;
           if (ret && ret.errCode && ret.errCode>100) {
               sessionExpiration = true;
           }
           if (sessionExpiration) {
               var didShowLogoutAlert = api.getGlobalData({
                   key: 'didShowLogoutAlert'
               });
               if (!didShowLogoutAlert) {
                   api.setGlobalData({
                       key: 'didShowLogoutAlert',
                       value: true
                   });
    
                   UserCenter.setUserInfo('');
                   api.confirm({
                       msg: '登录已失效,请重新登录',
                       buttons: ['取消', '重新登录']
                   }, (ret)=> {
                       api.setGlobalData({
                           key: 'didShowLogoutAlert',
                           value: false
                       });
                       if (ret.buttonIndex == 2) {
                           this.goLogin();
                       }
                   });
               }
           }
       });
    }
    

    用户登录信息管理

    在 script/user.js 中,对用户登录信息进行了封装,做了统一管理,可以方便地判断是否登录、保存和获取用户信息、以及判断登录是否过期的 accessToken 等。

    const UserCenter = {
        isLogin(){
            let access_token = this.getAccessToken();
            return access_token?true:false;
        },
        setUserInfo(userInfo){
            delete userInfo.addtime;
            api.setPrefs({
                key: 'userInfo',
                value: userInfo
            });
            api.setPrefs({
                key: 'access_token',
                value: userInfo.access_token?userInfo.access_token:''
            });
        },
        getUserInfo(){
            let userInfo = api.getPrefs({
                sync: true,
                key: 'userInfo'
            });
            return userInfo?JSON.parse(userInfo):'';
        },
        getAccessToken(){
            return api.getPrefs({
                sync: true,
                key: 'access_token'
            });
        }
    };
    
    export default UserCenter;
    

    TabBar 和导航栏的实现

    首页使用了 TabLayout 布局来实现 TabBar 和导航栏,在 config.xml 里面配置 content 字段,值为 json 文件路径,在 json 文件中配置 TabBar、导航栏和页面信息。

    // config.xml
    <content src="config.json" />
    

    config.json 文件内容如下,设置了 navigationBar 的背景色和标题文字颜色,设置了 tabBar 每项的 icon 和文字,以及每项对应的页面。

    {
      "name": "root",
      "hideNavigationBar": false,
      "navigationBar": {
        "background": "#fff",
        "color": "#000",
        "shadow": "#f1f1f1",
        "hideBackButton": true
      },
      "tabBar": {
        "scrollEnabled": false,
        "background": "#fff",
        "shadow": "#f1f1f1",
        "color": "#aaa",
        "selectedColor": "#339DFF",
        "preload": 0,
        "frames": [{
          "name": "page1",
          "url": "pages/main1/main1.stml",
          "title": "拼团商城"
        }, {
          "name": "page2",
          "url": "pages/main2/main2.stml",
          "title": "分类"
        }, {
          "name": "page4",
          "url": "pages/main4/main4.stml",
          "title": "我的"
        }],
        "list": [{
          "text": "首页",
          "iconPath": "images/common/main1_1.png",
          "selectedIconPath": "images/common/main1.png"
        }, {
          "text": "分类",
          "iconPath": "images/common/main2_1.png",
          "selectedIconPath": "images/common/main2.png"
        }, {
          "text": "我的",
          "iconPath": "images/common/main4_1.png",
          "selectedIconPath": "images/common/main4.png"
        }]
      }
    }
    

    这里”我的“页面隐藏了导航栏,而其它页面没有隐藏。”我的“页面路径为 pages/main4/main4.stml,我们参照微信小程序的语法,在同目录下放置了 main4.json 文件,在里面配置 navigationStyle 字段为 custom。

    {
      "navigationStyle":"custom"
    }
    

    在首页 main1.stml 的 apiready 方法里面则监听了 tabBar 每项的点击事件,在 App 端,我们需要在点击事件里面动态设置页面显示、隐藏导航栏。

    // index.stml
    api.addEventListener({
    	name:'tabitembtn'
    }, function(ret){
    	var hideNavigationBar = ret.index == 2;
    	api.setTabLayoutAttr({
    		hideNavigationBar: hideNavigationBar,
    		animated: false
    	});
    	api.setTabBarAttr({
    		index: ret.index
    	});
    });
    

    轮播图实现

    首页和商品详情页面都使用了轮播图,这里以首页为例,首页路径为 pages/main1/main1.stml,里面轮播图使用 swiper 组件实现,使用 v-for 指令循环 swiper-item,bannersList 为定义的数组类型的属性。这里监听了图片的 click 事件,点击后需要跳转到对应的详情页面。这里使用了自定义的指示器,通过设置指示器容器的 position 定位属性为 absolute,来让指示器显示到当前轮播图的上面。

    <view class="banner_box" style={'height:'+swiperHeight+'px;'}>
    	<swiper class="banner_swiper" circular autoplay11 onchange="fnSwiperChange">
    		<swiper-item v-for="(item_, index_) in bannerList">
    			<image class="banner_img" src={item_.icon} mode="aspectFill" onclick="fnBannerPage" data-index={index_}></image>
    		</swiper-item>
    	</swiper>
    	<view class="banner_dots">
    		<view v-for="(item, index) in bannerList" class={current == index ? 'banner_dot-on' : 'banner_dot'}></view>
    	</view>
    </view>
    

    为保持不同分辨率设备上面图片显示比例不变,需要让轮播图的宽度跟随屏幕宽度变化,高度则通过计算属性 swiperHeight 来动态计算得到。

    computed:{
    	swiperHeight(){
    		return Math.floor((api.winWidth - 30)*0.4+20);
    	}
    }
    

    rich-text 富文本的使用

    在商品详情页中,商品详情部分就是使用的 rich-text 来展示的,使用时如果没为 rich-text 设置高度,其高度就为里面内容的高度。

    <rich-text nodes={html}></rich-text>
    

    rich-text 用于展示 HTML String 片段,在从服务器获取到 HTML String 后,我们调用 $util.fitRichText 方法处理了一下 HTML String,在 fitRichText 方法中为 img 标签加了最大宽度的限制,以防止图片宽度过大导致显示溢出。

    // util.js
    fitRichText(richtext, width){
       var str = `<img style="max-width:${width}px;"`;
       var result = richtext.replace(/\<img/gi, str);
       return result;
    }
    

    下拉刷新、滚动到底部加载更多

    在”分类商品列表“页面(pages/goodslist/goodslist.stml),通过 scroll-view 实现了商品列表展示,同时实现了下拉刷新、滚动到底部加载更多功能。

    <scroll-view class="scroll-view" scroll-y enable-back-to-top refresher-enabled refresher-triggered={refresherTriggered} onrefresherrefresh="onrefresherrefresh" onscrolltolower="onscrolltolower">
    	<list-item v-for="(item) in goodsList" item={item} showOriginalPrice onitemClick="fnOpenDetails"></list-item>
    	<no-data v-if={showNoData} image="../../images/common/nolist.png" desc="暂无商品"></no-data>
    </scroll-view>
    

    下拉刷新使用了 scroll-view 默认的下拉刷新样式,使用 refresher-enabled 字段来开启下拉刷新,为 refresher-triggered 字段绑定了 refresherTriggered 属性来控制下拉刷新状态,需要注意的是,在刷新的事件回调方法里面,我们需要主动设置 refresherTriggered 的值为 true,在数据加载完成后再设置为 false,这样绑定的值有变化,刷新状态才能通知到原生里面。

    onrefresherrefresh(){
    	this.data.refresherTriggered = true;
    	this.getData(false);
    }
    

    滚动到底部监听了 scroll-view 的 scrolltolower 事件,在滚动到底部后自动加载更多数据,加载更多和下拉刷新都是调用 loadData 方法请求数据,通过 loadMore 参数来进行区分,做分页请求处理。

    getData(loadMore){
    	let that = this;
    	if (!loadMore) {
    		that.data.page = 1;
    	}
    	this.data.loading = true;
    	var url = "homes/getGoodsList?classid=" + that.data.classId + "&page=" + that.data.page;
    	$util.ajax({
    		url: url
    	}, function(res, err){
    		if (res && res.errcode == 0) {
    			let list = res.data;
    			that.data.haveMore = list.length > 0;
    			if (loadMore) {
    				that.data.goodsList = that.data.goodsList.concat(list);
    			} else {
    				that.data.goodsList = list;
    			}
    			if (list.length > 0) {
    				that.data.page += 1;
    			}
    		}
    		that.data.loading = false;
    		that.data.refresherTriggered = false;
    		that.data.showNoData = that.data.goodsList.length == 0;
    		$util.hideProgress();
    	});
    }
    

    自定义三级联动城市选择器组件

    在填写收货地址页面(pages/address_edit/address_edit.stml)里面有一需求,为选择收货地址城市区域,为此我们在 picker 组件的基础上封装了一个 region-picker 组件(components/region-picker.stml),使用时监听该组件的 change 事件,就可以获取到选择的城市区域的名称和城市代码。

    // address_edit.stml
    
    <region-picker region={qustr||''} onchange="fnChooseStr"></region-picker>
    
    fnChooseStr(e){
    	let code = e.detail.code;
    	let val = e.detail.value;
    	this.data.quid = code.join(",");
    	this.data.qustr = val.join(",");
    
    }
    

    平台差异化处理

    在多端开发中,难免会遇到不同平台差异化的地方,需要在运行期间做判断处理,为此在 utils/util.js 中封装了 isApp、isMp 方法,里面通过 api.platform 属性判断当前运行环境是 App 端还是小程序端。

    // util.js
    isApp(){
       if (api.platform && api.platform == 'app') {
           return true;
       }
       return false;
    },
    isMp(){
       if (api.platform && api.platform == 'mp') {
           return true;
       }
       return false;
    }
    
    展开全文
  • SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后分离的商城系统, 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员、充值、门店等功能,更适合企业或个人二次开发。 功能: 一...

    简介:

    yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统, 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员、充值、多门店等功能,更适合企业或个人二次开发。


    功能:

    一、商品模块:商品添加、规格设置,商品上下架等
    二、订单模块:下单、购物车、,发货、收货、评价、退款等
    三、营销模块:积分、优惠券、分销、砍价、拼团、秒杀、多门店等
    四、微信模块:自定义菜单、自动回复、微信授权、图文管理、模板消息推送
    五、配置模块:各种配置
    六、用户模块:登陆、注册、会员卡、充值等
    七、其他等


    项目结构:

    项目采用分模块开发方式
    yshop-weixin 微信相关模块
    yshop-common 公共模块
    yshop-admin 后台模块
    yshop-logging 日志模块
    yshop-tools 第三方工具模块
    yshop-generator 代码生成模块
    yshop-shop 商城模块
    yshop-mproot mybatisPlus


    docker部署:

    1、创建一个存储第三方软件服务Docker Compose文件目录:
    mkdir -p /yshop/soft
    2、然后在该目录下新建一个docker-compose.yml文件:
    vim /yshop/soft/docker-compose.yml
    3、接着创建上面docker-compose.yml里定义的挂载目录:
    mkdir -p /yshop/mysql/data /yshop/redis/data /yshop/redis/conf
    4、创建Redis配置文件redis.conf:
    touch /yshop/redis/conf/redis.conf
    5、docker 部署参考根目录docker文件夹
    6、以上创建好之后参考docker下文件,先执行软件安装:
    cd /yshop/soft
    docker-compose up -d 启动
    docker ps -a 查看镜像
    7、运行docker/applicatiion目录下 docker-compose,当然之前一定要打包jar包,构建镜像 切换到Dockerfile 文件下:
    docker build -t yshop-admin .


    网盘下载地址:

    http://kekewl.cc/udtnNsWS2iP0


    图片:



    展开全文
  • 手机端多商户H5商城 包括: 1.客户端(H5): 推荐商户展示、商户店铺、商户发布产编辑品、产品搜索、购物车、收藏、虚拟下单 2.商户后台:商户入驻平台申请、发布编辑产品、订单处理 3.平台方 后台:入驻商户管理...
  • 作者 |萤火科技整理|我是程序汪后端部分虽然是PHP的,但是程序汪建议有研究精神的朋友完全可以重构成Java版本,自己搭建框架的能力也就锻炼出来了新产品发布推荐现已推出 [萤火商城...
  • 一、引言本文将会从整体上介绍 vivo 商城在前端维度的多端统一探索和实践。从多端价值、为什么要做多端统一、如何满足多端业务需求、实践与创新,简洁直白的阐述我们在多端统一上所做的一切。二...
  • 微信小程序商城 开发语言PHP(TP5)开源 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="__STATIC_ROOT__/css/new-index.css" /> ...
  • java版微服务商城 商家入驻商城 SpringCloud+SpringBoot+vue+uniapp 前后分离 b2b2c saas 电子商务源码 电商源码 小程序商城源码 前端框架:VUE、Uniapp、IOS、Android、小程序 核心架构:Spring Cloud、Spring ...
  • PC完整版商城模板在线商城静态页面。包括首页、详情页、列表页、个人中心页等五十个页面
  • ThinkPHP 5.1的商城系统,用户商城电脑+手机版,破解出来了!!大家可以下载学习使用。 看到目前唯一支持商城和社区用户互通的挺好的了,分享给大家。 商淘软件电商系统功能(含手机版) (一) 系统管理:菜单...
  • 酱茄Plus(多端),你的专属圈子小程序,让每个品牌都有自己的粉丝社区,连接客户和粉丝,打造私域流量池,解决网站/公众号活跃与变现难题。 丰富的内容变现方式及运营工具,商城、广告、内容带货、认证体系、资源...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,081
精华内容 432
关键字:

多端商城