eric_weixin 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/eric_weixin/cms/weixin/weixin_users_controller.rb +23 -0
- data/app/models/eric_weixin/reply_message_rule.rb +5 -2
- data/app/models/eric_weixin/weixin_user.rb +13 -0
- data/app/views/eric_weixin/cms/weixin/two_dimension_codes/new.html.erb +1 -1
- data/app/views/eric_weixin/cms/weixin/weixin_users/index.html.erb +128 -0
- data/config/routes.rb +6 -0
- data/lib/eric_weixin/modules/snsapi.rb +1 -1
- data/lib/eric_weixin/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 642edff6b9961fd9d985894da46515fe75d5aeda
|
4
|
+
data.tar.gz: 43103ab6656f7a14693bb62eccec56b70dcf7a3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e96d4c0d4d55ce60178902daf6254134bf5150451f2f0a6aab6937590fbaec591b2a3c226cfd75b3f4145382a6efb62303249201075e00177d4106c06d0ab729
|
7
|
+
data.tar.gz: c39688341c2d05d8c7312d8b415d8e9466d17b6939eb0ee0a0aadb08e9c8e4b28f7361f16172ce8e27a21ee5e4ef4c805901aba15a009b6902a1e01cfa7dd4f1
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class EricWeixin::Cms::Weixin::WeixinUsersController < EricWeixin::Cms::BaseController
|
2
|
+
def index
|
3
|
+
@public_accounts = ::EricWeixin::PublicAccount.all
|
4
|
+
public_account = ::EricWeixin::PublicAccount.find_by_id(params[:public_account_id])
|
5
|
+
@weixin_users = public_account.weixin_users.custom_query(params.permit(:subscribe,
|
6
|
+
:nickname,
|
7
|
+
:sex,
|
8
|
+
:city,
|
9
|
+
:province,
|
10
|
+
:weixin_public_account_id,
|
11
|
+
:start_date,
|
12
|
+
:end_date)).
|
13
|
+
order(id: :desc).
|
14
|
+
paginate(page: params[:page]||1, per_page: params[:per_page]||10) unless public_account.blank?
|
15
|
+
end
|
16
|
+
|
17
|
+
def modify_remark
|
18
|
+
user = ::EricWeixin::WeixinUser.find(params[:id])
|
19
|
+
user.set_remark params[:new_remark]
|
20
|
+
user.reload
|
21
|
+
render text: user.remark
|
22
|
+
end
|
23
|
+
end
|
@@ -3,7 +3,8 @@ class EricWeixin::ReplyMessageRule < ActiveRecord::Base
|
|
3
3
|
scope :valid, -> { where(:is_valid => true) }
|
4
4
|
belongs_to :weixin_public_account, :class_name => '::EricWeixin::PublicAccount', foreign_key: "weixin_public_account_id"
|
5
5
|
delegate :name, to: :weixin_public_account, prefix: true, allow_nil: true
|
6
|
-
KEY_WORD_TYPE_LABEL = {"
|
6
|
+
KEY_WORD_TYPE_LABEL = {"text" => '字符', 'regularexpr' => '正则表达式', 'event' => '事件'}
|
7
|
+
|
7
8
|
REPLY_TYPE_LABEL = {"text" => '静态字符串', 'wx_function' => '动态运行', 'news' => '多图文'}
|
8
9
|
|
9
10
|
validates_presence_of :key_word, message: "关键词不能为空。"
|
@@ -187,8 +188,10 @@ class EricWeixin::ReplyMessageRule < ActiveRecord::Base
|
|
187
188
|
|
188
189
|
def match_key_words wx_key_word, public_account_id, receive_message,need_to_mult_service=true
|
189
190
|
matched_rule = ::EricWeixin::ReplyMessageRule.order(order: :desc).
|
190
|
-
where(:key_word => wx_key_word, :weixin_public_account_id => public_account_id, :key_word_type=>(receive_message[:MsgType]||"
|
191
|
+
where(:key_word => wx_key_word, :weixin_public_account_id => public_account_id, :key_word_type=>(receive_message[:MsgType]||"text")).first
|
191
192
|
if matched_rule.nil?
|
193
|
+
# todo 处理正则表达式
|
194
|
+
|
192
195
|
if need_to_mult_service
|
193
196
|
return ::EricWeixin::ReplyMessage::transfer_mult_customer_service ToUserName: receive_message[:FromUserName],
|
194
197
|
FromUserName: receive_message[:ToUserName]
|
@@ -151,5 +151,18 @@ class EricWeixin::WeixinUser < ActiveRecord::Base
|
|
151
151
|
member_info
|
152
152
|
end
|
153
153
|
end
|
154
|
+
|
155
|
+
def custom_query options
|
156
|
+
users = self.all
|
157
|
+
users = users.where(subscribe: options[:subscribe]) unless options[:subscribe].blank?
|
158
|
+
users = users.where("nickname like ?", "%#{CGI::escape(options[:nickname])}%") unless options[:nickname].blank?
|
159
|
+
users = users.where(sex: options[:sex]) unless options[:sex].blank?
|
160
|
+
users = users.where(city: options[:city]) unless options[:city].blank?
|
161
|
+
users = users.where(province: options[:province]) unless options[:province].blank?
|
162
|
+
users = users.where(weixin_public_account_id: options[:weixin_public_account_id]) unless options[:weixin_public_account_id].blank?
|
163
|
+
users = users.where("subscribe_time >= ?", options[:start_date].to_date.to_time.to_i) unless options[:start_date].blank?
|
164
|
+
users = users.where("subscribe_time <= ?", (options[:end_date].to_date+1.day).to_time.to_i) unless options[:end_date].blank?
|
165
|
+
users
|
166
|
+
end
|
154
167
|
end
|
155
168
|
end
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<div class="large-8 columns">
|
30
30
|
<select name="two[app_id]">
|
31
31
|
<% @public_accounts.each do |public_account| %>
|
32
|
-
<option value="<%= public_account.weixin_app_id %>"><%= public_account.
|
32
|
+
<option value="<%= public_account.weixin_app_id %>"><%= public_account.name %></option>
|
33
33
|
<% end %>
|
34
34
|
</select>
|
35
35
|
</div>
|
@@ -0,0 +1,128 @@
|
|
1
|
+
<h3>用户表</h3>
|
2
|
+
<%= form_tag '/eric_weixin/cms/weixin/weixin_users', method: :get do %>
|
3
|
+
<div class="row">
|
4
|
+
<div class="columns small-2 text-right">
|
5
|
+
<label class="inline">订阅状态</label>
|
6
|
+
</div>
|
7
|
+
<div class="columns small-2">
|
8
|
+
<%= select_tag :subscribe, options_from_collection_for_select({1=>'订阅',0=>'取消订阅'},'first','second',params[:subscribe]),prompt:"ALL" %>
|
9
|
+
</div>
|
10
|
+
<div class="columns small-2 text-right">
|
11
|
+
<label class="inline">昵称</label>
|
12
|
+
</div>
|
13
|
+
<div class="columns small-2">
|
14
|
+
<%= text_field_tag :nickname, params[:nickname] ,placeholder:"ALL" %>
|
15
|
+
</div>
|
16
|
+
<div class="columns small-2 text-right">
|
17
|
+
<label class="inline">性别</label>
|
18
|
+
</div>
|
19
|
+
<div class="columns small-2 end">
|
20
|
+
<%= select_tag :sex, options_from_collection_for_select(::EricWeixin::WeixinUser::SEX,'first','second',params[:sex]), prompt:"ALL" %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<div class="row">
|
24
|
+
<div class="columns small-2 text-right">
|
25
|
+
<label class="inline">城市</label>
|
26
|
+
</div>
|
27
|
+
<div class="columns small-2">
|
28
|
+
<%= text_field_tag :city, params[:city] ,placeholder:"ALL" %>
|
29
|
+
</div>
|
30
|
+
<div class="columns small-2 text-right">
|
31
|
+
<label class="inline">省份</label>
|
32
|
+
</div>
|
33
|
+
<div class="columns small-2 end">
|
34
|
+
<%= text_field_tag :province, params[:province] ,placeholder:"ALL" %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
|
38
|
+
</div>
|
39
|
+
<div class="row">
|
40
|
+
<div class="columns small-2 text-right">
|
41
|
+
<label class="inline">关注日期起始</label>
|
42
|
+
</div>
|
43
|
+
<div class="columns small-2">
|
44
|
+
<%= date_field_tag :start_date, params[:start_date] %>
|
45
|
+
</div>
|
46
|
+
<div class="columns small-2 text-right">
|
47
|
+
<label class="inline">关注日期结束</label>
|
48
|
+
</div>
|
49
|
+
<div class="columns small-2">
|
50
|
+
<%= date_field_tag :end_date, params[:end_date] %>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="columns small-2">
|
54
|
+
<%= select_tag :public_account_id, options_from_collection_for_select(@public_accounts, 'id', 'name', (params[:public_account_id].blank? ? '' : params[:public_account_id])), prompt: '请选择公众账号' %>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<div class="columns small-2 end">
|
58
|
+
<%= submit_tag '加载用户', class: 'button tiny' %>
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
<% end %>
|
62
|
+
<% unless @weixin_users.blank? %>
|
63
|
+
<%= will_paginate @collection, renderer: FoundationPagination::Rails %>
|
64
|
+
<table>
|
65
|
+
<thead>
|
66
|
+
<th width="150px">openid</th> <th>是否订阅</th> <th>昵称</th> <th>性别</th> <th>语言</th> <th>城市</th> <th>省份</th> <th>国家</th> <th>头像</th> <th>关注时间</th> <th>备注</th> <th>最后一次注册渠道</th> <th>第一次注册渠道</th><th>操作</th>
|
67
|
+
</thead>
|
68
|
+
<tbody>
|
69
|
+
<% @weixin_users.each do |user| %>
|
70
|
+
<tr>
|
71
|
+
<td style="word-wrap:break-word;word-break:break-all;"><%= user.openid %></td>
|
72
|
+
<td><%= case user.subscribe when 1 then '是' when 0 then '否' end %></td>
|
73
|
+
<td><%= user.nickname %></td>
|
74
|
+
<td><%= case user.sex when 1 then '男' when 2 then '女' else '未知' end %></td>
|
75
|
+
<td><%= case user.language when 'zh_CN' then '简体中文' when 'zh_TW' then '繁体中文' when 'en' then '英文' else '其它' end %></td>
|
76
|
+
<td><%= user.city %></td>
|
77
|
+
<td><%= user.province %></td>
|
78
|
+
<td><%= user.country %></td>
|
79
|
+
<td><%= image_tag(user.headimgurl, height: '32', width: '32') %></td>
|
80
|
+
<td><%= Time.at(user.subscribe_time.to_i).chinese_format %></td>
|
81
|
+
<td id="user_remark_<%= user.id %>"><%= user.remark %></td>
|
82
|
+
<td><%= user.last_register_channel %></td>
|
83
|
+
<td><%= user.first_register_channel %></td>
|
84
|
+
<td>
|
85
|
+
<%= link_to '备注', "javascript:open_modal(#{user.id})" %>
|
86
|
+
</td>
|
87
|
+
</tr>
|
88
|
+
<% end %>
|
89
|
+
</tbody>
|
90
|
+
</table>
|
91
|
+
<%= will_paginate @collection, renderer: FoundationPagination::Rails %>
|
92
|
+
<% end %>
|
93
|
+
|
94
|
+
<%= hidden_field_tag :hidden_user_id %>
|
95
|
+
<script language="javascript">
|
96
|
+
function open_modal(user_id){
|
97
|
+
$("#hidden_user_id").val(user_id);
|
98
|
+
$('#myModal').foundation('reveal', 'open');
|
99
|
+
|
100
|
+
}
|
101
|
+
function modify_remark(){
|
102
|
+
user_id = $("#hidden_user_id").val();
|
103
|
+
new_remark = $("#new_remark").val();
|
104
|
+
$.ajax({
|
105
|
+
url: "/eric_weixin/cms/weixin/users/"+user_id+"/modify_remark",
|
106
|
+
type: "post",
|
107
|
+
async: false,
|
108
|
+
data: {new_remark: new_remark}
|
109
|
+
}).done(
|
110
|
+
function(result){
|
111
|
+
$("#user_remark_"+user_id).html(result);
|
112
|
+
$('#myModal').foundation('reveal', 'close');
|
113
|
+
}
|
114
|
+
);
|
115
|
+
}
|
116
|
+
</script>
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
<div id="myModal" class="reveal-modal" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
|
121
|
+
|
122
|
+
<label class="inline left">新备注</label>
|
123
|
+
<%= text_field_tag :new_remark %>
|
124
|
+
<%= link_to "提交", "javascript:modify_remark()" %>
|
125
|
+
|
126
|
+
|
127
|
+
<a class="close-reveal-modal" aria-label="Close">×</a>
|
128
|
+
</div>
|
data/config/routes.rb
CHANGED
@@ -10,7 +10,7 @@ module EricWeixin::Snsapi
|
|
10
10
|
# * schema_host 当前项目的域名(包含http://):如http://www.baidu.com
|
11
11
|
# * state 这个参数可以直接带到业务页面。
|
12
12
|
# ===调用示例
|
13
|
-
#
|
13
|
+
#
|
14
14
|
def self.get_snsapi_base_url options
|
15
15
|
require 'base64'
|
16
16
|
p_zhongzhuan = []
|
data/lib/eric_weixin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eric_weixin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 刘晓琦
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- app/controllers/eric_weixin/cms/weixin/two_dimension_codes_controller.rb
|
50
50
|
- app/controllers/eric_weixin/cms/weixin/url_encodes_controller.rb
|
51
51
|
- app/controllers/eric_weixin/cms/weixin/users_controller.rb
|
52
|
+
- app/controllers/eric_weixin/cms/weixin/weixin_users_controller.rb
|
52
53
|
- app/controllers/eric_weixin/wz/weixin_controller.rb
|
53
54
|
- app/helpers/eric_weixin/application_helper.rb
|
54
55
|
- app/helpers/eric_weixin/cms/weixin/public_accounts_helper.rb
|
@@ -95,6 +96,7 @@ files:
|
|
95
96
|
- app/views/eric_weixin/cms/weixin/url_encodes/create.js.erb
|
96
97
|
- app/views/eric_weixin/cms/weixin/url_encodes/index.html.erb
|
97
98
|
- app/views/eric_weixin/cms/weixin/users/index.html.erb
|
99
|
+
- app/views/eric_weixin/cms/weixin/weixin_users/index.html.erb
|
98
100
|
- app/views/layouts/eric_weixin/application.html.erb
|
99
101
|
- app/views/layouts/eric_weixin/cms/base.html.erb
|
100
102
|
- app/views/layouts/eric_weixin/weixin/aa.erb
|