소스 검색

新需求

傅行帆 5 년 전
부모
커밋
d36fd70185

+ 3
- 0
src/main/java/com/huiju/estateagents/redpack/entity/TaMpPerson.java 파일 보기

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

+ 8
- 10
src/main/java/com/huiju/estateagents/third/controller/WxRedpackController.java 파일 보기

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

+ 5
- 5
src/main/java/com/huiju/estateagents/third/service/ITaThirdPartyMiniappConfigService.java 파일 보기

3
 import com.baomidou.mybatisplus.extension.service.IService;
3
 import com.baomidou.mybatisplus.extension.service.IService;
4
 import com.huiju.estateagents.base.ResponseBean;
4
 import com.huiju.estateagents.base.ResponseBean;
5
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
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
 import java.util.Map;
8
 import java.util.Map;
9
 
9
 
28
 
28
 
29
 	/**
29
 	/**
30
 	 * 创建公众号人员并关联上小程序人员
30
 	 * 创建公众号人员并关联上小程序人员
31
-	 * @param user
31
+	 * @param accessToken
32
 	 * @param drainageId
32
 	 * @param drainageId
33
 	 * @param sponsorPersonId
33
 	 * @param sponsorPersonId
34
 	 * @param personId
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
 	 * @param mpAppid
40
 	 * @param mpAppid
41
-	 * @param mpPersonId
41
+	 * @param personId
42
 	 * @param targetId
42
 	 * @param targetId
43
 	 * @param orgId
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 파일 보기

24
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
24
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
25
 import com.huiju.estateagents.third.mapper.TaThirdPartyMiniappConfigMapper;
25
 import com.huiju.estateagents.third.mapper.TaThirdPartyMiniappConfigMapper;
26
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
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
 import org.apache.commons.lang3.StringUtils;
28
 import org.apache.commons.lang3.StringUtils;
29
 import org.springframework.beans.factory.annotation.Autowired;
29
 import org.springframework.beans.factory.annotation.Autowired;
30
 import org.springframework.stereotype.Service;
30
 import org.springframework.stereotype.Service;
133
 	/**
133
 	/**
134
 	 * 创建公众号人员并关联上小程序人员
134
 	 * 创建公众号人员并关联上小程序人员
135
 	 *
135
 	 *
136
-	 * @param user
136
+	 * @param accessToken
137
 	 * @param drainageId
137
 	 * @param drainageId
138
 	 * @param sponsorPersonId
138
 	 * @param sponsorPersonId
139
 	 * @param personId
139
 	 * @param personId
140
 	 */
140
 	 */
141
 	@Override
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
 		Map<String,Object> map = new HashMap<>();
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
 		if (null == mpPerson){
147
 		if (null == mpPerson){
148
 			//新增入公众号人员表
148
 			//新增入公众号人员表
149
 			TaMpPerson taMpPerson = new TaMpPerson();
149
 			TaMpPerson taMpPerson = new TaMpPerson();
150
 			taMpPerson.setAppid(mpAppid);
150
 			taMpPerson.setAppid(mpAppid);
151
-			taMpPerson.setCity(user.getCity());
152
-			taMpPerson.setCountry(user.getCountry());
153
 			taMpPerson.setCreateDate(LocalDateTime.now());
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
 			taMpPerson.setStatus(CommConstant.STATUS_NORMAL);
153
 			taMpPerson.setStatus(CommConstant.STATUS_NORMAL);
160
 			taMpPersonMapper.insert(taMpPerson);
154
 			taMpPersonMapper.insert(taMpPerson);
161
 			mpPerson = taMpPerson;
155
 			mpPerson = taMpPerson;
197
 		map.put("mineRedPacketPerson",mineRedPacketPerson);
191
 		map.put("mineRedPacketPerson",mineRedPacketPerson);
198
 		//token
192
 		//token
199
 		Map<Object, Object> tokenMap = new HashMap<>();
193
 		Map<Object, Object> tokenMap = new HashMap<>();
200
-		tokenMap.put("openId", user.getOpenId());
194
+		tokenMap.put("openId", accessToken.getOpenId());
201
 		tokenMap.put("orgId", taRedPacket.getOrgId());
195
 		tokenMap.put("orgId", taRedPacket.getOrgId());
202
 		tokenMap.put("personId", taMpMiniapp.getMiniappPersonId());//小程序的personid
196
 		tokenMap.put("personId", taMpMiniapp.getMiniappPersonId());//小程序的personid
203
 		map.put("token", JWTUtils.newTokenByMap(tokenMap));
197
 		map.put("token", JWTUtils.newTokenByMap(tokenMap));
209
 	 * 参加活动生成参与记录等
203
 	 * 参加活动生成参与记录等
210
 	 *
204
 	 *
211
 	 * @param mpAppid 公众号appid
205
 	 * @param mpAppid 公众号appid
212
-	 * @param mpPersonId 公众号人员id
206
+	 * @param personId 小程序人员id
213
 	 * @param drainageId H5活动id
207
 	 * @param drainageId H5活动id
214
 	 * @param orgId 小程序id
208
 	 * @param orgId 小程序id
215
 	 */
209
 	 */
216
 	@Override
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
 		//第一步根据drainggeid查询出红包表对应的记录
212
 		//第一步根据drainggeid查询出红包表对应的记录
219
 		TaDrainage taDrainage = taDrainageMapper.selectById(drainageId);
213
 		TaDrainage taDrainage = taDrainageMapper.selectById(drainageId);
220
 		//第二步查询出这个H5对应的活动
214
 		//第二步查询出这个H5对应的活动
228
 		}
222
 		}
