Explorar el Código

新需求 H5活动的外部接口

傅行帆 hace 5 años
padre
commit
7633095384

+ 10
- 0
src/main/java/com/huiju/estateagents/drainage/entity/TaDrainage.java Ver fichero

@@ -86,4 +86,14 @@ public class TaDrainage implements Serializable {
86 86
     @TableField(exist = false)
87 87
     private String appSecret;
88 88
 
89
+    /**
90
+     * 对应的H5的活动类型
91
+     */
92
+    private String activityType;
93
+
94
+    /**
95
+     * 对应的H5的活动id
96
+     */
97
+    private String activityId;
98
+
89 99
 }

+ 1
- 1
src/main/java/com/huiju/estateagents/redpack/entity/TaMpPerson.java Ver fichero

@@ -45,7 +45,7 @@ public class TaMpPerson implements Serializable {
45 45
     /**
46 46
      * 性别
47 47
      */
48
-    private Boolean sex;
48
+    private Integer sex;
49 49
 
50 50
     /**
51 51
      * 省份

+ 48
- 13
src/main/java/com/huiju/estateagents/third/controller/WxRedpackController.java Ver fichero

@@ -1,17 +1,19 @@
1 1
 package com.huiju.estateagents.third.controller;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.huiju.estateagents.base.ResponseBean;
4 5
 import com.huiju.estateagents.common.WxMpUtils;
6
+import com.huiju.estateagents.redpack.entity.TaMpPerson;
7
+import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
8
+import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
5 9
 import lombok.AllArgsConstructor;
6 10
 import me.chanjar.weixin.common.error.WxErrorException;
7 11
 import me.chanjar.weixin.mp.api.WxMpService;
8 12
 import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
9 13
 import me.chanjar.weixin.mp.bean.result.WxMpUser;
14
+import org.springframework.beans.factory.annotation.Autowired;
10 15
 import org.springframework.stereotype.Controller;
11
-import org.springframework.web.bind.annotation.GetMapping;
12
-import org.springframework.web.bind.annotation.PathVariable;
13
-import org.springframework.web.bind.annotation.RequestMapping;
14
-import org.springframework.web.bind.annotation.RequestParam;
16
+import org.springframework.web.bind.annotation.*;
15 17
 
16 18
 import javax.servlet.http.HttpServletRequest;
17 19
 
@@ -24,31 +26,64 @@ import javax.servlet.http.HttpServletRequest;
24 26
 public class WxRedpackController {
25 27
     public WxMpUtils wxMpUtils;
26 28
 
29
+    @Autowired
30
+    public ITaThirdPartyMiniappConfigService iTaThirdPartyMiniappConfigService;
31
+
27 32
     /**
28 33
      * 换取openid接口并插入公众号人员表
29
-     * @param appid
34
+     * @param mpAppid
30 35
      * @param code
31 36
      * @param request
32 37
      * @return
33 38
      */
34
-    @GetMapping("/third/redirect/{appid}/greet")
35
-    public ResponseBean greetUser(@PathVariable String appid, @RequestParam String code, HttpServletRequest request) {
39
+    @GetMapping("/third/redirect/{mpAppid}/greet")
40
+    public ResponseBean greetUser(@PathVariable String mpAppid, @RequestParam String code, @RequestParam String personId, HttpServletRequest request) {
36 41
         WxMpService wxService = wxMpUtils.wxMpService();
37
-        if (!wxService.switchover(appid)) {
38
-            throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
42
+        if (!wxService.switchover(mpAppid)) {
43
+            throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", mpAppid));
39 44
         }
40
-        String openId = null;
45
+        TaMpPerson taMpPerson = new TaMpPerson();
41 46
         try {
42 47
             //换取openid
43 48
             WxMpOAuth2AccessToken accessToken = wxService.oauth2getAccessToken(code);
44 49
             WxMpUser user = wxService.oauth2getUserInfo(accessToken, null);
45
-            openId = user.getOpenId();
46
-            //插入公众号人员信息并插入表
47 50
 
51
+            //获取H5项目相关信息
52
+            String xAppid = request.getHeader("x-appid");
53
+             //获取小程序appid
54
+            String miniAppid = request.getHeader("appid");
55
+            //插入公众号人员信息并插入表
56
+            taMpPerson = iTaThirdPartyMiniappConfigService.newMpPerson(user, mpAppid, xAppid, miniAppid, personId);
48 57
         } catch (WxErrorException e) {
49 58
             e.printStackTrace();
50 59
         }
60
+        return ResponseBean.success(taMpPerson);
61
+    }
51 62
 
52
-        return ResponseBean.success(openId);
63
+    /**
64
+     * 我要参加 活动接口
65
+     * @param mpAppid
66
+     * @param mpPersonId
67
+     * @param request
68
+     * @return
69
+     */
70
+    @PostMapping("/third/activity/{mpAppid}/participate")
71
+    public ResponseBean participateActivity(@PathVariable String mpAppid, @RequestParam String mpPersonId, HttpServletRequest request) {
72
+        //获取H5项目相关信息
73
+        String xAppid = request.getHeader("x-appid");
74
+        QueryWrapper<TaThirdPartyMiniappConfig> taThirdPartyMiniappConfigQueryWrapper = new QueryWrapper<>();
75
+
76
+        taThirdPartyMiniappConfigQueryWrapper.eq("appid", xAppid);
77
+        TaThirdPartyMiniappConfig taThirdPartyMiniappConfig = iTaThirdPartyMiniappConfigService.getOne(taThirdPartyMiniappConfigQueryWrapper);
78
+        if (null == taThirdPartyMiniappConfig){
79
+            return ResponseBean.error("不存在的H5活动",ResponseBean.ERROR_UNAVAILABLE);
80
+        }
81
+        try {
82
+            ResponseBean res = iTaThirdPartyMiniappConfigService.participateActivity(mpAppid,mpPersonId,taThirdPartyMiniappConfig.getTargetId(),taThirdPartyMiniappConfig.getOrgId());
83
+            return res;
84
+        }catch (Exception e){
85
+            e.printStackTrace();
86
+            return ResponseBean.error("程序出错请联系运营人员",ResponseBean.ERROR_ILLEGAL_PARAMS);
87
+        }
53 88
     }
54 89
 }

+ 21
- 0
src/main/java/com/huiju/estateagents/third/service/ITaThirdPartyMiniappConfigService.java Ver fichero

@@ -1,7 +1,10 @@
1 1
 package com.huiju.estateagents.third.service;
2 2
 
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.huiju.estateagents.base.ResponseBean;
5
+import com.huiju.estateagents.redpack.entity.TaMpPerson;
4 6
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
7
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
5 8
 
6 9
 /**
7 10
  * <p>
@@ -21,4 +24,22 @@ public interface ITaThirdPartyMiniappConfigService extends IService<TaThirdParty
21 24
 	 * @return
22 25
 	 */
23 26
 	String checkToken(String tokenHeader, String appidHeader, String nowHeader);
27
+
28
+	/**
29
+	 * 创建公众号人员并关联上小程序人员
30
+	 * @param user
31
+	 * @param xAppid
32
+	 * @param miniAppid
33
+	 * @param personId
34
+	 */
35
+	TaMpPerson newMpPerson(WxMpUser user, String mpAppid, String xAppid, String miniAppid, String personId);
36
+
37
+	/**
38
+	 * 参加活动生成参与记录等
39
+	 * @param mpAppid
40
+	 * @param mpPersonId
41
+	 * @param targetId
42
+	 * @param orgId
43
+	 */
44
+	ResponseBean participateActivity(String mpAppid, String mpPersonId, String targetId, Integer orgId);
24 45
 }

+ 120
- 1
src/main/java/com/huiju/estateagents/third/service/impl/TaThirdPartyMiniappConfigServiceImpl.java Ver fichero

@@ -2,10 +2,23 @@ package com.huiju.estateagents.third.service.impl;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
+import com.huiju.estateagents.base.ResponseBean;
6
+import com.huiju.estateagents.common.CommConstant;
5 7
 import com.huiju.estateagents.common.MD5Utils;
8
+import com.huiju.estateagents.drainage.entity.TaDrainage;
9
+import com.huiju.estateagents.drainage.mapper.TaDrainageMapper;
10
+import com.huiju.estateagents.redpack.entity.TaMpMiniapp;
11
+import com.huiju.estateagents.redpack.entity.TaMpPerson;
12
+import com.huiju.estateagents.redpack.entity.TaRedPacket;
13
+import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
14
+import com.huiju.estateagents.redpack.mapper.TaMpMiniappMapper;
15
+import com.huiju.estateagents.redpack.mapper.TaMpPersonMapper;
16
+import com.huiju.estateagents.redpack.mapper.TaRedPacketMapper;
17
+import com.huiju.estateagents.redpack.mapper.TaRedPacketPersonMapper;
6 18
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
7 19
 import com.huiju.estateagents.third.mapper.TaThirdPartyMiniappConfigMapper;
8 20
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
21
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
9 22
 import org.springframework.beans.factory.annotation.Autowired;
10 23
 import org.springframework.stereotype.Service;
11 24
 
@@ -24,7 +37,22 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
24 37
 	
25 38
 	@Autowired
26 39
 	private TaThirdPartyMiniappConfigMapper taThirdPartyMiniappConfigMapper;
27
-	
40
+
41
+	@Autowired
42
+	private TaMpPersonMapper taMpPersonMapper;
43
+
44
+	@Autowired
45
+	private TaMpMiniappMapper taMpMiniappMapper;
46
+
47
+	@Autowired
48
+	private TaDrainageMapper taDrainageMapper;
49
+
50
+	@Autowired
51
+	private TaRedPacketMapper taRedPacketMapper;
52
+
53
+	@Autowired
54
+	private TaRedPacketPersonMapper taRedPacketPersonMapper;
55
+
28 56
 	/**
29 57
 	 * 校验是否合法第三方接口调用
30 58
 	 *
@@ -58,4 +86,95 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
58 86
 		
59 87
 		return "success";
60 88
 	}
89
+
90
+	/**
91
+	 * 创建公众号人员并关联上小程序人员
92
+	 *
93
+	 * @param user
94
+	 * @param xAppid
95
+	 * @param miniAppid
96
+	 * @param personId
97
+	 */
98
+	@Override
99
+	public TaMpPerson newMpPerson(WxMpUser user,String mpAppid, String xAppid, String miniAppid, String personId) {
100
+		//查询这个人员是否存在
101
+		TaMpPerson mpPerson = taMpPersonMapper.selectOne(new QueryWrapper<TaMpPerson>().eq("mp_openid", user.getOpenId()));
102
+		//不存在就新建
103
+		if (null == mpPerson){
104
+			//新增入公众号人员表
105
+			TaMpPerson taMpPerson = new TaMpPerson();
106
+			taMpPerson.setAppid(mpAppid);
107
+			taMpPerson.setCity(user.getCity());
108
+			taMpPerson.setCountry(user.getCountry());
109
+			taMpPerson.setCreateDate(LocalDateTime.now());
110
+			taMpPerson.setHeadimgurl(user.getHeadImgUrl());
111
+			taMpPerson.setMpOpenid(user.getOpenId());
112
+			taMpPerson.setMpPersonId(personId);
113
+			taMpPerson.setNickname(user.getNickname());
114
+			taMpPerson.setProvince(user.getProvince());
115
+			taMpPerson.setSex(user.getSex());
116
+			taMpPerson.setStatus(CommConstant.STATUS_NORMAL);
117
+			taMpPersonMapper.insert(taMpPerson);
118
+			mpPerson = taMpPerson;
119
+		}
120
+
121
+		//查看这个人是否绑定了小程序用户
122
+		TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", mpPerson.getMpPersonId()).eq("miniapp_person_id", personId));
123
+		if (null == taMpMiniapp){
124
+			taMpMiniapp = new TaMpMiniapp();
125
+			taMpMiniapp.setMpPersonId(mpPerson.getMpPersonId());
126
+			taMpMiniapp.setMiniappPersonId(personId);
127
+			taMpMiniappMapper.insert(taMpMiniapp);
128
+		}
129
+
130
+		return mpPerson;
131
+	}
132
+
133
+	/**
134
+	 * 参加活动生成参与记录等
135
+	 *
136
+	 * @param mpAppid 公众号appid
137
+	 * @param mpPersonId 公众号人员id
138
+	 * @param drainageId H5活动id
139
+	 * @param orgId 小程序id
140
+	 */
141
+	@Override
142
+	public ResponseBean participateActivity(String mpAppid, String mpPersonId, String drainageId, Integer orgId) {
143
+		//第一步根据drainggeid查询出红包表对应的记录
144
+		TaDrainage taDrainage = taDrainageMapper.selectById(drainageId);
145
+		//第二步查询出这个H5对应的活动
146
+		TaRedPacket taRedPacket = taRedPacketMapper.selectById(taDrainage.getActivityId());
147
+		//判断这个活动的过期时间
148
+		if (LocalDateTime.now().isAfter(taRedPacket.getEndDate())){
149
+			return ResponseBean.error(taRedPacket.getActivityEndTip(),ResponseBean.ERROR_ILLEGAL_PARAMS);
150
+		}
151
+		if (LocalDateTime.now().isBefore(taRedPacket.getStartDate())){
152
+			return ResponseBean.error("此活动未开始",ResponseBean.ERROR_ILLEGAL_PARAMS);
153
+		}
154
+
155
+		//查看这个人绑定的小程序用户
156
+		TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", mpPersonId));
157
+
158
+		//查看此人是否参加过活动如果参加过直接返回
159
+		QueryWrapper<TaRedPacketPerson> queryWrapper = new QueryWrapper<>();
160
+		queryWrapper.eq("activity_id",taRedPacket.getActivityId());
161
+		queryWrapper.eq("org_id",orgId);
162
+		queryWrapper.eq("mp_person_id",mpPersonId);
163
+		queryWrapper.eq("miniapp_person_id",taMpMiniapp.getMiniappPersonId());
164
+		TaRedPacketPerson redPacketPerson = taRedPacketPersonMapper.selectOne(queryWrapper);
165
+		if (null != redPacketPerson){
166
+			return ResponseBean.success(redPacketPerson);
167
+		}
168
+
169
+		//参与活动
170
+		TaRedPacketPerson taRedPacketPerson = new TaRedPacketPerson();
171
+		taRedPacketPerson.setActivityId(taRedPacket.getActivityId());
172
+		taRedPacketPerson.setCreateDate(LocalDateTime.now());
173
+		taRedPacketPerson.setIsSignedUp(true);
174
+		taRedPacketPerson.setMiniappPersonId(taMpMiniapp.getMiniappPersonId());
175
+		taRedPacketPerson.setMpPersonId(mpPersonId);
176
+		taRedPacketPerson.setOrgId(orgId);
177
+		taRedPacketPersonMapper.insert(taRedPacketPerson);
178
+		return ResponseBean.success(taRedPacketPerson);
179
+	}
61 180
 }