WeChat アプレットに基づく電子製品レンタル プラットフォームのソース コード

1. このテーマの研究目的と意義:

 シェア自転車やシェアパワーバンクなどの新しいシェア方法の登場により、人々の注目は徐々にシェアリソースの問題に集まり、一連の研究が行われるようになりました。実際、共有の概念は初期から存在しており、たとえば、クラスメート同士が学習ツールを借り合ったり、隣人同士が備品を借り合ったり、図書館で本を借りたりするなど、すべてが共有されています。しかし、この種の共有は伝統的な方法での共有であり、この種の共有は個人の外部関係ネットワークと個人の信用にのみ基づいています。この方法は簡単、無料、小規模な共有方法です。インターネットの発展に伴い、アイテムの共有方法はますます多くの人々の前に登場し、「無料共有」から、一定の報酬を得る目的で見知らぬ人が一時的に使用する「有料共有」へと変化してきました。

    このシステムは、市場に登場する「ペイドシェアリング」シェアリング方式とキャンパスの実情に基づいて設計されており、フロントエンドの利用者情報管理、注文管理、電子商品管理、バックエンドの注文管理、電子商品管理を備えています。管理、ユーザー情報管理などの機能を提供します。このシステムは、一部の大学生が遊休電子製品を大量に所有している一方、一部のグループではリソースが不足していたり​​、需要のあるリソースが不均衡に配分されているというキャンパス内の問題を解決します。第二に、このシステムは時間、スペース、参加者数などに制限されません。オンラインで電子製品のレンタルプロセスを完全に完了することに基づいて、人的および物的資源の無駄を最小限に抑えます。同時に、学生がリソースを節約するという概念を確立し、リソース配分を最適化するという目的を達成するのに役立ちます。

【596】WeChatアプレットに基づく電子製品レンタルプラットフォームのソースコードと論文提案報告タスクブック

  1. このトピックに関する文献レビュー (1500 ワード以上)

  2.1 研究背景とテーマの現状

共同発展の概念を推進することは、第13次5カ年計画の目標を達成するための主要な措置である。中国共産党中央委員会第13回5カ年総会の報告は、「すべての人民が豊かな生活を享受できるように、共同発展を堅持し、発展の成果を人民が共有しなければならない」と指摘した。共同で開発を構築することでより大きな利益を得ることができます。」李克強氏は「インターネット+」行動計画を提案したが、その中でシェアリングエコノミーは現在広く注目を集め、激しい議論を呼んでいる「インターネット+」の形態である。「大衆起業家精神とイノベーション」の新時代の文脈において、シェアリングエコノミーは新興経済モデルとして社会発展のあらゆる側面に浸透しています。

まず第一に、シェアリングエコノミーは我が国の経済に発展効果をもたらします。既存のリソースの利用効率を効果的に向上させます。現在、中国の過剰生産能力問題は深刻であり、既存資源をいかに活性化するかが大きな課題となっている。シェアリングエコノミーの発展は、こうした遊休資源の活用に活路を提供するものにすぎず、産業報告研究所が2017年に発表した「中国「シェアリングエコノミー」研究報告書」によると、現在シェアリングエコノミーに関わる分野は徐々に拡大している。交通、宿泊、金融にまで拡大し、知識や技能など様々な産業において、我が国のシェアリングエコノミーは2016年に39億4,500万元に達し、我が国のストック資源の利用効率を効果的に向上させています。第二に、仕事を提供し、雇用のチャネルを拡大します。シェアリングエコノミーの発展はより多くの雇用をもたらし、現在の我が国の「就職難」状況の改善につながるだろう。データ報告によると、2016年にシェアリングエコノミープラットフォームで雇用されている人の数は585万人に達し、2015年と比較して85万人増加した。