229
 
223
 
230
 		//参与活动
224
 		//参与活动
231
-		TaRedPacketPerson taRedPacketPerson = saveRedPacketPerson(mpPersonId,taRedPacket,orgId);
225
+		TaRedPacketPerson taRedPacketPerson = saveRedPacketPerson(personId,taRedPacket,orgId);
232
 
226
 
233
 		return ResponseBean.success(taRedPacketPerson);
227
 		return ResponseBean.success(taRedPacketPerson);
234
 	}
228
 	}
235
 
229
 
236
 	/**
230
 	/**
237
 	 * 参与活动方法--悲观锁
231
 	 * 参与活动方法--悲观锁
238
-	 * @param mpPersonId
232
+	 * @param personId
239
 	 * @param taRedPacket
233
 	 * @param taRedPacket
240
 	 * @param orgId
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
 		QueryWrapper<TaRedPacketPerson> queryWrapper = new QueryWrapper<>();
241
 		QueryWrapper<TaRedPacketPerson> queryWrapper = new QueryWrapper<>();
248
 		queryWrapper.eq("activity_id",taRedPacket.getActivityId());
242
 		queryWrapper.eq("activity_id",taRedPacket.getActivityId());
249
 		queryWrapper.eq("org_id",orgId);
243
 		queryWrapper.eq("org_id",orgId);
250
-		queryWrapper.eq("mp_person_id",mpPersonId);
244
+		queryWrapper.eq("mp_person_id",taMpMiniapp.getMpPersonId());
251
 		queryWrapper.eq("miniapp_person_id",taMpMiniapp.getMiniappPersonId());
245
 		queryWrapper.eq("miniapp_person_id",taMpMiniapp.getMiniappPersonId());
252
 		TaRedPacketPerson redPacketPerson = taRedPacketPersonMapper.selectOne(queryWrapper);
246
 		TaRedPacketPerson redPacketPerson = taRedPacketPersonMapper.selectOne(queryWrapper);
253
 		if (null != redPacketPerson){
247
 		if (null != redPacketPerson){
260
 		taRedPacketPerson.setCreateDate(LocalDateTime.now());
254
 		taRedPacketPerson.setCreateDate(LocalDateTime.now());
261
 		taRedPacketPerson.setIsSignedUp(true);
255
 		taRedPacketPerson.setIsSignedUp(true);
262
 		taRedPacketPerson.setMiniappPersonId(taMpMiniapp.getMiniappPersonId());
256
 		taRedPacketPerson.setMiniappPersonId(taMpMiniapp.getMiniappPersonId());
263
-		taRedPacketPerson.setMpPersonId(mpPersonId);
257
+		taRedPacketPerson.setMpPersonId(taMpMiniapp.getMpPersonId());
264
 		taRedPacketPerson.setOrgId(orgId);
258
 		taRedPacketPerson.setOrgId(orgId);
265
 		taRedPacketPersonMapper.insert(taRedPacketPerson);
259
 		taRedPacketPersonMapper.insert(taRedPacketPerson);
266
 		return taRedPacketPerson;
260
 		return taRedPacketPerson;