【招募】大确幸现在开始招募1000位群主,单身的你快来看看吧

大确幸一个聚合百万单身年青的社群,更是一个有温度的社区,宗旨是帮更多适龄单身青年解决单身问题。

【为什么招募群主?】

大家知道,我们在9月份短信上线初期,我们建了1000个高校脱单群,经过两个月的沉淀,陆陆续续积累了一定的人气。由于短信这款产品还处在初级成长阶段,很多功能不是特别理想,不方便我们今后活动运营。现在考虑我们将同步1000个高校脱单微信群。

特此招募1000个群主,大家一起运营社群,一起成长,帮助更多同学脱单。

 

【招募条件】

1、人品正直,有责任心,乐于分享和奉献;

2、热爱社群,每天能抽出时间来维持社群的正常运营;

3、愿意学习互联网社群运营知识;

4、加分项:有自媒体账号或带领过社群者优先;

5、男女不限,我们欢迎每一个有责任心能陪伴平台共同成长的人。

 

【福利】

1、我们提供社群运营学习的机会;

2、愿你是单身,能在这里脱单;

3、 每一个月推选10位优秀群主,一些物质奖励。

 

【联系报名】

1、添加细心姐姐微信号:xixinjiejie ,口令:应聘群主

2、发消息给细心姐姐,说明一下来自哪个省哪个城市,哪个学校

3、发消息给细心姐姐,做个自我介绍,格式如下图:

 

 

附:

【1】我建了1000个短信群

 

【2】大确幸全国高校脱单群,群规一览

微信扫描自定义二维码关注公众号并登录(二)移动端/微信端的设计与实现

上篇介绍了《微信扫描自定义二维码关注公众号并登录(一)PC端网站的设计与实现》   

很多情况下我们的网上是响应式的,如果用户在移动端访问或者微信里面访问,该如何实现微信扫码关注公众号并登录!?  这是个好问题。

PC端用户扫带参数的码,微信打开的是公众号,是不是还有回退返回打开页面!? 这样基本是不可以的,当用户离开关闭页面时,websocket 就关闭了,不会再收到消息; 如轮询也是页面关闭,js就不再执行。那我们就要另想解决办法。

当我们扫码关注公众号登录时,不管用户之前是否关注过公众号,我们的 服务都会给用户微信发一条消息,这里可不可给顺带用户发一个登录链接,用户收到消息点击链接完成登录??? 答案是,当然可以!

这里首先我们网站在移动端访问时,要判断是不是移动端访问,或者微信访问。

这里我们js 已经实现 , 移动端访问,不会使用websocket。

https://love.daquexing.com/theme/default/js/modules/authc.js

