Explorar o código

1.添加关注 取消关注 接口
2.用户关注列表接口
3.详情返回是否关注商品
4.定时任务开拍半小时喝10分钟进行提醒

ytf %!s(int64=3) %!d(string=hai) anos
pai
achega
6be95264c9

+ 39 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/base/enums/WxMsgEnum.java

@@ -0,0 +1,39 @@
1
+package com.ydw.yunbuyer.web.pm.base.enums;
2
+
3
+public enum WxMsgEnum {
4
+    AUCTION_START_REMINDER("拍卖开始提醒","https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN","lAd9AXOhtfFHaSgzd6BMZibSieaYjFb9cu2_1MKUvNY");
5
+
6
+    private String explain;
7
+    private String wx_connect_url;
8
+    private String template_id;
9
+
10
+    WxMsgEnum( String explain ,String wx_connect_url, String template_id) {
11
+        this.explain = explain;
12
+        this.wx_connect_url = wx_connect_url;
13
+        this.template_id = template_id;
14
+    }
15
+
16
+    public String getWx_connect_url() {
17
+        return wx_connect_url;
18
+    }
19
+
20
+    public void setWx_connect_url(String wx_connect_url) {
21
+        this.wx_connect_url = wx_connect_url;
22
+    }
23
+
24
+    public String getTemplate_id() {
25
+        return template_id;
26
+    }
27
+
28
+    public void setTemplate_id(String template_id) {
29
+        this.template_id = template_id;
30
+    }
31
+
32
+    public String getExplain() {
33
+        return explain;
34
+    }
35
+
36
+    public void setExplain(String explain) {
37
+        this.explain = explain;
38
+    }
39
+}

+ 34 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/controller/api/TokenPersonController.java

@@ -0,0 +1,34 @@
1
+package com.ydw.yunbuyer.web.pm.controller.api;
2
+
3
+import com.ydw.yunbuyer.web.pm.base.ProjBaseAction;
4
+import com.ydw.yunbuyer.web.pm.web.WebMsgTools;
5
+import io.swagger.annotations.Api;
6
+import org.springframework.context.annotation.Scope;
7
+import org.springframework.web.bind.annotation.RequestMapping;
8
+import org.springframework.web.bind.annotation.RestController;
9
+
10
+import java.io.IOException;
11
+
12
+@Api(tags = "Token获取")
13
+@RestController
14
+@Scope("prototype")
15
+@RequestMapping("/api/token")
16
+public class TokenPersonController extends ProjBaseAction {
17
+
18
+	/**
19
+	 *
20
+	 * 获取token
21
+	 * @return
22
+	 */
23
+	@RequestMapping("/get_token")
24
+	public String get_token() {
25
+		String token = null;
26
+		try {
27
+			token = WebMsgTools.get_access_Token();
28
+		} catch (IOException e) {
29
+			e.printStackTrace();
30
+		}
31
+		result.put("token", token);
32
+		return result.toJSONString();
33
+	}
34
+}

+ 99 - 2
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/controller_wxapp/ScheduledController.java

@@ -1,10 +1,15 @@
1 1
 package com.ydw.yunbuyer.web.pm.controller_wxapp;
2 2
 
3
-import java.util.List;
4
-import java.util.Map;
3
+import java.text.SimpleDateFormat;
4
+import java.util.*;
5
+
6
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
7
+import com.ydw.yunbuyer.web.pm.service.WxFollowService;
8
+import com.ydw.yunbuyer.web.pm.web.WebMsgTools;
5 9
 import org.springframework.beans.factory.annotation.Autowired;
6 10
 import org.springframework.scheduling.annotation.Scheduled;
7 11
 import org.springframework.stereotype.Component;
12
+import org.springframework.util.CollectionUtils;
8 13
 import org.tmsps.ne4spring.utils.ChkUtil;
9 14
 import com.ydw.yunbuyer.api.user.api.PersionApi;
10 15
 import com.ydw.yunbuyer.api.user.entity.Persion;
@@ -25,6 +30,10 @@ import com.ydw.yunbuyer.web.pm.service.WxPmService;
25 30
 @Component
