当前位置:网站首页>Xiaomeng 5W a reçu un petit programme de boîte aveugle et a terminé le développement en trois semaines!

Xiaomeng 5W a reçu un petit programme de boîte aveugle et a terminé le développement en trois semaines!

2021-10-14 06:41:08 Je suis springmeng.

Les jeunes d'aujourd'hui savent vraiment jouer,Quelque chose de plus en plus nouveau sort,Quelque chose de plus en plus amusant est à la mode.

C'est comme un étalage de boîtes aveugles récemment en feu.

Sérieusement.,Je ne savais pas ce que c'était avant.

Il y a un fan qui m'a demandé de développer l'applet Blind Box,Pour ça, je suis allé au stand et j'ai acheté des boîtes aveugles pour jouer!

C'est amusant.,C'est intéressant..
 

Puis je suis allé sur Internet et j'ai regardé,Beaucoup d'entreprises poussent des boîtes aveuglesappOu applet.

Par exemple, l'applet de boîte aveugle de Netease,Je suiscsdnMise à jour de l'article,Ils reçoivent souvent des notifications de leurs applets en boîte aveugle.

 Voici ce que j'ai développé:

Photos

 

 

 

 

 

Voici une brève introduction à cette petite application . Il y a beaucoup de choses centrales , Il n'y a peut - être pas de moyen de le rendre public. .

Table des matières

Un.,Réalisation technique:

2.,Code de base

Trois, Base de données centrale

Quatre,Positionnement du marché:

Cinq, Suggestion de xiaomeng :


Un.,Réalisation technique:

Parce que le client n'a pas d'exigences techniques , C'est une technologie que j'ai l'habitude d'utiliser. , Peu importe ce qui est nouveau. . 

Cadre de fond:SpringBoot,

Base de données Mysql,

Utilisé par les pages de fond VueDéveloppement,

Pour le cacheRedis,

Les moteurs de recherche utilisent elasticsearch,

ORMCadre stratifié:MyBatis,

Pool de connexion:Druid,

Sous - entrepôt sous - Tableau:MyCat,

Autorité:SpringSecurity,

Contrôle de la qualité du Code :sonar.

2.,Code de base

@Controller
@RequestMapping("/addressInfo")
public class AddressInfoController extends BaseController {