var from ='p';
    if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
        from ='m';
        if((/MicroMessenger/i).test(navigator.userAgent)){
          // 微信浏览器
            $('#hi_message').html('请长按图片,识别图中二维码登录');
        }
        $('#hi_message').show();
    } 
    var websocket = null;
    var Authc = {
        isAuthced: function () {
            return (typeof(window.app.LOGIN_TOKEN) != 'undefined' && window.app.LOGIN_TOKEN.length > 0);
        },
        showLogin : function () {
            var that = this;
             // 获取二维码链接
            jQuery.get(app.base + '/oauth2/qrcode?f='+from,  function (ret) {
                if (ret && ret.code == 0) {
                   // 给二维码赋值 和 timestamp
                    $('#qrcode').attr("src",qrcodeurl+ret.data.ticket) ;
                    $('#timestamp').val(ret.data.timestamp) ;
                    if (from =='p'){
                    // 建立socket
                     that.initWebSocket(ret.data.timestamp );
                     // 模式框 关闭的时候 关闭socket
                    $('#login_alert').on('hidden.bs.modal', function () {
                            that.closeWebSocket();
                     });
                    }
                    
                    
                } else {
                    $('#ajax_login_message').text(ret.message).show();
                }
            });


            $('#login_alert').modal();

并且我们在获取二维码链接的时候,带了一个参数f,区分是移动端还是pc端, (此处不考虑用户任务修改参数)。这样针对移动端和PC端生成不同的timestamp 参数,当用户扫码关注后,公众平台会给我们后台服务发送消息和用户信息,这里判断返回的timestamp 参数何种类型,如果是移动端,则在通知的消息里添加登录逻辑的链接。

if (timestamp.startsWith("m")) {
    loginStr="\n \n" +
            "==《大确幸网站》==\n" +
            "》》》点击 <a href=\""+website+"/oauth2/login?username="+userWxInfo.getNickname()+"&timestamp="+timestamp+"\">完成登录</a>";
}else{
    // socket 通知客户端
    JSONObject object = JSONObject.fromObject(userWxInfo);
    object.put("equipmentType", timestamp);
    //调用socket进行通信
    this.logger.info("调用socket进行通信 object: " + object.toString());
    webSocketController.onMessage(object.toString(), null);
}

实现效果如下:

 

!!!好了,移动端(微信里)微信扫码关注公众号登录基本就实现了。 重点是前端判断用户访问来源是移动端还是PC,生成不同类型timestamp参数,从而实现登录。

最后,希望本文对你有帮助,欢迎在微信里扫码体验一下

https://love.daquexing.com/login

如果你还有其他疑问,可以加我微信咨询

 


	

微信扫描自定义二维码关注公众号并登录(一)PC端网站的设计与实现

业务需求

大确幸网站实现扫描二维码关注微信公众号,如果已经关注公众号就自动登陆网站并获取其微信昵称,头像等信息,如果用户未关注就等用户关注公众号后自动登陆网站

–如果用户已关注公众号,网站端直接自动登陆,如果没有关注,就等用户关注公众号之后网站端自动登陆

(目前已经完成了这个功能,示例网址:https://love.daquexing.com/  大确幸-新社交,新生活,一个聚合百万单身年青的社群。大确幸是一个有温度的社区,宗旨是帮更多适龄单身青年解决单身问题。)

做微信扫码登陆,生成二维码必须是微信公众号中绑定的域这个域名,网站生成不了二维码(网站与微信服务器不是同一个域名) ,而是调用微信系统的接口获取二维码,用户扫码后也是请求微信服务器 。

ok 以上内容参考引用出自:

网站实现扫描二维码关注微信公众号,自动登陆网站并获取其信息

方案优化:网站实现扫描二维码关注微信公众号,自动登陆网站并获取其信息

网上还有一篇文章推荐:

微信扫描自定义二维码关注公众号

如果以上三篇你都看懂了, 下面?就简单, 或者你都不用看了。

微信公众平台技术文档:

获取access_token

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

生成带参数的二维码

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542

前端页面实现相关js

https://love.daquexing.com/theme/default/js/modules/authc.js

前端获取二维码方法:

@RequestMapping(value = "/qrcode", method = RequestMethod.GET)
public @ResponseBody
Data getqrcode(@RequestParam(value = "f") String f) {
Data data = Data.failure("操作失败");

Map<String, String> map = new HashMap<>();
String timestamp = System.currentTimeMillis() + "";
if ("m".equals(f)) {
timestamp = "m" + timestamp;
}
map.put("timestamp", timestamp);

// 获取二维码链接
String result = HttpKit.get(env.getProperty("api.url.wx_get_qrcode") + timestamp);
if (StringUtils.isNotEmpty(result)) {
JSONObject res = JSON.parseObject(result);
map.put("ticket", res.get("ticket").toString());
}

return Data.success(map);
}


/**
 * 登录
 *
 * @param username
 * @param timestamp
 * @return
 */
@RequestMapping(value = "/wechat", method = RequestMethod.POST)
public @ResponseBody
Data wechatlogin(String username, String timestamp) throws Exception {
    Data data = Data.failure("操作失败");

    //重置序列化
    redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

    if (StringUtils.isBlank(username) || StringUtils.isBlank(timestamp)) {
        return data;
    }
    // 获取用户
    if (redisTemplate.opsForValue().get("wechat_" + timestamp) == null) {
        data.setMessage("获取用户失败");
        return data;
    }
   //  其他登录逻辑
  。。。。。。。

}

后台服务的websocket 实现

package com.lotres.mp.controller;

import net.sf.json.JSONObject;
import org.springframework.stereotype.Component;

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Hashtable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,
 * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
 */
@Component
@ServerEndpoint("/websocket/wechat/{timestamp}")
public class WebSocketController {

    //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
    private static int onlineCount = 0;

    //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
    //private static CopyOnWriteArraySet<WebSocketController> webSocketSet = new CopyOnWriteArraySet<WebSocketController>();
    private static ConcurrentMap<String, WebSocketController> webSocketMap = new ConcurrentHashMap<String, WebSocketController>();
    //与某个客户端的连接会话,需要通过它来给客户端发送数据
    private Session session;

    /**
     * 连接建立成功调用的方法
     *
     * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
     */
    @OnOpen
    public void onOpen(@PathParam("timestamp") String timestamp, Session session) {
        this.session = session;
        webSocketMap.put(timestamp, this);
        //在线数加1
        System.out.println("唯一key为:" + timestamp);
    }

    /**
     * 连接关闭调用的方法
     */
    @OnClose
    public void onClose(@PathParam("timestamp") String timestamp) {
        webSocketMap.remove(timestamp);//从map中删除
    }

    /**
     * 收到客户端消息后调用的方法
     *
     * @param message 客户端发送过来的消息
     * @param session 可选的参数
     */
    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("来自客户端的消息:" + message);

        JSONObject jsonobject = JSONObject.fromObject(message);
        Hashtable params = (Hashtable) JSONObject.toBean(jsonobject, Hashtable.class);

        //群发消息
        WebSocketController webSocketController = webSocketMap.get(params.get("equipmentType"));
        try {
            webSocketController.sendMessage((String) params.get("nickname"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 发生错误时调用
     *
     * @param session
     * @param error
     */
    @OnError
    public void onError(Session session, Throwable error) {
        System.out.println("发生错误");
        error.printStackTrace();
    }

    /**
     * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
     *
     * @param message
     * @throws IOException
     */
    public void sendMessage(String message) throws IOException {
        this.session.getBasicRemote().sendText(message);
        //this.session.getAsyncRemote().sendText(message);
    }
}

公众号后台配置

后台服务程序参考

https://github.com/binarywang/weixin-java-mp-demo-springboot

!!!好了,微信扫码关注公众号登录基本就实现了。 本系统实现直接使用了websocket 机制, 没有使用js 轮询检测用户是否已经扫码关注的方法。 轮询方法实现就是当系统生成带参数二维码后,获取到了后台生成的timestamp参数,前端js就开始轮询(例如:每三秒请求一次)。

致谢: 前面参考的几篇文章作者。

顺便提一下,我们系统使用了开源 https://gitee.com/mtons/mblog.  在此表示感谢!

最后,希望本文对你有帮助,欢迎体验一下

https://love.daquexing.com/login

如果你还有其他疑问,可以加我微信咨询

预告:《微信扫描自定义二维码关注公众号并登录(二)移动端/微信端的设计与实现

【填个坑】微信Token验证失败原因及解决方案

微信公众平台修改服务器配置时token验证失败

网上很多都是php教程,
看这里

https://blog.csdn.net/sinat_22878395/article/details/69258165

还有下面这篇说的比较有高度

https://www.zkii.net/tech/php/813.html

我的项目用的Spring-boot 框架,使用了

班纳睿 

的全能微信Java开发工具包
https://gitee.com/binary/weixin-java-tools/tree/master

微信公众号demo,使用weixin-java-tools,基于Spring Boot

https://gitee.com/binary/weixin-java-mp-demo-springboot

其中处理微信服务器认证的方法如下,(仔细看,感觉没啥毛病)

 @GetMapping(produces = "text/plain;charset=utf-8")

  public String authGet(

      @RequestParam(name = "signature",  required = false) String signature,

      @RequestParam(name = "timestamp", required = false) String timestamp,

      @RequestParam(name = "nonce", required = false) String nonce,

      @RequestParam(name = "echostr", required = false) String echostr) {


    this.logger.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature, timestamp, nonce, echostr);

    if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
      throw new IllegalArgumentException("请求参数非法,请核实!");
    }

    if (this.wxService.checkSignature(timestamp, nonce, signature)) {
      return echostr;
    }
    return "非法请求";
  }

最好修改如下:

@GetMapping(produces = "text/plain;charset=UTF-8")
public void authGet(
    @RequestParam(name = "signature",
        required = false) String signature,
    @RequestParam(name = "timestamp",
        required = false) String timestamp,
    @RequestParam(name = "nonce", required = false) String nonce,
    @RequestParam(name = "echostr", required = false) String echostr,HttpServletResponse response ) throws IOException {
   

  this.logger.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature,
      timestamp, nonce, echostr);

  if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
    throw new IllegalArgumentException("请求参数非法,请核实!");
  }

  if (this.wxService.checkSignature(timestamp, nonce, signature)) {
    //------------------------------
    //处理业务完毕
    //------------------------------
    BufferedOutputStream out = new BufferedOutputStream(
            response.getOutputStream());
    out.write(echostr.getBytes());
    out.flush();
    out.close();
  } else {
    logger.info("非法请求");
  }

}

问题解决!  也许其他人 用weixin-java-tools 没有遇到这样的问题, 这里也可能跟服务器环境配置有关,具体详情暂不深挖(这个坑日后再填)。

 

GitHub交友

重点解决程序员交友、程序员恋爱、程序员相亲、程序员找对象的问题,真正开源交友。我是细心姐姐。 微信搜索关注《大确幸》,有爱有行动。http://daquexing.cn

自我介绍

南京创业团队,目前产品方向是婚恋社交;我们有公众号《大确幸》,小程序《单身相亲助手》、《大确幸日历》, 我们的愿景是让适龄的单身青年找到合适的人并快速线下见面。 为了让程序员找到合适的对象,更快的脱单,我们特别开了「GitHub交友」,为大家服务。 在这里,你可以遇到你的Mr.right 。

如何GitHub交友 ?

个人介绍模板详情 –>> 点击下载

GitHub交友安全问题

第一位女生

第一位男生

当前分区

北京

上海

广州

深圳

杭州 (1)

成都

南京 (1)

武汉

西安

郑州

厦门

苏州

天津

国内其他城市

海外

订阅

  • 服务号:大确幸 ,定期组织线下活动

    hidaquexing

  • 订阅号:细心姐姐 ,每天都有丰富的话题内容

    xixinjiejie

  • 知识星球:单身星球, 一个单身青年聚集的地方

    单身星球

赞赏是最好的支持

赞赏我们

大确幸线下第一期活动复盘

俗话讲:万事开头难,但是这次我们成功组织了一次线下活动。 计划4月14日下午的活动,4月12日活动报名才发出来。时间虽然仓促,但是最后还是有8名同学报名,并且是4男4女完美的比例。

虽然本次活动报名没有限制一些条条框框的门槛,但是报名的嘉宾质量真的是很高。 8名嘉宾全部本科以上学历,其中3个南京本地人,男嘉宾全部本地有房(一位即将购买)、平均年薪20万;女嘉宾也都有高颜值并且工作稳定经济独立。

活动计划是下午两点开始的,由于一位嘉宾堵在路上,给了我一个机会,把我之前的工作经历和为什么做《大确幸》balabala 了一下。 事后发现,这是个不受欢迎的个人show。

活动一开始,首先掏出手机面对面建群。进群后给大家发了一个自我介绍模板,大家开始自我介绍。介绍完毕,大家通过投票选出自我介绍环节介绍的好的2名嘉宾,我们颁发小奖品。 接着第二轮我们给大家准备的题目是一个有深度的个人展示:要求每人讲三个自己的特长和自己最讨厌的三件事。最后我们同样投票选出两位讲的好的嘉宾颁发小奖品。第三轮我们准备了成语接龙这么一个小游戏;对接龙失败者准备了小惩罚。第四轮是一个互动小游戏(猩猩、猩猩、喔喔),虽然只玩了不到10分钟,但是极大的活跃了气氛。第五轮是随机抽签交换小礼物。计划中,整场活动到此结束,最后我们向大家征求对线下活动意见,结果这里打开了大家的话匣子balabala…   其中大家还互相提问了感兴趣的话题。 美好的时间总是短暂的,不觉间聊到了晚上6点左右。 最后我们拍照留念,在欢声笑语中结束了今天的活动。

 


反思这次活动总结以下:

1、时间选择周六下午,对于一些单休人士参加有困难;

2、前两轮气氛太严肃拘谨,大家感觉像开会;

3、活动中没有准备给大家单独相互交流的环节;

4、没有提前对嘉宾做更细致的调查;

5、大家情况不同,每个人对活动的期望不一样,我们考虑报名前提供更多细节;


关注公众号:大确幸,回复【414】,获取414活动音频;回复【11】领取下次活动预报名资格

【专场】大确幸线下活动 第一期

四月是一年中最美好的季节

既温暖又充满希望

有时间、有精力、有明媚的春光

我们大确幸为你准备了一场专属的线下活动

一起来释放青春活力吧

本期大确幸南京青年线下交流会

聚集了各个岗位的才子佳人

他们是各个领域的精英团体

阳光、帅气、有能力、大方、高学历、高收入、充满魅力

看上去完美无缺的他们却还是单身

而我们将竭诚为这些优质青年解决单身问题

本活动给单身男女创造相识和交流的机会,使参与活动的单身男女进一步加深对彼此的了解,为单身男女们搭起由相知,相识到相恋的桥梁。

活动主题:南京青年线下见面会

活动地点:长青藤咖啡馆(华侨路店)

时间:2018年4月14日(星期六)

下午2:00-4:00

详细地址:南京市新街口华侨路26号

活动名额:20人(GGMM各10个)

敲黑板:嘉宾需要带见面礼(小礼物)

要求:礼不在贵,贵在心意。小礼物不能是食品饮料,最好是有实用价值的全新产品,价值范围10-50元,!!!一定要彩纸包装好(保持神秘感,不懂彩纸包装的去问度娘) ,活动中小礼物会随机赠送给新朋友,男女未知哦!

活动收费:69元/人

扫码付费要备注姓名+手机号哟

走心提示:本次活动费用AA,多退少补,报名以扫码付款成功为准,报名后不能参加的不退费、不退费、不退费,万望理解!活动当天按时来参加活动签到即可,如果觉得我们做的有意义可以分享给好朋友哟~~~

写在最后

单纯指望参加一次活动, 就定终身了, 基本不可能。我们组织活动也不是保证参加就能找到对象,但是希望通过参加活动,可以提高大家的社交能力。如果一个人的社交能力很强, 他在工作中,生活中, 社交网络中都能认识一些朋友;遇到三观一致的人, 自然会走到一起。 好祝!

–青峰

单身相亲助手找对象,从制作一张相亲名片开始小程序

长青藤咖啡
https://www.douban.com/note/665310581/

如何制作一张「相亲名片」

上周给群里的同学布置了一个任务,那就是制作一张相亲名片。为什么要制作一张相亲名片可以查看:
探索「行为设计学」在婚恋社交中的应用

大确幸恋爱脱单任务一


如何制作一张「相亲名片」

第一步: 点开群详情; 看到聊天小程序

注意:
新进群的人,聊天小程序里是空的,请加微信:xixinjiejie, 转发小程序给你


第二步:使用单身相亲助手,制作名片,并保存到本地相册;


第三步: 在使用群空间助手,打开点击群相册,找到对应的相册,【 女生名片\男生名片】 上传刚才制作的名片。 任务完成!


任务完成效果:

 1、55个人打开了群空间,参与率50%;

 2、16个同学,制作了名片并成功上传到群空间,达标率不到20%;


 

扫码关注,更多内容

3月25日,玄武湖相亲角活动复盘

之前也了解到很多关于全国各地相亲角的报道,主要就是父母长辈自发到公园一角替子女相亲。 这种现象的存在,更多也是无奈。不多解释,我之前一次路过相亲角发现:现在相亲角的方式,父母很难替子女找到合适的对象。

相亲角的开放时间: 每个周六和周日两天。

分析相亲角人员构成,可以说基本分三类:一类是各大婚介机构的中介人员(这些人大部分是被中介雇佣的退休大爷大妈),她们是常年驻守相亲角,一方面展示一些用户资料,一方面是收集更多的用户信息交给中介结构;第二类就是真实的家长,带着自己子女的资料和一把小雨伞,争取每一个空闲周末都会出场,希望可以替子女找到合适的对象; 第三类是一些过路家长,因为现实中她们的子女也是单身,不会刻意准备子女资料,偶尔路过相亲角,就去砰砰运气,看看别人的资料,或者抱着试试看的心态,跟其他一些过路家长攀谈交换着子女的情况。

我们这次去做活动的目的是希望通过微信群的方式,把家长拉倒群里,大家可以天天在微信群内沟通交流,理论上,单从时间方面成功的几率就增加了2.5倍。所以我们认真准备了海报和小卡片等材料,执行中原本周六就做的活动,由于制作海报不及时,活动改在周日做。

周日上午我们大约10.30到的现场,支架海报一展开,便有好奇的家长们围观过来。?一些现场画面

通过跟一些叔叔阿姨交流, 她们很认可我们现在做的这件事,还给了我们很多建议,希望我们把这件事坚持做下去,当成事业做成功!

总结一下家长们咨询和质疑的问题:

1、你们是谁,哪个单位的,你们在做什么?

2、你们是中介吗?收费吗?

3、你们不收费,你们做这个干什么?

4、怎么加群,加群以后干什么 ?

5、你们是不是收集我们的信息,网上到处乱发?

6、你们怎么保证群里的人都是真实的?

7、你们怎么能不收费呐? 可以收费,一定成功之后再收费;

交谈过程中我们也尽力把家长们的问题解答清楚。当然了发现了很多问题,对于不少上年纪的家长,他们没有智能手机或者不太会使用微信导致虽然感兴趣加群确无能为力;还有一波家长属于惧怕的,他们对互联网的不信任,拒绝微信群的方式。上述两类家长估计差不多站到三成左右。

?下面再讲两件不好事情:前面分析了相亲角有很多中介人员,他们看到我们这边搞免费微信群,很多家长都赞成支持并积极加群。他们心生妒忌,过来刁难我们,毕竟我们年轻没有经验,面对一些情况越是极力解释试图说明,最后都是徒劳。 那一刻虽然面红耳赤,泪水在眼睛里面打转,但我们还是没让它掉下来!下午大约4点钟左右,公园管理处工作人员(一个城管+2两个协管)到场强行收走了我们的支架海报,最后按公园管理条例对我们处罚200元,把我们赶出公园,这次活动也就到此结束了。

缴费时候,我们跟公园工作人员沟通:我们做的免费活动,很多人支持;也是初犯能不能从轻发落。工作人员反馈,相亲角都是自发的,一般低调点他们也是不会管的;但是有人举报(我们遭人举报了,谁没事会举报我们呢 ? ),他们就必须管。  O(∩_∩)O哈哈~ 最后还是交钱认罚。  是我们没有意识到违反条例,最后也大意到没有索要罚单收据!

最后感谢活动中认识的徐阿姨、楚阿姨、唐阿姨和一位低调的叔叔。重点感谢徐阿姨,在我们吃饭的时候,帮忙看海报;遇到一些搅毛的中介挑衅时,还几次帮我们解围 !

昨天还有很多感触感谢,虽然不能一一写出来,但对微信交流群这件事的态度是:我们会坚持做下去,并努力把它做好!