26 31
 public class ScheduledController {
27 32
 
33
+	private static long SAME_DAY_END = 0L;//当天结束日期
34
+	private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //格式化
35
+	private static Map<String,List<Map<String, Object>>> SAME_DAY_MAP = new HashMap<>();//缓存数据
36
+
28 37
 	@Autowired
29 38
 	private PmItemService pmItemService;
30 39
 
@@ -35,6 +44,9 @@ public class ScheduledController {
35 44
 	private ShopService shopService;
36 45
 
37 46
 	@Autowired
47
+	private WxFollowService wxFollowService;
48
+
49
+	@Autowired
38 50
 	PersionApi persionApi;
39 51
 
40 52
 	@Scheduled(cron = "*/1 * * * * ?")
@@ -71,4 +83,89 @@ public class ScheduledController {
71 83
 			}
72 84
 		}
73 85
 	}
86
+
87
+
88
+	/**
89
+	 * 1.获取当前时间
90
+	 * 2.通过比较结束时间判断是否需要刷新缓存数据
91
+	 *   缓存数据
92
+	 * 3.查询数据
93
+	 * 	 3.1 当前时间加30分钟查询数据
94
+	 * 	 3.2 当前时间加10分钟查询数据
95
+	 * 4.发送消息
96
+	 */
97
+	@Scheduled(cron = "0 0/1 * * * ?")
98
+	public void auto_wx_msg() {
99
+		//1.获取当前时间
100
+		long nowTime = System.currentTimeMillis();
101
+		//2.通过比较结束时间判断是否需要刷新缓存数据
102
+		if (nowTime>SAME_DAY_END){
103
+			SAME_DAY_END = getEndTime();//更新时间
104
+			SAME_DAY_MAP = new HashMap<>();//更新数据
105
+			addSameDayMap(nowTime);
106
+		}
107
+		if (CollectionUtils.isEmpty(SAME_DAY_MAP)){
108
+			return;
109
+		}
110
+		//3.查询数据 1.当前时间加30分钟查询数据 2.当前时间加10分钟查询数据
111
+		String key1 = formatter.format(nowTime+1800000);
112
+		sendMsg(SAME_DAY_MAP.get(key1));
113
+		String key2 = formatter.format(nowTime+600000);
114
+		sendMsg(SAME_DAY_MAP.get(key2));
115
+	}
116
+
117
+	//出现当天新增的情况需要初始化数据
118
+	public static void initSameDayEnd(long time_opening){
119
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //格式化
120
+		String nowTime = format.format(System.currentTimeMillis());
121
+		String timeOpening = format.format(time_opening);
122
+		if (nowTime.equals(timeOpening)){
123
+			SAME_DAY_END = 0L;
124
+		}
125
+	}
126
+
127
+	private void addSameDayMap(long nowTime) {
128
+		long queryTime = SAME_DAY_END+1800000;
129
+		List<Map<String, Object>> mapList = wxFollowService.auto_wx_msg(nowTime,queryTime);
130
+		for (Map<String, Object> map:mapList) {
131
+			String time_opening = formatter.format(map.get("time_opening"));
132
+			List<Map<String, Object>> maps = SAME_DAY_MAP.get(time_opening);
133
+			if (CollectionUtils.isEmpty(maps)){
134
+				List<Map<String, Object>> list = new ArrayList<>();
135
+				list.add(map);
136
+				SAME_DAY_MAP.put(time_opening,list);
137
+			}else{
138
+				List<Map<String, Object>> maps1 = SAME_DAY_MAP.get(time_opening);
139
+				maps1.add(map);
140
+				SAME_DAY_MAP.put(time_opening,maps1);
141
+			}
142
+		}
143
+	}
144
+
145
+	private void sendMsg(List<Map<String, Object>> list) {
146
+		if (CollectionUtils.isEmpty(list)){
147
+			return;
148
+		}
149
+		for (Map<String, Object> map:list) {
150
+			String open_id = String.valueOf(map.get("open_id"));
151
+			String pm_item_name = String.valueOf(map.get("pm_item_name"));
152
+			String time_opening = String.valueOf(map.get("time_opening"));
153
+			WebMsgTools.sendAuctionStartReminderMessage(open_id,pm_item_name,time_opening);
154
+		}
155
+	}
156
+
157
+	private static long getEndTime() {
158
+		Calendar todayEnd = Calendar.getInstance();
159
+		todayEnd.set(Calendar.SECOND, 59);
160
+		todayEnd.set(Calendar.MINUTE, 59);
161
+		todayEnd.set(Calendar.HOUR_OF_DAY, 23);
162
+		todayEnd.set(Calendar.MILLISECOND, 999);
163
+		return todayEnd.getTimeInMillis();
164
+	}
165
+
166
+	public static void main(String[] args) {
167
+		System.out.println(System.currentTimeMillis());
168
+		System.out.println(getEndTime());
169
+
170
+	}
74 171
 }

