傅行帆 vor 4 Jahren
Ursprung
Commit
d36fd70185

+ 3
- 0
src/main/java/com/huiju/estateagents/redpack/entity/TaMpPerson.java Datei anzeigen

@@ -1,5 +1,7 @@
1 1
 package com.huiju.estateagents.redpack.entity;
2 2
 
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
3 5
 import lombok.Data;
4 6
 import lombok.EqualsAndHashCode;
5 7
 import lombok.experimental.Accessors;
@@ -25,6 +27,7 @@ public class TaMpPerson implements Serializable {
25 27
     /**
26 28
      * 人员ID
27 29
      */
30
+    @TableId(value = "mp_person_id", type = IdType.UUID)
28 31
     private String mpPersonId;
29 32
 
30 33
     /**

+ 8
- 10
src/main/java/com/huiju/estateagents/third/controller/WxRedpackController.java Datei anzeigen

@@ -12,10 +12,8 @@ import me.chanjar.weixin.common.error.WxErrorException;
12 12
 import me.chanjar.weixin.mp.api.WxMpService;
13 13
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
14 14
 import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
15
-import me.chanjar.weixin.mp.bean.result.WxMpUser;
16 15
 import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
17 16
 import org.springframework.beans.factory.annotation.Autowired;
18
-import org.springframework.stereotype.Controller;
19 17
 import org.springframework.web.bind.annotation.*;
20 18
 
21 19
 import javax.servlet.http.HttpServletRequest;
@@ -28,7 +26,7 @@ import java.util.stream.Collectors;
28 26
  * @author Edward
29 27
  */
30 28
 @AllArgsConstructor
31
-@Controller
29
+@RestController
32 30
 @RequestMapping("/api")
33 31
 public class WxRedpackController {
34 32
 
@@ -46,7 +44,7 @@ public class WxRedpackController {
46 44
      * @return
47 45
      */
48 46
     @GetMapping("/third/redirect/{mpAppid}/greet")
49
-    public ResponseBean greetUser(@PathVariable String mpAppid, @RequestParam String code, @RequestParam String personId,@RequestParam String sponsorPersonId,@RequestParam String appid, HttpServletRequest request) {
47
+    public ResponseBean greetUser(@PathVariable String mpAppid, @RequestParam String code, @RequestParam String personId,@RequestParam(required = false) String sponsorPersonId,@RequestParam String appid, HttpServletRequest request) {
50 48
         WxMpService wxService = getWxMpService();
51 49
         if (!wxService.switchover(mpAppid)) {
52 50
             throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", mpAppid));
@@ -55,7 +53,6 @@ public class WxRedpackController {
55 53
         try {
56 54
             //换取openid
57 55
             WxMpOAuth2AccessToken accessToken = wxService.oauth2getAccessToken(code);
58
-            WxMpUser user = wxService.oauth2getUserInfo(accessToken, null);
59 56
             //获取H5项目相关信息
60 57
             QueryWrapper<TaThirdPartyMiniappConfig> taThirdPartyMiniappConfigQueryWrapper = new QueryWrapper<>();
61 58
 
@@ -65,9 +62,10 @@ public class WxRedpackController {
65 62
                 return ResponseBean.error("不存在的H5活动",ResponseBean.ERROR_UNAVAILABLE);
66 63
             }
67 64
             //插入公众号人员信息并插入表
68
-            map = iTaThirdPartyMiniappConfigService.newMpPerson(user, mpAppid, taThirdPartyMiniappConfig.getTargetId(), sponsorPersonId, personId);
65
+            map = iTaThirdPartyMiniappConfigService.newMpPerson(accessToken, mpAppid, taThirdPartyMiniappConfig.getTargetId(), sponsorPersonId, personId);
69 66
         } catch (WxErrorException e) {
70
-            e.printStackTrace();
67
+//            e.printStackTrace();
68
+            return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
71 69
         }
72 70
         return ResponseBean.success(map);
73 71
     }
@@ -95,12 +93,12 @@ public class WxRedpackController {
95 93
     /**
96 94
      * 我要参加 活动接口
97 95
      * @param mpAppid
98
-     * @param mpPersonId
96
+     * @param personId
99 97
      * @param request
100 98
      * @return
101 99
      */
102 100
     @PostMapping("/third/activity/{mpAppid}/participate")
103
-    public ResponseBean participateActivity(@PathVariable String mpAppid, @RequestParam String mpPersonId,@RequestParam String appid, HttpServletRequest request) {
101
+    public ResponseBean participateActivity(@PathVariable String mpAppid, @RequestParam String personId,@RequestParam String appid, HttpServletRequest request) {
104 102
         WxMpService wxService = getWxMpService();
105 103
         if (!wxService.switchover(mpAppid)) {
106 104
             throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", mpAppid));
@@ -114,7 +112,7 @@ public class WxRedpackController {
114 112
             return ResponseBean.error("不存在的H5活动",ResponseBean.ERROR_UNAVAILABLE);
115 113
         }
116 114
         try {
117
-            ResponseBean res = iTaThirdPartyMiniappConfigService.participateActivity(mpAppid,mpPersonId,taThirdPartyMiniappConfig.getTargetId(),taThirdPartyMiniappConfig.getOrgId());
115
+            ResponseBean res = iTaThirdPartyMiniappConfigService.participateActivity(mpAppid,personId,taThirdPartyMiniappConfig.getTargetId(),taThirdPartyMiniappConfig.getOrgId());
118 116
             return res;
119 117
         }catch (Exception e){
120 118
             e.printStackTrace();

+ 5
- 5
src/main/java/com/huiju/estateagents/third/service/ITaThirdPartyMiniappConfigService.java Datei anzeigen

@@ -3,7 +3,7 @@ package com.huiju.estateagents.third.service;
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.huiju.estateagents.base.ResponseBean;
5 5
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
6
-import me.chanjar.weixin.mp.bean.result.WxMpUser;
6
+import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
7 7
 
8 8
 import java.util.Map;
9 9
 
@@ -28,21 +28,21 @@ public interface ITaThirdPartyMiniappConfigService extends IService<TaThirdParty
28 28
 
29 29
 	/**
30 30
 	 * 创建公众号人员并关联上小程序人员
31
-	 * @param user
31
+	 * @param accessToken
32 32
 	 * @param drainageId
33 33
 	 * @param sponsorPersonId
34 34
 	 * @param personId
35 35
 	 */
36
-	Map<String,Object> newMpPerson(WxMpUser user, String mpAppid, String drainageId, String sponsorPersonId, String personId);
36
+	Map<String,Object> newMpPerson(WxMpOAuth2AccessToken accessToken, String mpAppid, String drainageId, String sponsorPersonId, String personId);
37 37
 
38 38
 	/**
39 39
 	 * 参加活动生成参与记录等
40 40
 	 * @param mpAppid
41
-	 * @param mpPersonId
41
+	 * @param personId
42 42
 	 * @param targetId
43 43
 	 * @param orgId
44 44
 	 */
45
-	ResponseBean participateActivity(String mpAppid, String mpPersonId, String targetId, Integer orgId);
45
+	ResponseBean participateActivity(String mpAppid, String personId, String targetId, Integer orgId);
46 46
 
47 47
 	/**
48 48
 	 * 助力活动接口

+ 14
- 20
src/main/java/com/huiju/estateagents/third/service/impl/TaThirdPartyMiniappConfigServiceImpl.java Datei anzeigen

@@ -24,7 +24,7 @@ import com.huiju.estateagents.redpack.mapper.*;
24 24
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
25 25
 import com.huiju.estateagents.third.mapper.TaThirdPartyMiniappConfigMapper;
26 26
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
27
-import me.chanjar.weixin.mp.bean.result.WxMpUser;
27
+import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
28 28
 import org.apache.commons.lang3.StringUtils;
29 29
 import org.springframework.beans.factory.annotation.Autowired;
30 30
 import org.springframework.stereotype.Service;
@@ -133,29 +133,23 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
133 133
 	/**
134 134
 	 * 创建公众号人员并关联上小程序人员
135 135
 	 *
136
-	 * @param user
136
+	 * @param accessToken
137 137
 	 * @param drainageId
138 138
 	 * @param sponsorPersonId
139 139
 	 * @param personId
140 140
 	 */
141 141
 	@Override
142
-	public Map<String,Object> newMpPerson(WxMpUser user, String mpAppid, String drainageId, String sponsorPersonId, String personId) {
142
+	public Map<String,Object> newMpPerson(WxMpOAuth2AccessToken accessToken, String mpAppid, String drainageId, String sponsorPersonId, String personId) {
143 143
 		Map<String,Object> map = new HashMap<>();
144 144
 		//查询这个人员是否存在
145
-		TaMpPerson mpPerson = taMpPersonMapper.selectOne(new QueryWrapper<TaMpPerson>().eq("mp_openid", user.getOpenId()));
145
+		TaMpPerson mpPerson = taMpPersonMapper.selectOne(new QueryWrapper<TaMpPerson>().eq("mp_openid", accessToken.getOpenId()));
146 146
 		//不存在就新建
147 147
 		if (null == mpPerson){
148 148
 			//新增入公众号人员表
149 149
 			TaMpPerson taMpPerson = new TaMpPerson();
150 150
 			taMpPerson.setAppid(mpAppid);
151
-			taMpPerson.setCity(user.getCity());
152
-			taMpPerson.setCountry(user.getCountry());
153 151
 			taMpPerson.setCreateDate(LocalDateTime.now());
154
-			taMpPerson.setHeadimgurl(user.getHeadImgUrl());
155
-			taMpPerson.setMpOpenid(user.getOpenId());
156
-			taMpPerson.setNickname(user.getNickname());
157
-			taMpPerson.setProvince(user.getProvince());
158
-			taMpPerson.setSex(user.getSex());
152
+			taMpPerson.setMpOpenid(accessToken.getOpenId());
159 153
 			taMpPerson.setStatus(CommConstant.STATUS_NORMAL);
160 154
 			taMpPersonMapper.insert(taMpPerson);
161 155
 			mpPerson = taMpPerson;
@@ -197,7 +191,7 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
197 191
 		map.put("mineRedPacketPerson",mineRedPacketPerson);
198 192
 		//token
199 193
 		Map<Object, Object> tokenMap = new HashMap<>();
200
-		tokenMap.put("openId", user.getOpenId());
194
+		tokenMap.put("openId", accessToken.getOpenId());
201 195
 		tokenMap.put("orgId", taRedPacket.getOrgId());
202 196
 		tokenMap.put("personId", taMpMiniapp.getMiniappPersonId());//小程序的personid
203 197
 		map.put("token", JWTUtils.newTokenByMap(tokenMap));
@@ -209,12 +203,12 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
209 203
 	 * 参加活动生成参与记录等
210 204
 	 *
211 205
 	 * @param mpAppid 公众号appid
212
-	 * @param mpPersonId 公众号人员id
206
+	 * @param personId 小程序人员id
213 207
 	 * @param drainageId H5活动id
214 208
 	 * @param orgId 小程序id
215 209
 	 */
216 210
 	@Override
217
-	public ResponseBean participateActivity(String mpAppid, String mpPersonId, String drainageId, Integer orgId) {
211
+	public ResponseBean participateActivity(String mpAppid, String personId, String drainageId, Integer orgId) {
218 212
 		//第一步根据drainggeid查询出红包表对应的记录
219 213
 		TaDrainage taDrainage = taDrainageMapper.selectById(drainageId);
220 214
 		//第二步查询出这个H5对应的活动
@@ -228,26 +222,26 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
228 222
 		}
229 223
 
230 224
 		//参与活动
231
-		TaRedPacketPerson taRedPacketPerson = saveRedPacketPerson(mpPersonId,taRedPacket,orgId);
225
+		TaRedPacketPerson taRedPacketPerson = saveRedPacketPerson(personId,taRedPacket,orgId);
232 226
 
233 227
 		return ResponseBean.success(taRedPacketPerson);
234 228
 	}
235 229
 
236 230
 	/**
237 231
 	 * 参与活动方法--悲观锁
238
-	 * @param mpPersonId
232
+	 * @param personId
239 233
 	 * @param taRedPacket
240 234
 	 * @param orgId
241 235
 	 */
242
-	private synchronized TaRedPacketPerson saveRedPacketPerson(String mpPersonId, TaRedPacket taRedPacket, Integer orgId) {
236
+	private synchronized TaRedPacketPerson saveRedPacketPerson(String personId, TaRedPacket taRedPacket, Integer orgId) {
243 237
 		//查看这个人绑定的小程序用户
244
-		TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", mpPersonId));
238
+		TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("miniapp_person_id", personId));
245 239
 
246 240
 		//查看此人是否参加过活动如果参加过直接返回
247 241
 		QueryWrapper<TaRedPacketPerson> queryWrapper = new QueryWrapper<>();
248 242
 		queryWrapper.eq("activity_id",taRedPacket.getActivityId());
249 243
 		queryWrapper.eq("org_id",orgId);
250
-		queryWrapper.eq("mp_person_id",mpPersonId);
244
+		queryWrapper.eq("mp_person_id",taMpMiniapp.getMpPersonId());
251 245
 		queryWrapper.eq("miniapp_person_id",taMpMiniapp.getMiniappPersonId());
252 246
 		TaRedPacketPerson redPacketPerson = taRedPacketPersonMapper.selectOne(queryWrapper);
253 247
 		if (null != redPacketPerson){
@@ -260,7 +254,7 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
260 254
 		taRedPacketPerson.setCreateDate(LocalDateTime.now());
261 255
 		taRedPacketPerson.setIsSignedUp(true);
262 256
 		taRedPacketPerson.setMiniappPersonId(taMpMiniapp.getMiniappPersonId());
263
-		taRedPacketPerson.setMpPersonId(mpPersonId);
257
+		taRedPacketPerson.setMpPersonId(taMpMiniapp.getMpPersonId());
264 258
 		taRedPacketPerson.setOrgId(orgId);
265 259
 		taRedPacketPersonMapper.insert(taRedPacketPerson);
266 260
 		return taRedPacketPerson;