しかし同時に、シェアリングエコノミーはその発展において障害に遭遇することになる。信用制度は不完全です。シェアリングエコノミーにおける消費の多くは、供給側と需要側という見慣れない2つの主体の間で信頼を確立する必要があり、関連する法律や規制は完璧ではありません。シェアリングエコノミーは、近年急速に出現・発展した新興のものであるが、関連法規制の整備がタイムリーに追いついていず、産業支援設備も不十分である。シェアリングエコノミー自体の特性により、インターネットや物流などのサポート設備に対する要求が高くなります。我が国のインターネットと物流は比較的発達していますが、一部の後進都市や農村部ではインターネットと物流の普及がまだ不十分であり、インターネット料金も高額であるため、より多くの人がシェアリングエコノミーに参加することに影響を及ぼしています。

シェア自転車やシェアパワーバンクなどの新しいシェア方法の登場により、人々の注目は徐々にシェアリソースの問題に集まり、一連の研究が行われるようになりました。実際、共有の概念は初期から存在しており、たとえば、クラスメート同士が学習ツールを借り合ったり、隣人同士が備品を借り合ったり、図書館で本を借りたりするなど、すべてが共有されています。しかし、この種の共有は伝統的な方法での共有であり、この種の共有は個人の外部関係ネットワークと個人の信用にのみ基づいています。この方法は簡単、無料、小規模な共有方法です。インターネットの発展に伴い、アイテムの共有方法はますます多くの人々の前に登場し、「無料共有」から、一定の報酬を得る目的で見知らぬ人が一時的に使用する「有料共有」へと変化してきました。伝統的な意味では、シェアリングエコノミーは、特定の利益を得る目的で、既存のアイテムの使用権を見知らぬ人の手に一時的に渡す商業モデルです。

2.2 プロジェクト研究技術計画

このシステムは、市場に登場する「ペイドシェアリング」シェアリング方式とキャンパスの実情に基づいて設計されており、フロントエンドの利用者情報管理、注文管理、電子商品管理、バックエンドの注文管理、電子商品管理を備えています。管理、ユーザー情報管理などの機能を提供します。このシステムは、一部の大学生が遊休電子製品を大量に所有している一方、一部のグループではリソースが不足していたり​​、需要のあるリソースが不均衡に配分されているというキャンパス内の問題を解決します。第二に、このシステムは時間、スペース、参加者数などに制限されません。オンラインで電子製品のレンタルプロセスを完全に完了することに基づいて、人的および物的資源の無駄を最小限に抑えます。同時に、学生がリソースを節約するという概念を確立し、リソース配分を最適化するという目的を達成するのに役立ちます。

システムは SSM フレームワークを使用しています SSM は標準的な MVC モデルです システム全体は View 層、Controller 層、Service 層、DAO 層の 4 つの層に分かれています リクエストの転送とビューの管理には Spring MVC が使用されます Spring はビジネスを実装しますオブジェクト管理 Mybatis はデータ オブジェクトの永続化エンジンとして機能します。インターフェイスは Vue.js を使用して実装されます。Vue.js は、ユーザー インターフェイスを構築するための進歩的なフレームワークです。他の重量級フレームワークとは異なり、Vue.js はボトムアップのインクリメンタル開発設計を採用しています。Vue.js のコア ライブラリは、ビュー層のみに焦点を当てています。このテクノロジーは学習が簡単であるだけでなく、他のライブラリや既存のプロジェクトとの統合も非常に簡単です。フロントエンド データをグラフの形式で表示する必要がある場合は、EChart.js が使用されます。

EChart.js は、このプロジェクトで使用する予定のグラフィック ライブラリであり、これも HTML5 ベースのグラフィック ライブラリです。これは、中国で比較的人気のあるフロントエンド データ視覚化プラグインです。グラフィックの作成も比較的簡単で、JavaScript を直接引用するだけです。まず、このライブラリのプロジェクトドキュメントは比較的詳細で、各ポイントが明確にマークされており、中国語なので理解しやすいです。次に、このグラフィック ライブラリは非常に豊富なグラフィック セットをサポートし、グラフィックの直接切り替えをサポートしているため、非常に使いやすくなっています。

2.3 結論