+ 88 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/controller_wxapp/WxFollowController.java

@@ -0,0 +1,88 @@
1
+package com.ydw.yunbuyer.web.pm.controller_wxapp;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.ydw.yunbuyer.common.utils.date.CreatedTools;
5
+import com.ydw.yunbuyer.web.pm.base.ProjBaseAction;
6
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item;
7
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
8
+import com.ydw.yunbuyer.web.pm.service.PmItemService;
9
+import com.ydw.yunbuyer.web.pm.service.WxFollowService;
10
+import com.ydw.yunbuyer.web.pm.web.SessionWxService;
11
+import io.swagger.annotations.Api;
12
+import io.swagger.annotations.ApiOperation;
13
+import org.apache.commons.lang3.StringUtils;
14
+import org.springframework.beans.factory.annotation.Autowired;
15
+import org.springframework.context.annotation.Scope;
16
+import org.springframework.web.bind.annotation.RequestMapping;
17
+import org.springframework.web.bind.annotation.RestController;
18
+
19
+import java.util.List;
20
+import java.util.Map;
21
+
22
+@Api(tags = "关注管理")
23
+@RestController
24
+@Scope("prototype")
25
+@RequestMapping("/wx/follow")
26
+public class WxFollowController extends ProjBaseAction {
27
+    @Autowired
28
+    private SessionWxService sessionWxService;
29
+    @Autowired
30
+    private WxFollowService wxFollowService;
31
+    @Autowired
32
+    private PmItemService pmItemService;
33
+
34
+    @ApiOperation("关注和取消")
35
+    @RequestMapping("/edit_pm_follow")
36
+    public String edit_pm_follow(String pm_item_id){
37
+        if (StringUtils.isBlank(pm_item_id)){
38
+            result.put("statuz",false);
39
+            result.put("message", "输入标的物id为空");
40
+            return result.toJSONString();
41
+        }
42
+        t_pm_item t_pm_item = pmItemService.get(pm_item_id);
43
+        if (t_pm_item == null ){
44
+            result.put("statuz",false);
45
+            result.put("message", "标的物不存在");
46
+            return result.toJSONString();
47
+        }
48
+        if (t_pm_item.getTime_opening() <0 ){
49
+            result.put("statuz",false);
50
+            result.put("message", "标的物开拍时间没设置");
51
+            return result.toJSONString();
52
+        }
53
+        JSONObject person = sessionWxService.getCurrentLoginPersion();
54
+        String person_id = person.getString("kid");//用户id
55
+        String open_id = person.getString("openid");//用户openid
56
+        t_pm_item_follow pm_item_follow = wxFollowService.getPersonidAndPmid(person_id,pm_item_id);
57
+        if (pm_item_follow == null){
58
+            t_pm_item_follow addParam = new t_pm_item_follow();
59
+            addParam.setPerson_id(person_id);
60
+            addParam.setOpen_id(open_id);
61
+            addParam.setPm_item_id(pm_item_id);
62
+            addParam.setPm_item_name(t_pm_item.getItem_name());
63
+            addParam.setStatus(0);
64
+            addParam.setTime_opening(t_pm_item.getTime_opening());
65
+            wxFollowService.add(addParam);
66
+        }else{
67
+            int status = pm_item_follow.getStatus() == 0? -100 : 0; //转换关注状态
68
+            pm_item_follow.setStatus(status);
69
+            pm_item_follow.setEditd(CreatedTools.getCreated());
70
+            pm_item_follow.setEdit_count(pm_item_follow.getEdit_count()+1);
71
+            wxFollowService.update(pm_item_follow);
72
+        }
73
+        result.put("statuz",true);
74
+        result.put("message", "操作成功");
75
+        return result.toJSONString();
76
+    }
77
+
78
+    @ApiOperation("查询用户关注的标的物")
79
+    @RequestMapping("/list_person_pm_follow")
80
+    public String list_person_pm_follow() {
81
+        JSONObject person = sessionWxService.getCurrentLoginPersion();
82
+        String person_id = person.getString("kid");//用户id
83
+        List<Map<String, Object>> list = wxFollowService.list_person_pm_follow(person_id);
84
+        result.put("data", list);
85
+        return result.toJSONString();
86
+    }
87
+
88
+}

