Commit 35cb731a 35cb731ab31d86a26c594d2e1880fa50f6b237a6 by xianghan@topdraw.cn

1.修改部分保存逻辑

1 parent 48a55ab0
...@@ -8,6 +8,7 @@ import com.topdraw.annotation.Log; ...@@ -8,6 +8,7 @@ import com.topdraw.annotation.Log;
8 import com.topdraw.business.module.member.profile.domain.MemberProfile; 8 import com.topdraw.business.module.member.profile.domain.MemberProfile;
9 import com.topdraw.business.module.member.service.dto.MemberDTO; 9 import com.topdraw.business.module.member.service.dto.MemberDTO;
10 import com.topdraw.business.module.user.iptv.domain.UserTv; 10 import com.topdraw.business.module.user.iptv.domain.UserTv;
11 import com.topdraw.business.module.user.weixin.service.UserWeixinService;
11 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO; 12 import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
12 import com.topdraw.business.process.domian.TempIptvUser; 13 import com.topdraw.business.process.domian.TempIptvUser;
13 import com.topdraw.business.process.domian.UnbindGroup; 14 import com.topdraw.business.process.domian.UnbindGroup;
...@@ -49,6 +50,10 @@ public class UserOperationController { ...@@ -49,6 +50,10 @@ public class UserOperationController {
49 @Autowired 50 @Autowired
50 private UserOperationService userTvOperationService; 51 private UserOperationService userTvOperationService;
51 @Autowired 52 @Autowired
53 private UserWeixinService userWeixinService;
54 @Autowired
55 private WeiXinRequestUtil weixinRequestUtil;
56 @Autowired
52 private RedisUtils redisUtils; 57 private RedisUtils redisUtils;
53 58
54 @Log("新增大屏账户同时创建会员信息") 59 @Log("新增大屏账户同时创建会员信息")
...@@ -175,6 +180,7 @@ public class UserOperationController { ...@@ -175,6 +180,7 @@ public class UserOperationController {
175 @ApiOperation("微信公众号关注") 180 @ApiOperation("微信公众号关注")
176 @AnonymousAccess 181 @AnonymousAccess
177 public ResultInfo subscribe(@Validated @RequestBody SubscribeBeanEvent data) throws IOException { 182 public ResultInfo subscribe(@Validated @RequestBody SubscribeBeanEvent data) throws IOException {
183
178 String content = data.getContent(); 184 String content = data.getContent();
179 SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class); 185 SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class);
180 186
...@@ -185,6 +191,11 @@ public class UserOperationController { ...@@ -185,6 +191,11 @@ public class UserOperationController {
185 } 191 }
186 192
187 193
194 /**
195 *
196 * @param subscribeBean
197 * @throws IOException
198 */
188 private void parseSubscribe(SubscribeBean subscribeBean) throws IOException { 199 private void parseSubscribe(SubscribeBean subscribeBean) throws IOException {
189 if (Objects.nonNull(subscribeBean)) { 200 if (Objects.nonNull(subscribeBean)) {
190 201
...@@ -211,15 +222,14 @@ public class UserOperationController { ...@@ -211,15 +222,14 @@ public class UserOperationController {
211 if (ObjectUtil.notEqual(appType, WeChatConstants.WX_SUBSCRIPTION)) 222 if (ObjectUtil.notEqual(appType, WeChatConstants.WX_SUBSCRIPTION))
212 throw new BadRequestException("非订阅号"); 223 throw new BadRequestException("非订阅号");
213 224
214 // 用户类型 225 UserWeixinDTO userWeixinDTO = this.userWeixinService.findFirstByAppIdAndOpenId(appId, openId);
215 // JSONObject userInfo = weixinRequestUtil.getUserInfo(wxInfoMap, openId); 226 if (Objects.nonNull(userWeixinDTO.getId())) {
216 JSONObject userInfo = new JSONObject(); 227 unionId = userWeixinDTO.getUnionid();
217 userInfo.put("unionid","oqDha5idQxR0WGPW2qHi-meHRtyg"); 228 } else {
218 log.info("userInfo is : {}", userInfo.toJSONString()); 229 JSONObject userInfo = this.weixinRequestUtil.getUserInfo(wxInfoMap, openId);
219 unionId = userInfo.get("unionid").toString(); 230 unionId = userInfo.getString("unionid");
231 }
220 232
221 if (StringUtils.isBlank(unionId))
222 throw new BadRequestException("unionid 不存在!");
223 } 233 }
224 234
225 // unionId不得为空 235 // unionId不得为空
......
1 package com.topdraw.business.process.service; 1 package com.topdraw.business.process.service;
2 2
3 import com.alibaba.fastjson.JSONObject;
3 import com.topdraw.business.module.member.profile.domain.MemberProfile; 4 import com.topdraw.business.module.member.profile.domain.MemberProfile;
4 import com.topdraw.business.module.member.service.dto.MemberDTO; 5 import com.topdraw.business.module.member.service.dto.MemberDTO;
5 import com.topdraw.business.module.user.iptv.domain.UserTv; 6 import com.topdraw.business.module.user.iptv.domain.UserTv;
...@@ -42,6 +43,9 @@ public interface UserOperationService { ...@@ -42,6 +43,9 @@ public interface UserOperationService {
42 43
43 /** 44 /**
44 * 微信公众号关注 45 * 微信公众号关注
46 * 1.团粉,会员vip=0,则修改为vip=1
47 * 2.判断是否通过扫描大屏的二维码进行关注的,如果是需要绑定大屏账户,将对应会员中iptvUserId绑定大屏对应的id
48 * 3.修改微信账户的status字段为1(已关注)
45 * @param resources 49 * @param resources
46 * @return 50 * @return
47 */ 51 */
...@@ -123,4 +127,7 @@ public interface UserOperationService { ...@@ -123,4 +127,7 @@ public interface UserOperationService {
123 * @return 127 * @return
124 */ 128 */
125 Map<String, Object> checkBind(BindBean bindBean); 129 Map<String, Object> checkBind(BindBean bindBean);
130
131
132 JSONObject getUnionIdByAppIdAndOpenId(String appId,String secret,String code);
126 } 133 }
......
...@@ -196,7 +196,7 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -196,7 +196,7 @@ public class UserOperationServiceImpl implements UserOperationService {
196 throw new BadRequestException("大屏信息不存在!"); 196 throw new BadRequestException("大屏信息不存在!");
197 } 197 }
198 198
199 // 大屏账户绑定小屏会员的code 199 // 大屏是否绑定主账号
200 this.bondPriorityMember(userTvDTO,memberDTO_0,"auto"); 200 this.bondPriorityMember(userTvDTO,memberDTO_0,"auto");
201 201
202 // 小屏会员绑定大屏账户id 202 // 小屏会员绑定大屏账户id
...@@ -980,6 +980,7 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -980,6 +980,7 @@ public class UserOperationServiceImpl implements UserOperationService {
980 980
981 // 保存、修改会员加密信息 981 // 保存、修改会员加密信息
982 return this.doSaveOrUpdateMemberProfile(weiXinBeanDefinition,resources); 982 return this.doSaveOrUpdateMemberProfile(weiXinBeanDefinition,resources);
983
983 } 984 }
984 985
985 @Override 986 @Override
...@@ -1033,6 +1034,7 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1033,6 +1034,7 @@ public class UserOperationServiceImpl implements UserOperationService {
1033 @Override 1034 @Override
1034 public boolean deleteAllCollection(String content) { 1035 public boolean deleteAllCollection(String content) {
1035 try { 1036 try {
1037
1036 log.info("receive UserCollection delete all message, content {}", content); 1038 log.info("receive UserCollection delete all message, content {}", content);
1037 JSONObject jsonObject = JSONObject.parseObject(content); 1039 JSONObject jsonObject = JSONObject.parseObject(content);
1038 String platformAccount = jsonObject.getString("platformAccount"); 1040 String platformAccount = jsonObject.getString("platformAccount");
...@@ -1041,12 +1043,15 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1041,12 +1043,15 @@ public class UserOperationServiceImpl implements UserOperationService {
1041 1043
1042 Long id = userTvDTO.getId(); 1044 Long id = userTvDTO.getId();
1043 List<UserCollection> userCollections = this.userCollectionService.findByUserIdAndType(id, type); 1045 List<UserCollection> userCollections = this.userCollectionService.findByUserIdAndType(id, type);
1046
1044 if (userCollections == null || userCollections.isEmpty()) { 1047 if (userCollections == null || userCollections.isEmpty()) {
1045 return false; 1048 return false;
1046 } 1049 }
1050
1047 for (UserCollection userCollection : userCollections) { 1051 for (UserCollection userCollection : userCollections) {
1048 this.userCollectionDetailService.deleteAllByUserCollectionId(userCollection.getId()); 1052 this.userCollectionDetailService.deleteAllByUserCollectionId(userCollection.getId());
1049 } 1053 }
1054
1050 } catch (Exception e) { 1055 } catch (Exception e) {
1051 log.error("CollectionDeleteConsumer || UserCollection delete all error || {}", e.toString(), e); 1056 log.error("CollectionDeleteConsumer || UserCollection delete all error || {}", e.toString(), e);
1052 } 1057 }
...@@ -1122,46 +1127,63 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1122,46 +1127,63 @@ public class UserOperationServiceImpl implements UserOperationService {
1122 JSONObject jsonObject = JSONObject.parseObject(content); 1127 JSONObject jsonObject = JSONObject.parseObject(content);
1123 String platformAccount = jsonObject.getString("platformAccount"); 1128 String platformAccount = jsonObject.getString("platformAccount");
1124 String data = jsonObject.getString("data"); 1129 String data = jsonObject.getString("data");
1125 if (StringUtils.isBlank(data) || !data.startsWith("[")) { 1130
1131 if (StringUtils.isBlank(data) || !data.startsWith("["))
1126 return false; 1132 return false;
1127 } 1133
1134
1128 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount); 1135 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
1129 1136
1130 Long tvUserId = userTvDTO.getId(); 1137 Long tvUserId = userTvDTO.getId();
1131 List<UserCollectionMq> userCollectionMqList = JSONObject.parseArray(data, UserCollectionMq.class); 1138 List<UserCollectionMq> userCollectionMqList = JSONObject.parseArray(data, UserCollectionMq.class);
1132 if (userCollectionMqList == null || userCollectionMqList.isEmpty()) { 1139
1140 if (userCollectionMqList == null || userCollectionMqList.isEmpty())
1133 return false; 1141 return false;
1134 } 1142
1143
1135 Map<Long, List<UserCollectionMq>> collect = userCollectionMqList.stream().collect(Collectors.groupingBy(UserCollectionMq::getUserCollectionId)); 1144 Map<Long, List<UserCollectionMq>> collect = userCollectionMqList.stream().collect(Collectors.groupingBy(UserCollectionMq::getUserCollectionId));
1145
1136 for (Map.Entry<Long, List<UserCollectionMq>> entry : collect.entrySet()) { 1146 for (Map.Entry<Long, List<UserCollectionMq>> entry : collect.entrySet()) {
1147
1137 List<UserCollectionMq> value = entry.getValue(); 1148 List<UserCollectionMq> value = entry.getValue();
1138 UserCollectionMq userCollectionMq = value.get(0); 1149 UserCollectionMq userCollectionMq = value.get(0);
1139 if (StringUtils.isBlank(userCollectionMq.getName())) { 1150 if (StringUtils.isBlank(userCollectionMq.getName()))
1140 userCollectionMq.setName("DEFAULT"); 1151 userCollectionMq.setName("DEFAULT");
1141 } 1152
1153
1142 UserCollection userCollection = this.userCollectionService 1154 UserCollection userCollection = this.userCollectionService
1143 .findFirstByUserIdAndTypeAndName(tvUserId, userCollectionMq.getType(), userCollectionMq.getName()).orElseGet(UserCollection::new); 1155 .findFirstByUserIdAndTypeAndName(tvUserId, userCollectionMq.getType(), userCollectionMq.getName()).orElseGet(UserCollection::new);
1156
1144 userCollection.setAppId(userCollectionMq.getAppId()) 1157 userCollection.setAppId(userCollectionMq.getAppId())
1145 .setUserId(tvUserId) 1158 .setUserId(tvUserId)
1146 .setName(userCollectionMq.getName()) 1159 .setName(userCollectionMq.getName())
1147 .setType(userCollectionMq.getType()) 1160 .setType(userCollectionMq.getType())
1148 .setCount(userCollection.getCount() == null ? value.size() : userCollection.getCount() + value.size()); 1161 .setCount(userCollection.getCount() == null ? value.size() : userCollection.getCount() + value.size());
1149 UserCollection userCollectionSave = this.userCollectionService.save(userCollection); 1162 UserCollection userCollectionSave = this.userCollectionService.save(userCollection);
1163
1150 for (UserCollectionMq collectionMq : value) { 1164 for (UserCollectionMq collectionMq : value) {
1165
1151 UserCollectionDetail userCollectionDetail = collectionMq2DetailMapper.toEntity(collectionMq); 1166 UserCollectionDetail userCollectionDetail = collectionMq2DetailMapper.toEntity(collectionMq);
1152 Optional<UserCollectionDetail> userCollectionDetailOptional = userCollectionDetailRepository 1167 Optional<UserCollectionDetail> userCollectionDetailOptional = userCollectionDetailRepository
1153 .findByDetailIdAndDetailTypeAndUserCollectionId(userCollectionDetail.getDetailId(), userCollectionDetail.getDetailType(), userCollectionSave.getId()); 1168 .findByDetailIdAndDetailTypeAndUserCollectionId(userCollectionDetail.getDetailId(), userCollectionDetail.getDetailType(), userCollectionSave.getId());
1154 //观影记录同一天只存一条记录 1169 //观影记录同一天只存一条记录
1155 if (userCollectionDetailOptional.isPresent() && 1170 if (userCollectionDetailOptional.isPresent() &&
1156 DateUtil.isSameDay(new Date(userCollectionDetailOptional.get().getCreateTime().getTime()), new Date())) { 1171 DateUtil.isSameDay(new Date(userCollectionDetailOptional.get().getCreateTime().getTime()), new Date())) {
1172
1157 userCollectionDetail.setId(userCollectionDetailOptional.get().getId()); 1173 userCollectionDetail.setId(userCollectionDetailOptional.get().getId());
1174
1158 } else { 1175 } else {
1176
1159 userCollectionDetail.setId(null) 1177 userCollectionDetail.setId(null)
1160 .setUserCollectionId(userCollectionSave.getId()); 1178 .setUserCollectionId(userCollectionSave.getId());
1179
1161 } 1180 }
1181
1162 userCollectionDetailRepository.save(userCollectionDetail); 1182 userCollectionDetailRepository.save(userCollectionDetail);
1183
1163 } 1184 }
1164 } 1185 }
1186
1165 } catch (Exception e) { 1187 } catch (Exception e) {
1166 log.error("CollectionAddConsumer || UserCollection add error || {}", e.toString(), e); 1188 log.error("CollectionAddConsumer || UserCollection add error || {}", e.toString(), e);
1167 } 1189 }
...@@ -1170,23 +1192,34 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1170,23 +1192,34 @@ public class UserOperationServiceImpl implements UserOperationService {
1170 1192
1171 @Override 1193 @Override
1172 public List<MemberDTO> findBindByPlatformAccount(String platformAccount) { 1194 public List<MemberDTO> findBindByPlatformAccount(String platformAccount) {
1195
1173 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount); 1196 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
1197
1174 if (Objects.nonNull(userTvDTO.getId())) { 1198 if (Objects.nonNull(userTvDTO.getId())) {
1199
1175 Long id = userTvDTO.getId(); 1200 Long id = userTvDTO.getId();
1176 String priorityMemberCode = userTvDTO.getPriorityMemberCode(); 1201 String priorityMemberCode = userTvDTO.getPriorityMemberCode();
1177 List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id); 1202 List<MemberDTO> memberDTOList = this.memberService.findByUserIptvId(id);
1203
1178 if (!CollectionUtils.isEmpty(memberDTOList)) { 1204 if (!CollectionUtils.isEmpty(memberDTOList)) {
1205
1179 for (MemberDTO memberDTO : memberDTOList) { 1206 for (MemberDTO memberDTO : memberDTOList) {
1207
1180 String code = memberDTO.getCode(); 1208 String code = memberDTO.getCode();
1181 if (code.equalsIgnoreCase(priorityMemberCode)) { 1209 if (code.equalsIgnoreCase(priorityMemberCode)) {
1182 memberDTO.setIptvMajor(IPTV_MAJOR[1]); 1210 memberDTO.setIptvMajor(IPTV_MAJOR[1]);
1183 } else { 1211 } else {
1184 memberDTO.setIptvMajor(IPTV_MAJOR[0]); 1212 memberDTO.setIptvMajor(IPTV_MAJOR[0]);
1185 } 1213 }
1214
1186 } 1215 }
1216
1187 } 1217 }
1218
1188 return memberDTOList; 1219 return memberDTOList;
1220
1189 } 1221 }
1222
1190 return null; 1223 return null;
1191 } 1224 }
1192 1225
...@@ -1306,6 +1339,27 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -1306,6 +1339,27 @@ public class UserOperationServiceImpl implements UserOperationService {
1306 return map; 1339 return map;
1307 } 1340 }
1308 1341
1342 @Override
1343 public JSONObject getUnionIdByAppIdAndOpenId(String appId,String secret,String code) {
1344 // 链接微信服务器
1345 String url = WeChatConstants.CODE2SESSION.replace("APPID", appId)
1346 .replace("SECRET", secret).replace("JSCODE", code);
1347
1348 String entityBody = HttpUtil.get(url);
1349 log.info("entityBody [{}]",entityBody);
1350
1351 JSONObject jsonObject = JSONObject.parseObject(entityBody);
1352
1353 String errCode = jsonObject.getString("errcode");
1354
1355 if (StringUtils.isNotEmpty(errCode)) {
1356 String nameStr = jsonObject.getString("errmsg");
1357 throw new BadRequestException(nameStr);
1358 }
1359
1360 return jsonObject;
1361 }
1362
1309 /** 1363 /**
1310 * 通过id检索大屏信息 1364 * 通过id检索大屏信息
1311 * @param userIptvId 1365 * @param userIptvId
......