现在的年轻人是真的会玩,越来越新的东西出来,越来越好玩的东西流行。

就像最近很火的地摊盲盒。

讲真的,这之前我都不知道盲盒是啥。

前面有个粉丝让我开发盲盒小程序,为此我还去地摊上找摊位买了几个盲盒玩玩!

很好玩,很有意思。

然后我我去网上看了下,很多的公司都在推盲盒的app或者小程序。

例如网易的盲盒小程序,我一直在csdn更新文章,经常收到他们的盲盒小程序的通知。

 下面是我开发的:

下面和大家简单的介绍下开发的这个小程序。有很多核心的地方,可能没办法公开。

目录

一,技术实现:

二,核心代码

三,核心数据库

四,市场定位:

五,小孟建议:


一,技术实现:

因为客户没有技术方面的要求,那就按照我习惯用的技术开发的,无所谓什么最新不最新技术了。

后台框架:SpringBoot,

数据库采用的Mysql,

后端的页面采用的Vue进行开发,

缓存用的Redis,

搜索引擎采用的是elasticsearch,

ORM层框架:MyBatis,

连接池:Druid,

分库分表:MyCat,

权限:SpringSecurity,

代码质量检查:sonar。

二,核心代码

@Controller
@RequestMapping("/addressInfo")
public class AddressInfoController extends BaseController {@Resourceprivate AddressInfoService addressInfoService;@MustSetForOrderNoAnnotation@AuthenticationAnnotation@SetMenuAnnotation@RequestMapping("listPage")public ModelAndView listPage(ModelAndView modelAndView) {modelAndView.setViewName("addressInfo/list");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("addPage")public String addPage() {return "addressInfo/add";}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("editPage")public ModelAndView editPage(ModelAndView modelAndView, Long id) {modelAndView.addObject("id", id);modelAndView.setViewName("addressInfo/edit");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/getList")@ResponseBodypublic ReturnDataForLayui getList(AddressInfo addressInfo) {addressInfo.setIsDeleted(PageBean.isDeletedNo);return addressInfoService.getList(addressInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/add")@ResponseBodypublic ReturnData add(AddressInfo addressInfo) {return addressInfoService.add(addressInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/update")@ResponseBodypublic ReturnData update(AddressInfo addressInfo) {return addressInfoService.update(addressInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/updateDelete")@ResponseBodypublic ReturnData updateDelete(AddressInfo addressInfo) {addressInfo.setIsDeleted(PageBean.isDeletedYes);return addressInfoService.updateDelete(addressInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/updateDeleteBatch")@ResponseBodypublic ReturnData updateDeleteBatch(String ids) {List<Long> idList = JSON.parseArray(ids, Long.class);return addressInfoService.updateDeleteBatch(idList);}
package com.cnewdream.controller;import com.cnewdream.utils.ReturnData;
import com.cnewdream.utils.RedisUtils;import javax.annotation.Resource;
import javax.servlet.ServletContext;
public class BaseController {@Resourceprotected ServletContext servletContext;@Resourceprotected RedisUtils redisUtils;}
@RequestMapping("/blindBoxInfo")
public class BlindBoxInfoController extends BaseController {@Resourceprivate BlindBoxInfoService blindBoxInfoService;@MustSetForOrderNoAnnotation@AuthenticationAnnotation@SetMenuAnnotation@RequestMapping("listPage")public ModelAndView listPage(ModelAndView modelAndView) {modelAndView.setViewName("blindBoxInfo/list");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("addPage")public String addPage() {return "blindBoxInfo/add";}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("editPage")public ModelAndView editPage(ModelAndView modelAndView, Long id) {modelAndView.addObject("id", id);modelAndView.setViewName("blindBoxInfo/edit");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("goodsLevelEditPage")public ModelAndView goodsLevelEditPage(ModelAndView modelAndView, Long id) {BlindBoxInfo blindBoxInfo = new BlindBoxInfo();blindBoxInfo.setId(id);ReturnDataForLayui list = blindBoxInfoService.getList(blindBoxInfo);ArrayList<BlindBoxInfo> blindBoxInfos = (ArrayList<BlindBoxInfo>) list.getData();BlindBoxInfo blindBoxInfoDb = blindBoxInfos.get(0);String goodsLevel = blindBoxInfoDb.getGoodsLevel();GoodsLevelInfo goodsLevelInfo = JSONUtils.json2pojo(goodsLevel, GoodsLevelInfo.class);if (goodsLevelInfo == null) {goodsLevelInfo = new GoodsLevelInfo();}goodsLevelInfo.setId(id);modelAndView.addObject("goodsLevelInfo", goodsLevelInfo);modelAndView.setViewName("blindBoxInfo/goodsLevelEdit");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/getList")@ResponseBodypublic ReturnDataForLayui getList(BlindBoxInfo blindBoxInfo) {blindBoxInfo.setIsDeleted(PageBean.isDeletedNo);return blindBoxInfoService.getList(blindBoxInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/add")@ResponseBodypublic ReturnData add(BlindBoxInfo blindBoxInfo) {return blindBoxInfoService.add(blindBoxInfo);}
@Controller
@RequestMapping("/goodsInfo")
public class GoodsInfoController extends BaseController {@Resourceprivate GoodsInfoService goodsInfoService;@MustSetForOrderNoAnnotation@AuthenticationAnnotation@SetMenuAnnotation@RequestMapping("listPage")public ModelAndView listPage(ModelAndView modelAndView, Long blindId) {modelAndView.setViewName("goodsInfo/list");modelAndView.addObject("blindId", blindId);return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("addPage")public ModelAndView addPage(ModelAndView modelAndView, Long blindId) {modelAndView.addObject("blindId", blindId);modelAndView.setViewName("goodsInfo/add");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("editPage")public ModelAndView editPage(ModelAndView modelAndView, Long id) {modelAndView.addObject("id", id);modelAndView.setViewName("goodsInfo/edit");return modelAndView;}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/getList")@ResponseBodypublic ReturnDataForLayui getList(GoodsInfo goodsInfo) {goodsInfo.setIsDeleted(PageBean.isDeletedNo);return goodsInfoService.getList(goodsInfo);}@MustSetForOrderNoAnnotation@AuthenticationAnnotation@RequestMapping("/add")@ResponseBodypublic ReturnData add(GoodsInfo goodsInfo) {return goodsInfoService.add(goodsInfo);}

三,核心数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for address_info
-- ----------------------------
DROP TABLE IF EXISTS `address_info`;
CREATE TABLE `address_info`  (`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',`person_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',`phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '电话',`gender` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '性别',`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址',`user_id` bigint(19) NOT NULL COMMENT '用户',`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否删除',`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '收货地址信息' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of address_info
-- ----------------------------
INSERT INTO `address_info` VALUES (1, 'zhy', '18034272031', '2', '河北省 衡水市', 1, '0', '2021-09-08 14:39:49', '2021-09-08 15:37:20');
INSERT INTO `address_info` VALUES (2, '张红雨', '18034272031', '2', '北京市 海淀区 中央电视台大楼对面 富尔大厦 3008', 1, '0', '2021-09-08 15:21:00', '2021-09-08 15:37:00');-- ----------------------------
-- Table structure for blind_box_info
-- ----------------------------
DROP TABLE IF EXISTS `blind_box_info`;
CREATE TABLE `blind_box_info`  (`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标题',`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',`price` bigint(19) NOT NULL COMMENT '单价',`sort` int(9) NOT NULL COMMENT '排序',`is_on_sale` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否上架',`goods_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '概率',`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否删除',`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '盲盒信息' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of blind_box_info
-- ----------------------------
INSERT INTO `blind_box_info` VALUES (1, '擎天柱重装上阵', '变形金刚变身“咔咔咔咔咔咔”', 1, 0, '1', '{\"id\":1,\"level1\":25,\"level2\":25,\"level3\":25,\"level4\":25}', '0', '2021-09-02 17:21:15', '2021-09-19 13:30:47');
INSERT INTO `blind_box_info` VALUES (2, '苹果iPhone纯享', '苹果手机笔记本平板主机耳机', 1, 0, '1', '{\"id\":2,\"level1\":0.01,\"level2\":0.01,\"level3\":0.01,\"level4\":99.97}', '0', '2021-09-02 17:35:39', '2021-09-19 13:30:48');
INSERT INTO `blind_box_info` VALUES (3, '燃烧生命吧!你的可能性是无限可能,无所不能', '概率所得限量真骨雕新品!', 11, 1, '1', '{\"id\":3,\"level1\":0.01,\"level2\":0.02,\"level3\":0.03,\"level4\":99.94}', '0', '2021-09-02 17:53:36', '2021-09-12 21:44:13');
INSERT INTO `blind_box_info` VALUES (4, '111', '111', 1100, 1, '1', '{\"id\":null,\"level1\":25,\"level2\":25,\"level3\":25,\"level4\":25}', '0', '2021-09-19 13:32:10', '2021-09-19 13:32:27');-- ----------------------------
-- Table structure for file_upload_info
-- ----------------------------
DROP TABLE IF EXISTS `file_upload_info`;
CREATE TABLE `file_upload_info`  (`id` bigint(19) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路径',`file_size` bigint(19) NULL DEFAULT NULL COMMENT '大小',`data_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '来源',`is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否删除',`gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',`gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文件上传信息' ROW_FORMAT = Dynamic;-- ----------------------------

四,市场定位:

要说什么市场最大?

老人要健康,女人要美丽,男人要赚钱!

客户目标客户就是女人,产品是化妆产品,而且是高端化妆产品。

我老婆经常用的化妆品,特意去某东上搜索了下,一小瓶化妆水就是一双球鞋的钱,我好心疼,nnd,我一双球鞋,已经穿7年了。看到销量我裂开了。

一个月过亿。

客户的这次选择的市场绝对是没有问题的,而且游戏很好玩。我原来玩过CF的抽奖游戏,不知道玩了多少轮。

所以客户给我说,他们第一轮要融资2000w,如果搞起来真的有戏。

化妆品的市场太大了。

对了,如果您要找我开发,我要声明以下:

我们对市场一点不感冒,我们只是开发!所以你找我开发,我不加入你的合伙,我只是开发,也不用给我画饼。给我开发的费用即可。

说白了,就想让我免费开发,隔三差五的总有人给我画饼,对不起,我胃最近不好,消化不了大饼。

不过创业的风险很大。我前面接了了很多开发的活,在众多创业的产品中,只有一个人成功了。

给一个留学生做的一个中文交友的网站。

天时、地利、人和,就突然火了,一年利润达到了500w。

其他的99%开发的产品,大部分都gg了。

有的产品的idea很好,市场也很好,但是推广需要极大的费用。一般人是玩不起的。

最惨的一个老板,我们给他开发了一个劳务市场的APP,市场巨大。老板满怀希望的砸了300w推广费,开发费用给我们砸了20w。

不幸的是,最后钱全打水漂了。

最后调查了很久的原因,让老板很郁闷:

农民工兄弟,一般不喜欢用app。如果使用的流程复杂,更不会用。而且推广需要不断的砸钱。

老板直接喷血……

五,小孟建议:

有好的idea,我们可以开发,但是,但是……

成功的产品需要运气,更需要资本的注入,需要快速占领。

阿里也过做社交软件,腾讯也做过电子商城,抖音很火,腾讯从微视到视频号………

成功的产品需要天时、地利、人和,缺一不可。

总的来说,产品够不够硬,只有投放到市场,让用户体验才是王道。至于其他的什么idea有时候就是扯淡。

我是小孟,分享各种项目经验和面试资料。

一起加油进步。

求个三连,点赞,收藏,更多干货的更新ing: 

如果也想学习小程序的开发,我录制了一个详细的教程,下面领取。回复:小程序实战

小孟5w接了个盲盒小程序,三周开发完毕相关推荐

  1. 小程序源码:修复登录大河盲盒小程序源码,实现运营“玩法自由”,超多功能的盲盒型抽奖挖矿程序源码下载

    程序介绍 应用支持哪些类型的商品? 1.实物需邮寄商品,用户领取时填写收货信息,后台发货. 2.虚拟商品,如:教程.课程.图文.图片.下载链接等等. 3.卡密商品,后台添加卡密商品,填写使用方法.批量 ...

  2. 盲盒小程序的开发功能介绍,优势有哪些

    现如今,盲盒非常受大众的青睐,盲盒抽选是以人们的好奇心为出发点而设计的新玩法.在移动互联网+时代,作为网络营销平台中的盲盒已然成为一种新的消费需求.随之而来的盲盒小程序开发.盲盒商城开发等逐渐成为商家 ...

  3. 聊一下盲盒app开发 盲盒小程序开发

    现如今,盲盒非常受大众的青睐,盲盒抽选是以人们的好奇心为出发点而设计的新玩法. 在移动互联网+时代,作为网络营销平台中的盲盒已然成为一种新的消费需求.随之而来的盲盒小程序开发.盲盒商城开发等逐渐成为商 ...

  4. 风口上的线上盲盒小程序

    盲盒商城app开发,泡泡玛特软件开发,盲盒软件开发,盲盒app开发.近期总有粉丝在公众号上问我,如何开发盲盒app,各大商场地铁口能够看到很多机器在售卖,里面是一个个密封起来的盒子,购买打开会是不确定 ...

  5. 交友盲盒小程序版本 全开源版本kxdao首发(已更新)

    简介: 前段时间花钱买的小程序源码 感觉太单调了 全开源版本小程序 这个小程序是云开发的不需要服务器域名 支持流量主wx支付.超级能吸引年轻人的一款小程序 版本新增: 1.Ui美化 2.星座匹配(通过 ...

  6. 盲盒小程序源码最新版UI

    盲盒小程序源码最新版 1. 相对于线下盲盒,线上功能玩法更加丰富,同时拥有分享系统,分享奖励机制,用户介绍用户可获得积分奖励,推广更加简单方便,用户增长更加迅速: 2. 线上盲盒没有产品类别限制,可以 ...

  7. H5盲盒商城网站源码开发小程序抽奖系统商城搭建 VUE+PHP后台项目

    这是H5盲盒商城网站源码开发小程序抽奖系统商城搭建 VUE+PHP后台项目(代码不加密,开源) 1.带推广二维码功能 2.含充值3级分销功能 3.盲盒回收成余/额功能 等功能 可以个性化定制开发等 源 ...

  8. 细数线上盲盒小程序的开发小秘诀

    前段时间,敦煌研究院在天猫首家发售天龙八部盲盒,再度引发盲盒热潮,现在的盲盒项目已经火到什么程度了呢? 除了机票盲盒.奶茶盲盒.图书盲盒等盲盒模式,调色师.HARMAY等美妆集合店也纷纷开启盲盒营销, ...

  9. 交友盲盒脱单盲盒小程序源码【源码好又多】

    " 关键句:  "交友盲盒 脱单盲盒 小程序" 简介: 最近很火的一元交友,大家应该不陌生吧- 月老在线牵盲盒 交友盲盒 一元交友 存取小纸条盲盒交友匹配交友趣味交友同城 ...

最新文章

  1. linux 新建用户(添加ssh用户两者方式一样)
  2. java四子棋实验报告_Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
  3. bash: /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc: 没有那个文件或目录。...
  4. 大数据将如何重构汽车产业的商业模式?
  5. 人类究竟有多喜欢看热闹?! | 今日最佳
  6. UVA - 514:Rails
  7. 包含对流环热,热流边界,等温边界的稳态热传导方程的FEM求解。
  8. SpringBoot笔记整理(三)
  9. centos 安装低版本内核_Docker安装教程
  10. linux 安装mysql 云盘_linux下 安装mysql教程
  11. 第一个计算机病毒出现在哪个年代,计算机病毒最早是由什么提出的
  12. python免费教程发布页
  13. 磨刀不误砍柴工——模板方法模式
  14. 彪悍的人生不需要解释,需要解释的人生是软弱的
  15. windows11账户登录不上去怎么办?
  16. linux系统 安装hp驱动怎么安装,Linux下安装HP打印机的驱动程序
  17. 多元函数第二:线性空间(2)子空间与生成空间
  18. wms仓库管理软件的七大产品特点
  19. 个人第一篇博客——自我介绍
  20. 安装【银河麒麟V10】linux系统

热门文章

  1. 如何申请Office 365 E5开发者账号,开通OneDrive 5T空间教程
  2. 23种设计模式-个人笔记(三)
  3. 计算机切换器鼠标反应慢,kvm切换器故障操作解决方法详解
  4. html中设置粗斜体,HTML基础 b i 字体加粗 斜体
  5. 数据库事务Transaction)那点事
  6. python笛卡尔坐标系_THREE笛卡尔右手坐标系详解
  7. 六度分离(Floyd算法)
  8. 基于matlab的系统校正,基于MATLAB的控制系统校正_毕业论文
  9. 量化投资与python语言_在量化投资领域,为什么Python如此受欢迎?
  10. 【评测】MP SARS-CoV-2单抗、重组蛋白