+ 1 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/controller_wxapp/WxItemController.java

@@ -61,6 +61,7 @@ public class WxItemController extends ProjBaseAction {
61 61
 		project_item.setBidding_linkman(bidding_linkman);
62 62
 		project_item.setBidding_contact(bidding_contact);
63 63
 		wxItemService.add(project_item);
64
+		ScheduledController.initSameDayEnd(project_item.getTime_opening());//新增是判断是否需要刷新定时缓存
64 65
 		return result.toJSONString();
65 66
 	}
66 67
 

+ 17 - 4
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/controller_wxapp/WxPmApiController.java

@@ -1,16 +1,16 @@
1 1
 package com.ydw.yunbuyer.web.pm.controller_wxapp;
2 2
 
3
+import com.alibaba.fastjson.JSONObject;
3 4
 import com.ydw.yunbuyer.api.user.api.PersionApi;
4 5
 import com.ydw.yunbuyer.api.user.entity.Persion;
5 6
 import com.ydw.yunbuyer.common.utils.ChkTools;
6 7
 import com.ydw.yunbuyer.web.pm.base.ProjBaseAction;
7 8
 import com.ydw.yunbuyer.web.pm.entity.t_pm_item;
9
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
8 10
 import com.ydw.yunbuyer.web.pm.entity.t_pm_item_submit_offer;
9 11
 import com.ydw.yunbuyer.web.pm.entity.t_shop;
10
-import com.ydw.yunbuyer.web.pm.service.PmItemService;
11
-import com.ydw.yunbuyer.web.pm.service.ShopService;
12
-import com.ydw.yunbuyer.web.pm.service.SlideShowService;
13
-import com.ydw.yunbuyer.web.pm.service.WxPmService;
12
+import com.ydw.yunbuyer.web.pm.service.*;
13
+import com.ydw.yunbuyer.web.pm.web.SessionWxService;
14 14
 import io.swagger.annotations.Api;
15 15
 import io.swagger.annotations.ApiOperation;