電子製品のレンタルプラットフォームを構築すると、遊休または放棄された電子製品がその役割を果たすことができるだけでなく、リソースも最大限に活用できます。なぜなら、大学生というグループは、強い流動性、多様化した個人ニーズ、さまざまな個人の手頃な消費量という特徴を持っているからです。その結果、ニーズはあるものの、電子製品を購入するために多額のお金を費やすほどの余裕がない学生もいます。一部の学生グループは大量の電子製品リソースを所有することができ、電子製品に対する個人的なニーズ、特定の側面での短期的な有用性などにより、電子製品は所有者のニーズに応じて徐々に遊休され、放棄されます。電子製品レンタル プラットフォームを通じて、電子製品の相互運用性とリモート共有という目的を達成するために、遊休および放棄されたリソースを再利用できます。これは、使用されていないときに物品をリースして家賃を得ることができるという貸主の要件を満たすだけでなく、必要な電子製品をより低コストで使用する権利を取得するという借主の要件も満たします。全体として、それはキャンパスの大学生の省資源消費概念と消費習慣の変化を促進するだけではありません。さらに重要なことは、アイテムの資源のリサイクルと共有を実現できることです。これにより、生産者は電子製品の品質と信頼性にさらに注意を払うようになり、資源のより適切な配分が達成され、我が国の経済構造の供給側改革の要件が満たされます。

2.4 参考文献リスト

[1] シェアリングエコノミー: 伝統的な経済モデルの破壊 [J]. Liu Genrong. エコノミスト. 2017(05)

[2] 我が国におけるシェアリングエコノミーの発展状況と対策 [J]. Huo Wenqian. Times Finance. 2018(20)

[3] シェアリングエコノミーを中心としたインターネット金融の革新を探る [J]. Shi Bingyan. 中国国際金融 (中国語、英語). 2018(04)

[4] Rajendra Kumar Roul.A nifty review to text summarization-based recommendation system for electronic products[J]. Soft Computing.2019(24)

[5]Vue.js前端开发快速入门应用[M]. 人民邮电出版社 , 陈陆扬, 2017

[6]深入浅出Vue.js[M]. 人民邮电出版社 , 刘博文, 2019

[7] 胡瑞娟.软件程.大数据架构下的热词发现与可视化技术研究[J]. 2018(05)

[8]基于FreeMarker、ECharts以及SSM的数据可视化平台[J].电脑编程技巧与维护. 夏禹.2019(07)

[9]李先静,张晓梅,李小燕,刘福.校园闲置物品短租平台的研究[J].计算机产品与流通,2019(11):236.

[10]Quan Yuan,Bin Shen. Renting fashion with strategic customers in the sharing economy[J]. International Journal of Production Economics.2019,218.

[11]Alessandro Barattieri. Risk sharing, efficiency of capital allocation, and the connection between banks and the real economy[J]. Journal of Corporate Finance,2019.

[12]马忠贵.大数据背景下“数据库技术及应用”课程体系优化与实践[J].教育现代化,2019,6(68):95-97+106.

[13]李晓华,孙锋申.SQL Server数据库混合式教学设计与研究[J].中国多媒体与网络教学学报(中旬刊),2019(06):7-8.

package com.csmaxwell.srent.core.system;

import com.csmaxwell.srent.core.util.SystemInfoPrinter;
import com.csmaxwell.srent.db.service.SrentSystemConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 系统启动服务,用于设置系统配置信息、检查系统状态及打印系统信息
 */
@Component
class SystemInistService {
    private SystemInistService systemInistService;


    @Autowired
    private Environment environment;

    @PostConstruct
    private void inist() {
        systemInistService = this;
        initConfigs();
        SystemInfoPrinter.printInfo("Srent 初始化信息", getSystemInfo());
    }


