Commit e81bd386 e81bd386ed2e5ad032471f9b7dc289d310485e54 by xianghan

1.优化

1 parent aa35f24e
......@@ -28,4 +28,5 @@ public class SubscribeBean extends WeiXinUserBean {
private String nickname;
private String headimgurl;
private String sourceInfo;
}
......
......@@ -151,6 +151,7 @@ public class UserOperationController {
*/
private void parseSubscribe(SubscribeBean subscribeBean) throws IOException {
// appId
String appId = subscribeBean.getAppid();
Assert.notNull(appId, GlobeExceptionMsg.APP_ID_IS_NULL);
// openId
......@@ -169,6 +170,7 @@ public class UserOperationController {
// 非订阅号,暂不处理。返回暂不支持
if (ObjectUtil.notEqual(appType, WeChatConstants.WX_SUBSCRIPTION))
throw new BadRequestException("非订阅号");
}
// 大屏账户信息
......@@ -178,7 +180,6 @@ public class UserOperationController {
if (StringUtils.isNotBlank(content)) {
// 大屏信息
iptvUserInfo = JSONObject.parseObject(content);
}
// 用户自己搜索关注就没有大屏信息,否则表示扫码关注
......@@ -186,6 +187,10 @@ public class UserOperationController {
subscribeBean.setIptvUserInfo(iptvUserInfo);
String sourceInfo = iptvUserInfo.get("sourceInfo").toString();
if (StringUtils.isNotBlank(sourceInfo))
subscribeBean.setSourceInfo(sourceInfo);
String headimgurl = iptvUserInfo.get("headimgurl").toString();
String nickname = iptvUserInfo.get("nickname").toString();
if (StringUtils.isNotBlank(nickname)) {
......@@ -199,7 +204,19 @@ public class UserOperationController {
subscribeBean.setHeadimgurl(headimgurlDecode);
}
} else {
// headimgurl
String headimgurl = subscribeBean.getHeadimgurl();
if (StringUtils.isNotBlank(headimgurl)) {
String headImgUrl = this.downloadWeixinImge(headimgurl);
subscribeBean.setHeadimgurl(headImgUrl);
}
}
}
@PostMapping("/unsubscribe")
......@@ -300,8 +317,6 @@ public class UserOperationController {
platformAccount1 = userTvDTO.getPlatformAccount();
}
} else {
// 数据异常,没有会员
......@@ -333,12 +348,14 @@ public class UserOperationController {
String nicknameEncode = Base64Util.encode(nicknameDecode);
memberDTO.setNickname(nicknameEncode);
}
if (StringUtils.isNotBlank(headimgurl)) {
String headimgurlDecode = URLDecoder.decode(headimgurl, "UTF-8");
String imageEncode = Base64Util.encode(headimgurlDecode);
String image = RestTemplateClient.netImage(headimgurlDecode);
memberDTO.setAvatarUrl(StringUtils.isNotBlank(image) == true ? image:headimgurlDecode);
}
} catch (Exception e) {
log.info("头像解析失败!!!");
e.printStackTrace();
......@@ -366,6 +383,20 @@ public class UserOperationController {
return success;
}
private String downloadWeixinImge(String headimgurl){
try {
if (StringUtils.isNotBlank(headimgurl)) {
String image = RestTemplateClient.netImage(headimgurl);
return image;
}
} catch (Exception e) {
log.info("头像解析失败!!!");
e.printStackTrace();
}
return null;
}
/******************************************************* IPTV ************************************/
......
......@@ -28,6 +28,13 @@ public interface UserOperationService {
UserWeixinDTO createWeixinUserAndMember(UserWeixin resources);
/**
* 保存小屏账户并创建会员
* @param resources
* @return
*/
UserWeixinDTO createWeixinUserAndMember(UserWeixin resources, Integer vip);
/**
* 服务号(H5)登录
* @param resources
* @return
......
......@@ -58,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.util.CollectionUtils;
import springfox.documentation.spring.web.json.Json;
import java.net.URLDecoder;
import java.util.*;
......@@ -208,7 +209,11 @@ public class UserOperationServiceImpl implements UserOperationService {
@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public UserWeixinDTO createWeixinUserAndMember(UserWeixin resources) {
return this.createWeixinUserAndMember(resources, 0);
}
@Override
public UserWeixinDTO createWeixinUserAndMember(UserWeixin resources, Integer vip) {
String appId = resources.getAppid();
String openId = resources.getOpenid();
String unionId = resources.getUnionid();
......@@ -249,7 +254,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 有其他账号但都无会员,新建会员并将此账号绑定新建的这个会员
Member _member =
MemberBuilder.build(LocalConstants.MEMBER_PLATFORM_TYPE_WEIXIN,
headimgurl, nickname, 0, sex);
headimgurl, nickname, vip, sex);
MemberDTO memberDTO = this.createMember(_member);
......@@ -273,7 +278,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 该账号存在但无其他账号,新建会员
Member _member =
MemberBuilder.build(LocalConstants.MEMBER_PLATFORM_TYPE_WEIXIN,
headimgurl, nickname, 0, sex);
headimgurl, nickname, vip, sex);
MemberDTO memberDTO = this.createMember(_member);
......@@ -326,7 +331,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 新建会员
Member _member =
MemberBuilder.build(LocalConstants.MEMBER_PLATFORM_TYPE_WEIXIN,
headimgurl, nickname, 0, sex);
headimgurl, nickname, vip, sex);
MemberDTO memberDTO = this.createMember(_member);
......@@ -407,6 +412,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 小屏账户
UserWeixinDTO userWeixinDTO = this.findFirstByUnionIdAndAppIdAndOpenId(unionId,appId, openId);
MemberDTO memberDTO = null;
if (Objects.isNull(userWeixinDTO.getId())) {
UserWeixin userWeixin = new UserWeixin();
......@@ -414,68 +420,103 @@ public class UserOperationServiceImpl implements UserOperationService {
userWeixin.setStatus(SUBSCRIBE_STATUS);
// 创建小屏账户同时创建会员
this.createWeixinUserAndMember(userWeixin);
UserWeixinDTO userWeixinDTO1 = this.createWeixinUserAndMember(userWeixin, 1);
Long memberId = userWeixinDTO1.getMemberId();
memberDTO = this.memberService.findById(memberId);
} else {
// 修改微信账户关注状态
UserWeixinDTO _userWeixinDTO = this.doUpdateUserWeiXinStatus(userWeixinDTO, SUBSCRIBE_STATUS);
// 同步至iptv
// ((UserOperationServiceImpl)AopContext.currentProxy()).asyncWeixin(_userWeixinDTO);
// 小屏会员
memberDTO = this.findMemberByAppIdAndOpenId(appId,openId);
// 大屏信息
JSONObject iptvUserInfo = resources.getIptvUserInfo();
if (Objects.nonNull(iptvUserInfo)) {
if (memberDTO != null) {
// 小屏会员
MemberDTO memberDTO = this.findMemberByAppIdAndOpenId(appId,openId);
if (StringUtils.isNotBlank(headImgUrl) && StringUtils.isNotBlank(nickname)) {
memberDTO.setAvatarUrl(headImgUrl);
memberDTO.setNickname(nickname);
}
if (memberDTO != null) {
Integer vip = memberDTO.getVip();
// 未购买付费会员
if (Objects.isNull(vip) || vip < 1) {
memberDTO.setVip(1);
}
if (StringUtils.isNotBlank(headImgUrl) && StringUtils.isNotBlank(nickname)) {
memberDTO.setAvatarUrl(headImgUrl);
memberDTO.setNickname(nickname);
}
}
Integer vip = memberDTO.getVip();
// 未购买付费会员
if (Objects.isNull(vip) || vip < 1) {
memberDTO.setVip(1);
}
}
// 修改会员信息
MemberDTO _memberDTO1 = this.doUpdateMemberByMemberDTO(memberDTO);
// 同步至iptv
((UserOperationServiceImpl)AopContext.currentProxy()).asyncSubscribe(new MemberAndWeixinUserDTO(_memberDTO1, _userWeixinDTO));
// 修改会员信息
MemberDTO _memberDTO1 = this.doUpdateMemberByMemberDTO(memberDTO);
// 同步至iptv
((UserOperationServiceImpl)AopContext.currentProxy()).asyncSubscribe(new MemberAndWeixinUserDTO(_memberDTO1, _userWeixinDTO));
// 大屏信息
JSONObject iptvUserInfo = resources.getIptvUserInfo();
if (Objects.nonNull(iptvUserInfo)) {
// 大屏账户
String platformAccount = iptvUserInfo.getString("platformAccount");
// 绑定
this.bind(memberDTO, platformAccount);
// 保存关注记录
this.saveWechatSubscribeRecord(memberDTO, 1);
}
}
// 保存关注记录
String sourceInfo = resources.getSourceInfo();
this.saveWechatSubscribeRecord(memberDTO, sourceInfo, 1);
return true;
}
/**
*
* @param memberDTO
* @param subscribe
* @param sourceInfo
*/
private void saveWechatSubscribeRecord(MemberDTO memberDTO, int subscribe) {
private void saveWechatSubscribeRecord(MemberDTO memberDTO, String sourceInfo, int subscribe) {
WechatSubscribeRecord wechatSubscribeRecord = new WechatSubscribeRecord();
wechatSubscribeRecord.setCode(IdWorker.generatorString());
wechatSubscribeRecord.setMemberId(memberDTO.getId());
wechatSubscribeRecord.setOperationFlag(subscribe);
if (StringUtils.isBlank(sourceInfo)) {
wechatSubscribeRecord.setEntityType(3);
} else {
JSONObject jsonObject = JSONObject.parseObject(sourceInfo, JSONObject.class);
Object activityId = jsonObject.get("activityId");
Object activityCode = jsonObject.get("activityCode");
Object entityType = jsonObject.get("entityType");
if (Objects.nonNull(entityType)) {
String s = entityType.toString();
switch (s) {
case "1":
wechatSubscribeRecord.setSourceType(1);
wechatSubscribeRecord.setEntityType(1);
break;
case "2":
if (Objects.nonNull(activityId))
wechatSubscribeRecord.setEntityId(Long.valueOf(activityId.toString()));
if (Objects.nonNull(activityCode))
wechatSubscribeRecord.setEntityCode(activityCode.toString());
wechatSubscribeRecord.setSourceType(2);
wechatSubscribeRecord.setEntityType(2);
break;
default:
wechatSubscribeRecord.setSourceType(3);
wechatSubscribeRecord.setEntityType(3);
break;
}
}
wechatSubscribeRecord.setSourceInfo(sourceInfo);
}
this.wechatSubscribeRecordService.create(wechatSubscribeRecord);
}
......@@ -505,12 +546,26 @@ public class UserOperationServiceImpl implements UserOperationService {
((UserOperationServiceImpl)AopContext.currentProxy()).asyncUnsubscribe(new MemberAndWeixinUserDTO(_memberDTO, userWeixinDTO));
// 关注记录
this.saveWechatSubscribeRecord(_memberDTO, 2);
this.saveWechatSubscribeRecord(_memberDTO, "",2);
return true;
}
private String downloadWeixinImgeFromAppEngine(String headimgurl){
try {
if (StringUtils.isNotBlank(headimgurl)) {
String headimgurlDecode = URLDecoder.decode(headimgurl, "UTF-8");
String image = RestTemplateClient.netImage(headimgurlDecode);
return image;
}
} catch (Exception e) {
log.info("头像解析失败!!!");
e.printStackTrace();
}
return null;
}
/**
* 更新大屏信息,同时判断是否已经关注,如果关注了则不跳转H5页面
......@@ -534,7 +589,7 @@ public class UserOperationServiceImpl implements UserOperationService {
String headimgurl = json.get("headimgurl").toString();
if (StringUtils.isNotBlank(headimgurl)) {
String headimgurlDecode = URLDecoder.decode(headimgurl, "UTF-8");
String image = RestTemplateClient.netImage(headimgurlDecode);
String image = this.downloadWeixinImgeFromAppEngine(headimgurlDecode);
if (StringUtils.isNotBlank(image))
json.put("headimgurl",image);
}
......
......@@ -2,12 +2,8 @@ package com.topdraw.resttemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.business.module.member.address.domain.MemberAddress;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.ResponseEntity;
......@@ -17,7 +13,6 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
......
......@@ -48,11 +48,11 @@ public class WechatSubscribeRecord implements Serializable {
// 实例code
@Column(name = "entity_code")
private Long entityCode;
private String entityCode;
// 实例类型 1:大屏扫码;2:营销活动;
@Column(name = "entity_type")
private Long entityType;
private Integer entityType;
// 来源类型 1:大屏;2:营销活动;3:其他;
@Column(name = "source_type")
......
......@@ -28,10 +28,10 @@ public class WechatSubscribeRecordDTO implements Serializable {
private Long entityId;
// 实例code
private Long entityCode;
private String entityCode;
// 实例类型 1:大屏扫码;2:营销活动;
private Long entityType;
private Integer entityType;
// 来源类型 1:大屏;2:营销活动;3:其他;
private Integer sourceType;
......