16 16
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +52,11 @@ public class WxPmApiController extends ProjBaseAction {
52 52
 	@Autowired
53 53
 	private ShopService shopService;
54 54
 
55
+	@Autowired
56
+	private SessionWxService sessionWxService;
57
+	@Autowired
58
+	private WxFollowService wxFollowService;
59
+
55 60
 	@RequestMapping("/list_item")
56 61
 	public String list_item() {
57 62
 		List<Map<String, Object>> list = pmItemService.list_all_open();
@@ -109,11 +114,19 @@ public class WxPmApiController extends ProjBaseAction {
109 114
 		}
110 115
 		// 竞价记录
111 116
 		List<Map<String, Object>> list1 = wxPmService.bidding_record(kid);
117
+
118
+		// 是否关注查询
119
+		JSONObject person = sessionWxService.getCurrentLoginPersion();
120
+		String person_id = person.getString("kid");//用户id
121
+		t_pm_item_follow pm_follow = wxFollowService.getPersonidAndPmid(person_id, kid);
122
+		Boolean follow = pm_follow == null?false:pm_follow.getStatus()==0; //true 关注 false 没关注
123
+
112 124
 		result.put("nowtime", System.currentTimeMillis());
113 125
 		result.put("imgarray", imgsrclist);
114 126
 		result.put("data", list);
115 127
 		result.put("record", list1);
116 128
 		result.put("statuz", true);
129
+		result.put("follow", follow); //true 关注 false 没关注
117 130
 		return result.toJSONString();
118 131
 	}
119 132
 

+ 15 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/dao/WxFollowDao.java

@@ -0,0 +1,15 @@
1
+package com.ydw.yunbuyer.web.pm.dao;
2
+
3
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
4
+
5
+import java.util.List;
6
+import java.util.Map;
7
+
8
+public interface WxFollowDao extends BaseDao<t_pm_item_follow> {
9
+
10
+    t_pm_item_follow getPersonidAndPmid(String person_id, String pm_item_id);
11
+
12
+    List<Map<String, Object>> list_person_pm_follow(String person_id);
13
+
14
+    List<Map<String, Object>> auto_wx_msg(long nowTime, long queryTime);
15
+}

+ 41 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/daoImpl/WxFollowDaoImpl.java

@@ -0,0 +1,41 @@
1
+package com.ydw.yunbuyer.web.pm.daoImpl;
2
+
3
+import com.ydw.yunbuyer.web.pm.base.BaseMySQLService;
4
+import com.ydw.yunbuyer.web.pm.dao.WxFollowDao;
5
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.stereotype.Repository;
8
+
9
+import java.util.List;
10
+import java.util.Map;
11
+
12
+@Repository
13
+public class WxFollowDaoImpl extends BaseDaoImpl<t_pm_item_follow> implements WxFollowDao {
14
+
15
+    @Autowired
16
+    private BaseMySQLService bs;
17
+
18
+    @Override
19
+    public t_pm_item_follow getPersonidAndPmid(String person_id, String pm_item_id) {
20
+        String sql = "select * from t_pm_item_follow where person_id = '"+person_id+"' and pm_item_id ='"+pm_item_id+"' ";
21
+        t_pm_item_follow t = bs.findObj(sql,t_pm_item_follow.class);
22
+        return t;
23
+    }
24
+
25
+    @Override
26
+    public List<Map<String, Object>> list_person_pm_follow(String person_id) {
27
+        String sql = " select pi.* from t_pm_item_follow t  "
28
+            +" left join t_pm_item pi on pi.kid = t.pm_item_id "
29
+            +" where t.status = 0 and t.person_id = '"+person_id+"' "
30
+            +" ORDER BY t.created desc  ";
31
+        List<Map<String, Object>> list = bs.findList(sql);
32
+        return list;
33
+    }
34
+
35
+    @Override
36
+    public List<Map<String, Object>> auto_wx_msg(long nowTime, long queryTime) {
37
+        String sql = " select open_id,pm_item_name,time_opening from t_pm_item_follow where time_opening > "+nowTime+" and time_opening < "+queryTime;
38
+        List<Map<String, Object>> list = bs.findList(sql);
39
+        return list;
40
+    }
41
+}

+ 50 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/entity/WxMsgVo.java

@@ -0,0 +1,50 @@
1
+package com.ydw.yunbuyer.web.pm.entity;
2
+
3
+import java.util.Map;
4
+
5
+public class WxMsgVo {
6
+    private String touser;//用户openid
7
+    private String template_id;//模版id
8
+    private String page;//默认跳到小程序首页
9
+    private String form_id;//收集到的用户formid
10
+    private String emphasis_keyword = "";//放大那个推送字段
11
+    private Map<String, TemplateData> data;//推送文字
12
+	public String getTouser() {
13
+		return touser;
14
+	}
15
+	public void setTouser(String touser) {
16
+		this.touser = touser;
17
+	}
18
+	public String getTemplate_id() {
19
+		return template_id;
20
+	}
21
+	public void setTemplate_id(String template_id) {
22
+		this.template_id = template_id;
23
+	}
24
+	public String getPage() {
25
+		return page;
26
+	}
27
+	public void setPage(String page) {
28
+		this.page = page;
29
+	}
30
+	public String getForm_id() {
31
+		return form_id;
32
+	}
33
+	public void setForm_id(String form_id) {
34
+		this.form_id = form_id;
35
+	}
36
+	public String getEmphasis_keyword() {
37
+		return emphasis_keyword;
38
+	}
39
+	public void setEmphasis_keyword(String emphasis_keyword) {
40
+		this.emphasis_keyword = emphasis_keyword;
41
+	}
42
+	public Map<String, TemplateData> getData() {
43
+		return data;
44
+	}
45
+	public void setData(Map<String, TemplateData> data) {
46
+		this.data = data;
47
+	}
48
+    
49
+    
50
+}

+ 98 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/entity/t_pm_item_follow.java

@@ -0,0 +1,98 @@
1
+package com.ydw.yunbuyer.web.pm.entity;
2
+
3
+import com.ydw.yunbuyer.common.utils.date.CreatedTools;
4
+import org.tmsps.ne4spring.annotation.Table;
5
+import org.tmsps.ne4spring.orm.model.DataModel;
6
+
7
+
8
+/**
9
+ * 标段(包)
10
+ */
11
+
12
+@Table
13
+public class t_pm_item_follow extends DataModel {
14
+
15
+	/** 表字段 **/
16
+	private String person_id; //用户id
17
+	private String open_id; //用户openid
18
+	private String pm_item_id; //标的物id
19
+	private String pm_item_name; //标的物名称
20
+	private long time_opening; //开始时间
21
+	private int status;	//状态:0.关注 -100.取消关注(假删除)
22
+	private int edit_count; //修改次数
23
+	private long created = CreatedTools.getCreated(); //创建时间
24
+	private long editd = CreatedTools.getCreated(); //修改时间
25
+
26
+	public String getPerson_id() {
27
+		return person_id;
28
+	}
29
+
30
+	public void setPerson_id(String person_id) {
31
+		this.person_id = person_id;
32
+	}
33
+
34
+	public String getPm_item_id() {
35
+		return pm_item_id;
36
+	}
37
+
38
+	public void setPm_item_id(String pm_item_id) {
39
+		this.pm_item_id = pm_item_id;
40
+	}
41
+
42
+	public int getStatus() {
43
+		return status;
44
+	}
45
+
46
+	@Override
47
+	public void setStatus(int status) {
48
+		this.status = status;
49
+	}
50
+
51
+	public int getEdit_count() {
52
+		return edit_count;
53
+	}
54
+
55
+	public void setEdit_count(int edit_count) {
56
+		this.edit_count = edit_count;
57
+	}
58
+
59
+	public long getCreated() {
60
+		return created;
61
+	}
62
+
63
+	public void setCreated(long created) {
64
+		this.created = created;
65
+	}
66
+
67
+	public long getEditd() {
68
+		return editd;
69
+	}
70
+
71
+	public void setEditd(long editd) {
72
+		this.editd = editd;
73
+	}
74
+
75
+	public long getTime_opening() {
76
+		return time_opening;
77
+	}
78
+
79
+	public void setTime_opening(long time_opening) {
80
+		this.time_opening = time_opening;
81
+	}
82
+
83
+	public String getOpen_id() {
84
+		return open_id;
85
+	}
86
+
87
+	public void setOpen_id(String open_id) {
88
+		this.open_id = open_id;
89
+	}
90
+
91
+	public String getPm_item_name() {
92
+		return pm_item_name;
93
+	}
94
+
95
+	public void setPm_item_name(String pm_item_name) {
96
+		this.pm_item_name = pm_item_name;
97
+	}
98
+}

+ 17 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/service/WxFollowService.java

@@ -0,0 +1,17 @@
1
+package com.ydw.yunbuyer.web.pm.service;
2
+
3
+
4
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
5
+
6
+import java.util.List;
7
+import java.util.Map;
8
+
9
+public interface WxFollowService extends BaseService<t_pm_item_follow> {
10
+
11
+    t_pm_item_follow getPersonidAndPmid(String person_id, String pm_item_id);
12
+
13
+    List<Map<String, Object>> list_person_pm_follow(String person_id);
14
+
15
+    List<Map<String, Object>> auto_wx_msg(long nowTime, long queryTime);
16
+
17
+}

+ 31 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/serviceImpl/WxFollowServiceImpl.java

@@ -0,0 +1,31 @@
1
+package com.ydw.yunbuyer.web.pm.serviceImpl;
2
+
3
+import com.ydw.yunbuyer.web.pm.dao.WxFollowDao;
4
+import com.ydw.yunbuyer.web.pm.entity.t_pm_item_follow;
5
+import com.ydw.yunbuyer.web.pm.service.WxFollowService;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.stereotype.Service;
8
+
9
+import java.util.List;
10
+import java.util.Map;
11
+
12
+@Service
13
+public class WxFollowServiceImpl  extends BaseServiceImpl<t_pm_item_follow> implements WxFollowService {
14
+    @Autowired
15
+    private WxFollowDao wxFollowDao;
16
+
17
+    @Override
18
+    public t_pm_item_follow getPersonidAndPmid(String person_id, String pm_item_id) {
19
+        return wxFollowDao.getPersonidAndPmid(person_id,pm_item_id);
20
+    }
21
+
22
+    @Override
23
+    public List<Map<String, Object>> list_person_pm_follow(String person_id) {
24
+        return wxFollowDao.list_person_pm_follow(person_id);
25
+    }
26
+
27
+    @Override
28
+    public List<Map<String, Object>> auto_wx_msg(long nowTime, long queryTime) {
29
+        return wxFollowDao.auto_wx_msg(nowTime,queryTime);
30
+    }
31
+}

+ 166 - 0
krock-pm/krock-web-pm/src/main/java/com/ydw/yunbuyer/web/pm/web/WebMsgTools.java

@@ -0,0 +1,166 @@
1
+package com.ydw.yunbuyer.web.pm.web;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.ydw.yunbuyer.web.pm.entity.TemplateData;
5
+import com.ydw.yunbuyer.web.pm.entity.WxMssVo;
6
+import org.apache.http.client.ClientProtocolException;
7
+import org.tmsps.ne4spring.utils.JsonUtil;
8
+
9
+import java.io.BufferedReader;
10
+import java.io.DataOutputStream;
11
+import java.io.IOException;
12
+import java.io.InputStreamReader;
13
+import java.net.HttpURLConnection;
14
+import java.net.URL;
15
+import java.net.URLConnection;
16
+import java.util.HashMap;
17
+import java.util.List;
18
+import java.util.Map;
19
+import java.util.Random;
20
+
21
+public class WebMsgTools {
22
+	private static String subscribeMessageUrl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
23
+
24
+	/**
25
+	 *  拍卖开始提醒
26
+	 * @return
27
+	 */
28
+	public static String sendAuctionStartReminderMessage(String openId,String thing,String date){
29
+		String url = null;
30
+		try {
31
+			url = subscribeMessageUrl.replace("ACCESS_TOKEN",get_access_Token());
32
+		} catch (IOException e) {
33
+			e.printStackTrace();
34
+		}
35
+		WxMssVo wxMssVo = new WxMssVo();
36
+		wxMssVo.setTouser(openId);
37
+		wxMssVo.setTemplate_id("lAd9AXOhtfFHaSgzd6BMZibSieaYjFb9cu2_1MKUvNY");
38
+		Map<String, TemplateData> m = new HashMap<>();
39
+		TemplateData thing1 = new TemplateData();
40
+		thing1.setValue(thing);
41
+		m.put("thing1",thing1);
42
+
43
+		TemplateData date3 = new TemplateData();
44
+		date3.setValue(date);
45
+		m.put("date2",date3);
46
+
47
+		wxMssVo.setData(m);
48
+		String response = sendPost(url, wxMssVo);
49
+		System.out.println(response);
50
+		return response;
51
+	}
52
+
53
+	/**
54
+	 *  拍卖成功通知
55
+	 * @return
56
+	 */
57
+	public static String sendAuctionSuccessNoticeMessage(String openId,String thing,String amount,String date,String number) throws IOException {
58
+		String url = subscribeMessageUrl.replace("ACCESS_TOKEN",get_access_Token());
59
+		WxMssVo wxMssVo = new WxMssVo();
60
+		wxMssVo.setTouser(openId);
61
+		wxMssVo.setTemplate_id("W0zx3nSHECvFmrkYRGZpnUnsTlTGOaK2b3LbTDeB4cA");
62
+		Map<String, TemplateData> m = new HashMap<>();
63
+		TemplateData thing1 = new TemplateData();
64
+		thing1.setValue(thing);
65
+		m.put("thing1",thing1);
66
+
67
+		TemplateData amount2 = new TemplateData();
68
+		amount2.setValue(amount);
69
+		m.put("amount2",amount2);
70
+
71
+		TemplateData date3 = new TemplateData();
72
+		date3.setValue(date);
73
+		m.put("date3",date3);
74
+
75
+		TemplateData number9 = new TemplateData();
76
+		number9.setValue(number);
77
+		m.put("number9",number9);
78
+
79
+		wxMssVo.setData(m);
80
+		String response = sendPost(url, wxMssVo);
81
+		System.out.println(response);
82
+		return response;
83
+	}
84
+
85
+	public static String get_access_Token() throws ClientProtocolException, IOException {
86
+		String appid = WebTools.getAppId();
87
+		String appsecret = WebTools.getAppSecret();
88
+		String getOpenIdUrl = "https://api.weixin.qq.com/cgi-bin/token?appid=APPID&secret=APPSECRET&grant_type=authorization_code";
89
+		// 获取返回的code
90
+		String requestUrl = getOpenIdUrl.replace("authorization_code", "client_credential").replace("APPID", appid)
91
+				.replace("APPSECRET", appsecret);
92
+		String response = WebTools.sendGetReq(requestUrl);
93
+		System.out.println(response);
94
+		JSONObject jsonobj = JsonUtil.jsonStrToJsonObject(response);
95
+		String access_token = jsonobj.getString("access_token");
96
+		return access_token;
97
+	}
98
+
99
+	public static String sendPost(String url, WxMssVo wxMssVo) {
100
+		String result = "";
101
+		BufferedReader in = null;
102
+		try {
103
+			String urlNameString = url;
104
+			URL realUrl = new URL(urlNameString);
105
+			// 打开和URL之间的连接
106
+			URLConnection urlconnection = realUrl.openConnection();
107
+			urlconnection.setDoOutput(true);
108
+			// 设置通用的请求属性
109
+			HttpURLConnection connection = (HttpURLConnection) urlconnection;
110
+			connection.setRequestProperty("accept", "*/*");
111
+			connection.setRequestProperty("connection", "Keep-Alive");
112
+			connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
113
+			connection.setRequestProperty("Charset", "UTF-8");
114
+			connection.setRequestMethod("POST");
115
+			connection.setDoOutput(true);
116
+			DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
117
+			dos.write(JsonUtil.toJson(wxMssVo).getBytes());
118
+			dos.flush();
119
+			dos.close();
120
+			// 建立实际的连接
121
+			connection.connect();
122
+			// 获取所有响应头字段
123
+			java.util.Map<String, List<String>> map = connection.getHeaderFields();
124
+			// 遍历所有的响应头字段
125
+			for (String key : map.keySet()) {
126
+				System.out.println(key + "--->" + map.get(key));
127
+			}
128
+			// 定义 BufferedReader输入流来读取URL的响应
129
+			in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
130
+			String line;
131
+			while ((line = in.readLine()) != null) {
132
+				result += line;
133
+			}
134
+		} catch (Exception e) {
135
+			System.out.println("发送GET请求出现异常!" + e);
136
+			e.printStackTrace();
137
+		} // 使用finally块来关闭输入流
138
+		finally {
139
+			try {
140
+				if (in != null) {
141
+					in.close();
142
+				}
143
+			} catch (Exception e2) {
144
+				e2.printStackTrace();
145
+			}
146
+		}
147
+		return result;
148
+	}
149
+
150
+	public static void main(String[] args) throws IOException {
151
+//		sendAuctionStartReminderMessage("oIQgR5QOJmf3gMCA2z8HyU9TaI5Q","cs","2022年01月05日");
152
+//		sendAuctionSuccessNoticeMessage("oIQgR5QOJmf3gMCA2z8HyU9TaI5Q","拍品名称","100","2022年01月05日","1");
153
+		int i = -1;
154
+		i >>>= 10;
155
+		System.out.println(i);
156
+		long l = -1;
157
+		l >>>= 10;
158
+		System.out.println(l);
159
+		short s = 1;
160
+		s >>= 10;
161
+		System.out.println(s);
162
+		byte b = 1;
163
+		b >>= 10;
164
+		System.out.println(b);
165
+	}
166
+}