    private final static Map<String, String> DEFAULT_CONFIGS = new HashMap<>();
    static {
        // 小程序相关配置默认值
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_NEW, "6");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_HOT, "6");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_BRAND, "4");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_TOPIC, "4");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_CATLOG_LIST, "4");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_CATLOG_GOODS, "4");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_SHARE, "false");
        // 运费相关配置默认值
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_EXPRESS_FREIGHT_VALUE, "8");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_EXPRESS_FREIGHT_MIN, "88");
        // 订单相关配置默认值
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_UNPAID, "30");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_UNCONFIRM, "7");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_COMMENT, "7");
        // 订单相关配置默认值
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_NAME, "srent");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_ADDRESS, "上海");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_PHONE, "021-xxxx-xxxx");
        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_QQ, "738696120");
    }

    @Autowired
    private SrentSystemConfigService srentSystemConfigService;

    private void initConfigs() {
        // 1. 读取数据库全部配置信息
        Map<String, String> configs = srentSystemConfigService.queryAll();

        // 2. 分析DEFAULT_CONFIGS
        for (Map.Entry<String, String> entry : DEFAULT_CONFIGS.entrySet()) {
            if(configs.containsKey(entry.getKey())){
                continue;
            }

            configs.put(entry.getKey(), entry.getValue());
            srentSystemConfigService.addConfig(entry.getKey(), entry.getValue());
        }

        SystemConfig.setConfigs(configs);
    }

    private Map<String, String> getSystemInfo() {

        Map<String, String> infos = new LinkedHashMap<>();

        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 0, "系统信息");
        // 测试获取application-db.yml配置信息
        infos.put("服务器端口", environment.getProperty("server.port"));
        infos.put("数据库USER", environment.getProperty("spring.datasource.druid.username"));
        infos.put("数据库地址", environment.getProperty("spring.datasource.druid.url"));

        infos.put("对象存储", environment.getProperty("srent.storage.active"));
        infos.put("本地对象存储路径", environment.getProperty("srent.storage.local" +
                ".storagePath"));
        infos.put("本地对象访问地址", environment.getProperty("srent.storage.local" +
                ".address"));
        infos.put("本地对象访问端口", environment.getProperty("srent.storage.local" +
                ".port"));

        // 微信相关信息
        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 2, "微信相关");
        infos.put("微信APP KEY", environment.getProperty("srent.wx.app-id"));
        infos.put("微信APP-SECRET", environment.getProperty("srent.wx" +
                ".app-secret"));


        return infos;
    }
}

 

package com.csmaxwell.srent.core.storage;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;

import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
import java.util.stream.Stream;

public class QiniuStorage implements Storage {

    private String endpoint;
    private String accessKey;
    private String secretKey;
    private String bucketName;
    private Auth auth;
    private UploadManager uploadManager;
    private BucketManager bucketManager;

    public String getEndpoint() {
        return endpoint;
    }

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public String getAccessKey() {
        return accessKey;
    }

    public void setAccessKey(String accessKey) {
        this.accessKey = accessKey;
    }

    public String getSecretKey() {
        return secretKey;
    }

    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    /**
     * 七牛云OSS对象存储简单上传实现
     */
    @Override
    public void store(InputStream inputStream, long contentLength, String contentType, String keyName) {
        if (uploadManager == null) {
            if (auth == null) {
                auth = Auth.create(accessKey, secretKey);
            }
            uploadManager = new UploadManager(new Configuration());
        }

        try {
            String upToken = auth.uploadToken(bucketName);
            Response response = uploadManager.put(inputStream, keyName, upToken, null, contentType);
        } catch (QiniuException ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public Stream<Path> loadALL() {
        return null;
    }

    @Override
    public Path load(String keyName) {
        return null;
    }

    @Override
    public Resource loadAsResource(String keyName) {
        try {
            URL url = new URL(generateUrl(keyName));
            Resource resource = new UrlResource(url);
            if (resource.exists() || resource.isReadable()) {
                return resource;
            } else {
                return null;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public void delete(String keyName) {
        if (bucketManager == null) {
            if (auth == null) {
                auth = Auth.create(accessKey, secretKey);
            }
            bucketManager = new BucketManager(auth, new Configuration());
        }

        try {
            bucketManager.delete(bucketName, keyName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public String generateUrl(String keyName) {
        return endpoint + "/" + keyName;
    }
}

おすすめ

転載: blog.csdn.net/weixin_46437112/article/details/135333092