    @Resource
    private 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")
    @ResponseBody
    public ReturnDataForLayui getList(AddressInfo addressInfo) {
        addressInfo.setIsDeleted(PageBean.isDeletedNo);
        return addressInfoService.getList(addressInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/add")
    @ResponseBody
    public ReturnData add(AddressInfo addressInfo) {
        return addressInfoService.add(addressInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/update")
    @ResponseBody
    public ReturnData update(AddressInfo addressInfo) {
        return addressInfoService.update(addressInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/updateDelete")
    @ResponseBody
    public ReturnData updateDelete(AddressInfo addressInfo) {
        addressInfo.setIsDeleted(PageBean.isDeletedYes);
        return addressInfoService.updateDelete(addressInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/updateDeleteBatch")
    @ResponseBody
    public 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 {

	@Resource
	protected ServletContext servletContext;
	@Resource
	protected RedisUtils redisUtils;

}
@RequestMapping("/blindBoxInfo")
public class BlindBoxInfoController extends BaseController {

    @Resource
    private 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")
    @ResponseBody
    public ReturnDataForLayui getList(BlindBoxInfo blindBoxInfo) {
        blindBoxInfo.setIsDeleted(PageBean.isDeletedNo);
        return blindBoxInfoService.getList(blindBoxInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/add")
    @ResponseBody
    public ReturnData add(BlindBoxInfo blindBoxInfo) {
        return blindBoxInfoService.add(blindBoxInfo);
    }
@Controller
@RequestMapping("/goodsInfo")
public class GoodsInfoController extends BaseController {

    @Resource
    private 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")
    @ResponseBody
    public ReturnDataForLayui getList(GoodsInfo goodsInfo) {
        goodsInfo.setIsDeleted(PageBean.isDeletedNo);
        return goodsInfoService.getList(goodsInfo);
    }

    @MustSetForOrderNoAnnotation
    @AuthenticationAnnotation
    @RequestMapping("/add")
    @ResponseBody
    public ReturnData add(GoodsInfo goodsInfo) {
        return goodsInfoService.add(goodsInfo);
    }

Trois, Base de données centrale

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 'Clé primaireid',
  `person_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Nom',
  `phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Téléphone',
  `gender` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Sexe',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Adresse',
  `user_id` bigint(19) NOT NULL COMMENT 'Utilisateurs',
  `is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'Supprimer ou non',
  `gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT 'Temps de création',
  `gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT 'Mise à jour',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = ' Adresse de réception ' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of address_info
-- ----------------------------
INSERT INTO `address_info` VALUES (1, 'zhy', '18034272031', '2', 'Province de Hebei  Hengshui City ', 1, '0', '2021-09-08 14:39:49', '2021-09-08 15:37:20');
INSERT INTO `address_info` VALUES (2, ' ZHANG Hongyu ', '18034272031', '2', 'Pékin District de Haidian  En face du bâtiment CCTV   Bâtiment four  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 'Clé primaireid',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Titre',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Description',
  `price` bigint(19) NOT NULL COMMENT 'Prix unitaire',
  `sort` int(9) NOT NULL COMMENT 'Trier',
  `is_on_sale` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'Sur les étagères',
  `goods_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Probabilité',
  `is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'Supprimer ou non',
  `gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT 'Temps de création',
  `gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT 'Mise à jour',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = ' Informations sur la boîte aveugle ' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of blind_box_info
-- ----------------------------
INSERT INTO `blind_box_info` VALUES (1, ' Optimus Prime recharge ', ' Transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur transformateur “ Carte de visite ”', 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, 'PommesiPhone Pur ', ' Iphone portable tablette Headset ', 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, ' Brûlez la vie. ! Vos possibilités sont infinies. ,N'importe quoi', ' Une nouvelle sculpture d'os avec une limite de probabilité !', 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 'Clé primaireid',
  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Chemin',
  `file_size` bigint(19) NULL DEFAULT NULL COMMENT 'Taille',
  `data_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Source:',
  `is_deleted` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'Supprimer ou non',
  `gmt_create` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT 'Temps de création',
  `gmt_update` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT 'Mise à jour',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 102 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = ' Téléchargement de fichiers ' ROW_FORMAT = Dynamic;

-- ----------------------------

Quatre,Positionnement du marché:

Quel est le plus grand marché? ?

Les personnes âgées doivent être en bonne santé , Les femmes veulent être belles , Les hommes doivent gagner de l'argent. !

Le client cible est une femme. , Le produit est un produit cosmétique , Et c'est du maquillage haut de gamme. .

 

Les cosmétiques que ma femme utilise souvent , J'ai cherché dans l'Est. , Une petite bouteille de maquillage, c'est de l'argent pour une paire de chaussures. , J'ai mal au cœur. ,nnd, J'a I une paire de chaussures de basket. , C'est déjà fait. 7Ça fait un an.. J'ai vu les ventes s'effondrer. .

Plus de 100 millions en un mois .

Il n'y a absolument aucun problème avec le marché choisi par le client , Et le jeu est amusant. . J'ai déjà joué. CF Jeu de loterie , Je ne sais pas combien de Rounds on a joués. .

Alors le client m'a dit: , Ils ont besoin de financement pour le premier tour. 2000w, S'il y a un vrai drame, .

Le marché des cosmétiques est trop grand .

C'est ça., Si vous voulez que je développe , Je voudrais déclarer ce qui suit: :

On n'a pas le rhume du marché. , Nous développons juste ! C'est pour ça que tu m'as demandé de le développer. , Je ne me joins pas à vous. , Je ne fais que développer , Pas besoin de me peindre. . Donnez - moi les frais de développement. .

C'est clair., Je veux juste que je le développe gratuitement. , Il y a toujours quelqu'un qui me fait des gâteaux. ,Je suis désolé., J'ai mal à l'estomac ces derniers temps. , Je ne peux pas digérer le gâteau. .

Photos

Mais le risque de démarrer une entreprise est grand. . J'ai beaucoup de travail de développement devant moi. , Parmi les nombreux produits entrepreneuriaux , Un seul a réussi. .

Un site de rencontres en chinois pour un étudiant étranger .

Jour et heure、Dilly、Les gens et, Il y a eu un feu soudain. , Un an de profit 500w.

Autres99%Produits développés,La plupart d'entre euxggC'est.

Certains produits ideaC'est bien, Le marché est bon aussi. , Mais la promotion coûte cher. . Les gens ordinaires ne peuvent pas se le permettre. .

Le pire patron. , Nous avons développé un marché du travail pour lui APP, Le marché est énorme. . Le patron s'est effondré avec espoir. 300w Frais de promotion , Les frais de développement nous ont ruinés. 20w.

Malheureusement,, L'argent a fini par couler. .

J'ai fini par enquêter sur la cause. , Ça déprime le patron. :

Frères des travailleurs migrants , Je n'aime pas l'utiliser. app. Si vous utilisez un processus complexe ,Encore moins.. Et la promotion exige de l'argent. .

Le patron a craché du sang. ……

Cinq, Suggestion de xiaomeng :

C'est bon.idea, Nous pouvons développer ,Mais,Mais……

Un produit réussi exige de la chance , Plus besoin d'injection de capital , Besoin d'une occupation rapide .

Ali a aussi fait des logiciels sociaux. , Tencent a également fait du commerce électronique ,Le son tremblant est brûlant, Tencent de la micro - vision à la vidéo ………

Un produit réussi prend des jours 、Dilly、Les gens et,Il ne manque rien.

En général, Le produit n'est pas assez dur , Uniquement mis sur le marché , L'expérience utilisateur est le roi . Et les autres? idea Parfois, c'est des conneries. .

Je suis Meng.,Partager une variété d'expériences de projet et de matériel d'entrevue.

On fait des progrès ensemble.

Demande un triple lien,- Oui.,Collection,Plus de mises à jour sur les produits secsing: 

 

Si vous voulez apprendre le développement d'applets,J'ai enregistré un tutoriel détaillé,Prends ça..Réponse:Applet en action

 TutorielsRechercher ci - dessous Numéro public Accès

 

版权声明
本文为[Je suis springmeng.]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/10/20211014063824066M.html

随机推荐