Parcourir la source

公众号微信代码移除

zoujiajian il y a 2 ans
Parent
commit
dec74da57f
24 fichiers modifiés avec 5 ajouts et 2301 suppressions
  1. 0 11
      netflix-dao/src/main/java/com/cyksj/mapper/SpotifyRegisterMapper.java
  2. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/SpotifyUnLimitRecordMapper.java
  3. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/gzh/GzhMsgTemplateRelationMapper.java
  4. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/gzh/UserGzhRelationMapper.java
  5. 0 27
      netflix-dao/src/main/java/com/cyksj/model/entity/GzhMsgTemplateRelation.java
  6. 0 29
      netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java
  7. 0 13
      netflix-service/src/main/java/com/cyksj/service/gzh/GzhService.java
  8. 0 265
      netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java
  9. 0 13
      netflix-service/src/main/java/com/cyksj/service/gzh/factory/GzhMsgService.java
  10. 0 30
      netflix-service/src/main/java/com/cyksj/service/gzh/factory/GzhMsgServiceFactory.java
  11. 0 20
      netflix-service/src/main/java/com/cyksj/service/gzh/factory/TextMsgService.java
  12. 0 26
      netflix-service/src/main/java/com/cyksj/service/gzh/impl/GzhServiceImpl.java
  13. 0 81
      netflix-service/src/main/java/com/cyksj/service/mange/impl/SpotifySendMsgServiceImpl.java
  14. 0 37
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  15. 0 45
      netflix-service/src/main/java/com/cyksj/service/register/RegisterOrderDonService.java
  16. 0 12
      netflix-service/src/main/java/com/cyksj/service/register/SpotifyService.java
  17. 0 510
      netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java
  18. 0 337
      netflix-service/src/main/java/com/cyksj/service/register/impl/SpotifyServiceImpl.java
  19. 1 38
      netflix-service/src/main/java/com/cyksj/service/template/TemplateCommonService.java
  20. 2 202
      netflix-service/src/main/java/com/cyksj/service/template/impl/TemplateCommonServiceImpl.java
  21. 2 2
      netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java
  22. 0 80
      netflix-web/src/main/java/com/cyksj/web/controller/manage/gzh/GzhController.java
  23. 0 209
      netflix-web/src/main/java/com/cyksj/web/controller/manage/register/CmsRegisterController.java
  24. 0 275
      netflix-web/src/main/java/com/cyksj/web/controller/register/RegisterController.java

+ 0 - 11
netflix-dao/src/main/java/com/cyksj/mapper/SpotifyRegisterMapper.java

@@ -1,11 +0,0 @@
-package com.cyksj.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.SpotifyRegister;
-
-/**
- * @author chan
- * @date 2022/11/3 4:16 PM
- */
-public interface SpotifyRegisterMapper extends BaseMapper<SpotifyRegister> {
-}

+ 0 - 13
netflix-dao/src/main/java/com/cyksj/mapper/SpotifyUnLimitRecordMapper.java

@@ -1,13 +0,0 @@
-package com.cyksj.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.SpotifyUnLimitRecord;
-
-/*
- *项目名: netflix
- *文件名: SpotifyUnLimitRecordMapper
- *创建者: JavaZou
- *创建时间:2022/12/20 14:12
- */
-public interface SpotifyUnLimitRecordMapper extends BaseMapper<SpotifyUnLimitRecord> {
-}

+ 0 - 13
netflix-dao/src/main/java/com/cyksj/mapper/gzh/GzhMsgTemplateRelationMapper.java

@@ -1,13 +0,0 @@
-package com.cyksj.mapper.gzh;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.GzhMsgTemplateRelation;
-
-/*
- *项目名: netflix
- *文件名: GzhMsgTemplateRelationMapper
- *创建者: JavaZou
- *创建时间:2023/1/16 12:27
- */
-public interface GzhMsgTemplateRelationMapper extends BaseMapper<GzhMsgTemplateRelation> {
-}

+ 0 - 13
netflix-dao/src/main/java/com/cyksj/mapper/gzh/UserGzhRelationMapper.java

@@ -1,13 +0,0 @@
-package com.cyksj.mapper.gzh;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.UserGzhRelation;
-
-/*
- *项目名: netflix
- *文件名: UserGzhRelationMapper
- *创建者: JavaZou
- *创建时间:2023/1/16 10:58
- */
-public interface UserGzhRelationMapper extends BaseMapper<UserGzhRelation> {
-}

+ 0 - 27
netflix-dao/src/main/java/com/cyksj/model/entity/GzhMsgTemplateRelation.java

@@ -1,27 +0,0 @@
-package com.cyksj.model.entity;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/*
- *项目名: netflix
- *文件名: GzhMsgTemplateRelation
- *创建者: JavaZou
- *创建时间:2023/1/16 12:26
- */
-@Getter
-@Setter
-public class GzhMsgTemplateRelation extends BaseEntity{
-	private Long wxAppId;
-
-	private String templateId;
-
-	private String url;
-
-	private String remark;
-
-	/**
-	 * 测试/线上(dev\prd)
-	 */
-	private String type;
-}

+ 0 - 29
netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java

@@ -27,7 +27,6 @@ import com.cyksj.model.request.ExchangeCodeTicket;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.exchange.ExchangeCodeService;
 import com.cyksj.service.relation.GroupRelationFrontService;
-import com.cyksj.service.template.TemplateCommonService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
@@ -76,8 +75,6 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 
 	private final LuckyDrawRecordMapper luckyDrawRecordMapper;
 
-	private final TemplateCommonService templateCommonService;
-
 	private final BeanSearcher beanSearcher;
 
 	private final GroupRelationFrontService groupRelationFrontService;
@@ -259,32 +256,6 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 			orderDon.setUserId(user.getId());
 			orderDonMapper.insert(orderDon);
 		}
-//		if (StrUtil.isNotEmpty(user.getOpenId())) {
-//			//发送模板消息
-//			THREAD_POOL_TASK_EXECUTOR.execute(() -> {
-//				try {
-//					if (StrUtil.isNotEmpty(user.getOpenId())) {
-//						log.info("用户{}兑换车位成功,发送新订单模板消息", user.getId());
-//						templateCommonService.newOderSendMsgByType(orderDon, goodsDon, user, user.getOpenId(), false);
-//					}
-//				} catch (Exception e) {
-//					log.info("用户{}兑换车位成功,发送消息失败:{}", user.getId(), e);
-//				}
-//			});
-//		}
-//
-//		THREAD_POOL_TASK_EXECUTOR.execute(() -> {
-//			try {
-//				//发送至客服消息
-//				List<CustomerService> customerServices = customerServiceMapper.selectList(null);
-//				for (CustomerService customerService : customerServices) {
-//					log.info("向客服{}发送用户兑换码兑换车票消息通知..", customerService.getNickName());
-//					templateCommonService.newOderSendMsgByType(orderDon, goodsDon, user, customerService.getOpenId(), true);
-//				}
-//			} catch (Exception e) {
-//				log.error("向客服发送用户{}兑换码兑换车票成功,发送消息失败:{}", user.getId(), e);
-//			}
-//		});
 		relation.setOrderId(orderDon.getId());
 		return relation;
 	}

+ 0 - 13
netflix-service/src/main/java/com/cyksj/service/gzh/GzhService.java

@@ -1,13 +0,0 @@
-package com.cyksj.service.gzh;
-
-import com.cyksj.model.dto.MsgEvent;
-
-/*
- *项目名: netflix
- *文件名: GzhService
- *创建者: JavaZou
- *创建时间:2023/1/13 17:09
- */
-public interface GzhService {
-	String gzhMsg(MsgEvent msgEvent);
-}

+ 0 - 265
netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java

@@ -1,265 +0,0 @@
-package com.cyksj.service.gzh.factory;
-
-import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.cyksj.common.constant.Constant;
-import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
-import com.cyksj.common.util.Codec;
-import com.cyksj.common.util.Jsons;
-import com.cyksj.common.util.StringUtil;
-import com.cyksj.config.WeChatConfig;
-import com.cyksj.mapper.UserMapper;
-import com.cyksj.mapper.WxAppMapper;
-import com.cyksj.mapper.gzh.UserGzhRelationMapper;
-import com.cyksj.mapper.manage.cps.UserDistributePopularizeMapper;
-import com.cyksj.model.dto.GzhBodyDto;
-import com.cyksj.model.dto.GzhUnionidUserinfo;
-import com.cyksj.model.dto.MsgEvent;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.UserDistributePopularize;
-import com.cyksj.model.entity.UserGzhRelation;
-import com.cyksj.model.entity.WxApp;
-import com.cyksj.redis.RedisService;
-import com.cyksj.service.distribute.DistributeService;
-import com.cyksj.service.distribute.equipment.EquipmentDistributeService;
-import com.cyksj.service.market.task.BindTaskService;
-import com.cyksj.service.user.UserService;
-import com.cyksj.service.wechat.WeChatService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.stereotype.Service;
-
-import java.util.Optional;
-
-/*
- *项目名: netflix
- *文件名: EventMsgService
- *创建者: JavaZou
- *创建时间:2023/1/13 18:16
- */
-@Service("event")
-@RequiredArgsConstructor
-@Slf4j
-public class EventMsgService implements GzhMsgService {
-	private final UserMapper userMapper;
-
-	private final UserGzhRelationMapper userGzhRelationMapper;
-
-	private final WeChatService weChatService;
-
-	private final WxAppMapper wxAppMapper;
-
-	private final RedisService redisService;
-
-	private final DistributeService distributeService;
-
-	private final EquipmentDistributeService equipDistributeService;
-
-	private final UserService userService;
-
-	private final WeChatConfig weChatConfig;
-
-	private final UserDistributePopularizeMapper distributePopularizeMapper;
-
-	private final BindTaskService bindTaskService;
-
-	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
-
-	@Override
-	public String handleNotify(MsgEvent msgEvent) {
-		try {
-			if (msgEvent.getEvent() == MsgEvent.Event.subscribe) {
-				String eventKey = msgEvent.getEventKey();
-				if (StrUtil.isNotEmpty(eventKey) && eventKey.contains("qrscene")) {
-					msgEvent.setEventKey(eventKey.substring(eventKey.indexOf("qrscene_") + 8));
-				}
-				if (!saveOrGetUser(msgEvent)) {
-					return "";
-				}
-			} else if (msgEvent.getEvent() == MsgEvent.Event.unsubscribe) {
-				UserGzhRelation userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class)
-						.eq(UserGzhRelation::getOpenId, msgEvent.getFromUserName()).last("limit 1"));
-				if (userGzhRelation == null) {
-					return "";
-				}
-				userGzhRelation.setIsSubscribe(false);
-				userGzhRelationMapper.updateById(userGzhRelation);
-			} else if (msgEvent.getEvent() == MsgEvent.Event.SCAN) {
-				if (!saveOrGetUser(msgEvent)) {
-					return "";
-				}
-			}
-			return "";
-		} catch (Exception e) {
-			log.error("接收微信公众:{},报错:{}", msgEvent.getToUserName(), e == null ? "" : e.getMessage());
-			return "";
-		}
-	}
-
-	public Boolean saveOrGetUser(MsgEvent msgEvent) throws Exception {
-		//扫描带参数二维码 场景值
-		String sceneKey = msgEvent.getEventKey();
-
-		String openId = msgEvent.getFromUserName();
-		if (StrUtil.isEmpty(openId)) {
-			return false;
-		}
-		//迁移公众号之后同步授权后信息
-		//是否是迁移用户
-//		WxSyncLog wxSyncLog = wxSyncLogMapper.selectOne(Wrappers.lambdaQuery(WxSyncLog.class)
-//				.eq(WxSyncLog::getToAppid, weChatConfig.getAppid())
-//				.eq(WxSyncLog::getNewOpenid, openId).last("limit 1"));
-
-		WxApp wxApp = wxAppMapper.selectOne(Wrappers.lambdaQuery(WxApp.class)
-				.eq(WxApp::getGzhOriginalId, msgEvent.getToUserName()).last("limit 1"));
-		if (wxApp == null) {
-			return false;
-		}
-		GzhUnionidUserinfo info = weChatService.getUserInfo2(weChatService.getAccessToken(wxApp.getAppId()), openId);
-		User user = userService.getSyncUser(info.getOpenid(), info.getUnionid(), null);
-
-		String state = redisService.getStr(RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getNameFormat(sceneKey));
-		GzhBodyDto gzhDto = null;
-		if (StrUtil.isNotEmpty(state)) {
-			// 转跳参数
-			String json = Codec.DoBase64.custom().setData(state).decodeAsText();
-			if (StrUtil.isNotEmpty(json)) {
-				try {
-					gzhDto = Jsons.parseObject(json, GzhBodyDto.class);
-				} catch (Exception e) {
-				}
-			}
-		}
-		Boolean isNewUser = false;
-		if (user == null) {
-			isNewUser = true;
-			user = new User();
-			user.setNickname(String.format("%s%s", Constant.DEFAULT_NAME, Codec.DoDigest.custom().setAlgorithm(Codec.DoDigest.Algorithm.MD5).setStringData(RandomUtil.randomString(10)).toHexString().substring(0, 6)))
-					.setSex(info.getSex())
-					.setCountry(info.getCountry())
-					.setProvince(info.getProvince())
-					.setCity(info.getCity())
-					.setHeadimgurl(Constant.DEFAULT_HEAD_IMG);
-			user.setOpenId(openId);
-			user.setUnionid(info.getUnionid());
-			//重复插入
-			if (!redisService.setNx(RedisService.key.REPEAT_USER_KEY.getNameFormat(user.getUnionid()), user.getUnionid(), RedisService.key.REPEAT_USER_KEY.getTimeout())) {
-				return false;
-			}
-			userMapper.insert(user);
-			Long userId = user.getId();
-			Long dsPopularizeId = null;
-			if (gzhDto != null) {
-				Long sharedId = gzhDto.getSharedId();
-				String dsCode = gzhDto.getDsCode();
-				if (StrUtil.isNotBlank(dsCode)) {
-					dsCode = dsCode.trim();
-					User sharedUser = userService.getOne(Wrappers.lambdaQuery(User.class)
-							.eq(User::getShowId, dsCode).last("limit 1"));
-					if (sharedUser != null) {
-						sharedId = sharedUser.getId();
-					} else {
-						UserDistributePopularize distributePopularize = distributePopularizeMapper.selectOne(Wrappers.lambdaQuery(UserDistributePopularize.class)
-								.eq(UserDistributePopularize::getCode, dsCode)
-								.select(UserDistributePopularize::getUserId, UserDistributePopularize::getId).last("limit 1"));
-						if (distributePopularize != null) {
-							log.info("渠道sharedId:{}设置固定推广链接PC扫码用户分销", distributePopularize.getUserId());
-							sharedId = distributePopularize.getUserId();
-							dsPopularizeId = distributePopularize.getId();
-						}
-					}
-				}
-				if (sharedId != null) {
-					distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
-				}
-				Long popularizeId = gzhDto.getPopularizeId();
-				if (popularizeId != null) {
-					userMapper.update(null, Wrappers.lambdaUpdate(User.class)
-							.eq(User::getId, user.getId())
-							.set(User::getPopularizeId, popularizeId));
-					TASK_POOL.execute(() -> {
-						userService.sendFixedCustomerCoupon(popularizeId, userId, info.getUnionid());
-					});
-				}
-				userBind(user, sceneKey, gzhDto.getLoginPhone(), gzhDto.getLoginEmail());
-			}
-
-			saveGzhUserRelation(msgEvent, user.getId(), openId, info.getUnionid(), sceneKey, wxApp.getId());
-		} else {
-			//之前关注过
-			if (user.getUnionid() == null || !user.getUnionid().equals(info.getUnionid())) {
-				user.setUnionid(info.getUnionid());
-				userMapper.updateById(user);
-			}
-			saveGzhUserRelation(msgEvent, user.getId(), openId, info.getUnionid(), sceneKey, wxApp.getId());
-			if (gzhDto != null) {
-				userBind(user, sceneKey, gzhDto.getLoginPhone(), gzhDto.getLoginEmail());
-			}
-		}
-		//场景值扫描公众号二维码 登录
-		if (StrUtil.isNotEmpty(sceneKey)) {
-			redisService.set(RedisService.key.WX_GZH_QRCODE_LOGIN.getNameFormat(sceneKey), user.getId(), RedisService.key.WX_GZH_QRCODE_LOGIN.getTimeout());
-		}
-		if (gzhDto != null) {
-			Long sharedId = gzhDto.getSharedId();
-			Integer dsType = gzhDto.getDsType();
-			//新旧用户都可实物分销
-			if (dsType != null && dsType == 2) {
-				equipDistributeService.saveDistributionInvitation(sharedId, isNewUser, user.getId());
-			}
-		}
-		return true;
-	}
-
-	private void saveGzhUserRelation(MsgEvent msgEvent, Long userId, String openId, String unionid, String sceneKey, Long wxAppId) {
-		UserGzhRelation userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class)
-				.eq(UserGzhRelation::getWxAppId, wxAppId)
-				.eq(UserGzhRelation::getOpenId, msgEvent.getFromUserName()).last("limit 1"));
-		userGzhRelation = Optional.ofNullable(userGzhRelation).orElseGet(() -> new UserGzhRelation());
-
-		userGzhRelation.setUserId(userId);
-		userGzhRelation.setWxAppId(wxAppId);
-		userGzhRelation.setIsSubscribe(true);
-		userGzhRelation.setEvent(msgEvent.getEvent());
-		userGzhRelation.setOpenId(openId);
-		userGzhRelation.setUnionid(unionid);
-		if (StrUtil.isNotEmpty(msgEvent.getEventKey())) {
-			userGzhRelation.setIsQrScene(true);
-		}
-		try {
-			if (userGzhRelation.getId() == null) {
-				//记录首次关注公众号的场景值
-				userGzhRelation.setSceneKey(sceneKey);
-				userGzhRelationMapper.insert(userGzhRelation);
-				return;
-			}
-			userGzhRelationMapper.updateById(userGzhRelation);
-		} catch (DuplicateKeyException e) {
-
-		}
-	}
-
-	public void userBind(User user, String sceneKey, String loginPhone, String loginEmail) {
-		if (StrUtil.isNotBlank(loginPhone)) {
-			log.info("手机号phone:{}登录用户,微信扫描公众号二维码进行用户信息绑定", loginPhone);
-			try {
-				bindTaskService.bindPhone(user, loginPhone, null);
-				redisService.set(RedisService.key.WX_GZH_QRCODE_BIND.getNameFormat(sceneKey), user.getId(), RedisService.key.WX_GZH_QRCODE_BIND.getTimeout());
-			} catch (Exception e) {
-				log.info(StringUtil.getErrorText(e));
-			}
-		}
-
-		if (StrUtil.isNotBlank(loginEmail)) {
-			log.info("邮箱email:{}登录用户,微信扫描公众号二维码进行用户信息绑定", loginEmail);
-			try {
-				bindTaskService.bindEmail(user, loginEmail, null);
-				redisService.set(RedisService.key.WX_GZH_QRCODE_BIND.getNameFormat(sceneKey), user.getId(), RedisService.key.WX_GZH_QRCODE_BIND.getTimeout());
-			} catch (Exception e) {
-				log.info(StringUtil.getErrorText(e));
-			}
-		}
-	}
-}

+ 0 - 13
netflix-service/src/main/java/com/cyksj/service/gzh/factory/GzhMsgService.java

@@ -1,13 +0,0 @@
-package com.cyksj.service.gzh.factory;
-
-import com.cyksj.model.dto.MsgEvent;
-
-/*
- *项目名: netflix
- *文件名: GzhMsgService
- *创建者: JavaZou
- *创建时间:2023/1/13 18:22
- */
-public interface GzhMsgService{
-	String handleNotify(MsgEvent msgEvent);
-}

+ 0 - 30
netflix-service/src/main/java/com/cyksj/service/gzh/factory/GzhMsgServiceFactory.java

@@ -1,30 +0,0 @@
-package com.cyksj.service.gzh.factory;
-
-import com.cyksj.model.dto.MsgEvent;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/*
- *项目名: netflix
- *文件名: GzhMsgServiceFactory
- *创建者: JavaZou
- *创建时间:2023/1/13 18:16
- */
-@Component
-public class GzhMsgServiceFactory {
-
-	@Resource
-	Map<String, GzhMsgService> ghzMsgServiceMap = new ConcurrentHashMap<>();
-
-
-	public String handleMsg(MsgEvent msgEvent) {
-		GzhMsgService gzhMsgService = ghzMsgServiceMap.get(msgEvent.getMsgType().name());
-		if (gzhMsgService == null) {
-			return "";
-		}
-		return gzhMsgService.handleNotify(msgEvent);
-	}
-}

+ 0 - 20
netflix-service/src/main/java/com/cyksj/service/gzh/factory/TextMsgService.java

@@ -1,20 +0,0 @@
-package com.cyksj.service.gzh.factory;
-
-import com.cyksj.model.dto.MsgEvent;
-import org.springframework.stereotype.Service;
-
-/*
- *项目名: netflix
- *文件名: TextMsgService
- *创建者: JavaZou
- *创建时间:2023/1/13 18:16
- */
-@Service("text")
-public class TextMsgService implements GzhMsgService{
-
-	@Override
-	public String handleNotify(MsgEvent msgEvent) {
-
-		return "";
-	}
-}

+ 0 - 26
netflix-service/src/main/java/com/cyksj/service/gzh/impl/GzhServiceImpl.java

@@ -1,26 +0,0 @@
-package com.cyksj.service.gzh.impl;
-
-import com.cyksj.model.dto.MsgEvent;
-import com.cyksj.service.gzh.GzhService;
-import com.cyksj.service.gzh.factory.GzhMsgServiceFactory;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/*
- *项目名: netflix
- *文件名: GzhServiceImpl
- *创建者: JavaZou
- *创建时间:2023/1/13 17:09
- */
-@Service
-@RequiredArgsConstructor
-@Slf4j
-public class GzhServiceImpl implements GzhService {
-	private final GzhMsgServiceFactory gzhMsgServiceFactory;
-
-	@Override
-	public String gzhMsg(MsgEvent msgEvent){
-		return gzhMsgServiceFactory.handleMsg(msgEvent);
-	}
-}

+ 0 - 81
netflix-service/src/main/java/com/cyksj/service/mange/impl/SpotifySendMsgServiceImpl.java

@@ -1,81 +0,0 @@
-package com.cyksj.service.mange.impl;
-
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import com.cyksj.common.EnvCommonService;
-import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.util.Jsons;
-import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
-import com.cyksj.mapper.UserMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.SpotifyUnLimitRecord;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.views.WxAppTemplateView;
-import com.cyksj.service.mange.SpotifySendMsgService;
-import com.cyksj.service.template.TemplateCommonService;
-import com.cyksj.service.wechat.WeChatService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
-
-/*
- *项目名: netflix
- *文件名: SpotifySendMsgServiceImpl
- *创建者: JavaZou
- *创建时间:2022/12/21 16:01
- */
-@Service
-@Slf4j
-@RequiredArgsConstructor
-public class SpotifySendMsgServiceImpl implements SpotifySendMsgService {
-	private final EnvCommonService envCommonService;
-
-	private final WeChatService weChatService;
-
-	private final UserMapper userMapper;
-
-	private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
-
-	private static String spotifyUnLimitSuccessUrl;
-
-	private final TemplateCommonService templateCommonService;
-
-	@PostConstruct
-	public void init() {
-		String host = envCommonService.getHost();
-		String domain = envCommonService.getDomain();
-		String redirectUrl = String.format("%s%s", domain, "yinhe/web/?temp=couponId?1?goodsId?4?skuId?14");
-		spotifyUnLimitSuccessUrl = String.format("%sauth/weChat?url=%s", host, redirectUrl);
-	}
-
-	@Override
-	public void sendSpotifyUnLimitSuccessMsg(SpotifyUnLimitRecord record) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			SpotifyUnLimitRecord unLimitRecord = spotifyUnLimitRecordMapper.selectById(record.getId());
-			if (unLimitRecord != null && !unLimitRecord.getIsSend()) {
-				User user = userMapper.selectById(unLimitRecord.getUserId());
-				if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
-					String openId = user.getOpenId();
-					WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(openId, TemplateEnum.SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_TEMPLATE.getDesc());
-					if (wxAppTemplateView != null) {
-						WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-								.setToUser(openId)
-								.setTemplateId(wxAppTemplateView.getTemplateId())
-								.setUrl(spotifyUnLimitSuccessUrl);
-						WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-						data.setFirst(new WxMpTemplateData("您的Spotify账号登录限制解除成功"));
-						data.setKeyword1(new WxMpTemplateData(user.getNickname()));
-						data.setKeyword2(new WxMpTemplateData(DateUtil.format(unLimitRecord.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")));
-						data.setRemark(new WxMpTemplateData("建议您购买Spotify年付会员,无需每过14天解除限制,点击了解"));
-						weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-						unLimitRecord.setIsSend(true);
-						spotifyUnLimitRecordMapper.updateById(unLimitRecord);
-					}
-				}
-			}
-		}
-	}
-}

+ 0 - 37
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -73,7 +73,6 @@ import com.cyksj.service.pay.AliPayCommonService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.sys.SysConfigService;
-import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.wechat.WeChatService;
@@ -172,8 +171,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final ExchangeCodeService exchangeCodeService;
 
-	private final TemplateCommonService templateCommonService;
-
 	private final MarketFrontService marketFrontService;
 
 	private final EquipmentDistributeService equipmentDistributeService;
@@ -1305,31 +1302,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				groupsRelationMapper.updateById(relation);
 			}
 		}
-
-//		//新订单产生 发送模板消息给用户、客服
-//		User user = userMapper.selectById(order.getUserId());
-//		if (user != null) {
-//			THREAD_POOL_TASK_EXECUTOR.execute(() -> {
-//				try {
-//					//发送至用户消息
-//					templateCommonService.newOderSendMsgByType(order, goodsDon, user, user.getOpenId(), false);
-//				} catch (Exception e) {
-//					log.error("向用户发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
-//				}
-//			});
-//		}
-//		THREAD_POOL_TASK_EXECUTOR.execute(() -> {
-//			try {
-//				//发送至客服消息
-//				List<CustomerService> customerServices = customerServiceMapper.selectList(null);
-//				for (CustomerService customerService : customerServices) {
-//					log.info("向客服{}发送新订单消息通知..", customerService.getNickName());
-//					templateCommonService.newOderSendMsgByType(order, goodsDon, user, customerService.getOpenId(), true);
-//				}
-//			} catch (Exception e) {
-//				log.error("向客服发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
-//			}
-//		});
 	}
 
 	/**
@@ -1716,15 +1688,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			saveChangeTicketRecord(preStartTime, preExpiryTime, preRelationId, userId, preSkuId, orderId, num, afterSku, afterRelation.getId());
 
 			GroupsRelationView groupsRelationView = groupsRelationMapper.getGroupRelationViewByUserIdAndRelationId(userId, afterRelation.getId());
-
-			try {
-				//发放更换车票模板消息通知用户
-				log.info("发送更换用户:{}车票:{}通知消息start=====>", userId, groupsRelationView.getId());
-				templateCommonService.sendUpdateAccountMsgNotify(groupsRelationView);
-				log.info("发送更换用户车票通知消息end=====>");
-			} catch (Exception e) {
-				log.error("发送更换用户:{}车票:{}通知消息错误e:{}", userId, groupsRelationView.getId(), StringUtil.getErrorText(e));
-			}
 		} else {
 			//之前的车票已被清除  加续费时间加到新的车票上
 			GroupsRelationView relationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder().field(GroupsRelationView::getUserId, userId)

+ 0 - 45
netflix-service/src/main/java/com/cyksj/service/register/RegisterOrderDonService.java

@@ -1,45 +0,0 @@
-package com.cyksj.service.register;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.cyksj.dto.Result;
-import com.cyksj.model.dto.AliPayParams;
-import com.cyksj.model.dto.H5JsPayParams;
-import com.cyksj.model.entity.RegisterOrderDon;
-import com.cyksj.model.entity.SpotifyUnLimitRecord;
-import com.cyksj.model.manage.request.RegisterReq;
-import com.cyksj.model.request.AlipayOrderDonReq;
-import com.cyksj.model.request.OrderRefundReq;
-import com.cyksj.model.views.CouponUserView;
-
-import java.util.Map;
-
-/**
- * @author chan
- * @date 2022/11/7 2:39 PM
- */
-public interface RegisterOrderDonService extends IService<RegisterOrderDon> {
-
-    boolean isFree(long userId, String platform);
-
-    RegisterOrderDon saveOrder(long userId, RegisterReq req, boolean isFree) throws Exception;
-
-    H5JsPayParams pay(Long orderId) throws Exception;
-
-    void prepayNotify(Map<String, String> map) throws Exception;
-
-    Result<String> wxRefund(OrderRefundReq refundReq, RegisterOrderDon registerOrderDon) throws Exception;
-
-    void wxRefundNotify(Map<String, String> map) throws Exception;
-
-    void updateAppleAutoStatus(Long orderId);
-
-    CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord);
-
-    CouponUserView getAvailableSpotifyCoupon(long userId);
-
-	void unifiedRefund(OrderRefundReq refundReq) throws Exception;
-
-    AliPayParams zfbUnifiedPay(AlipayOrderDonReq re) throws Exception;
-
-    void aliPayNotify(Map<String, String> params) throws Exception;
-}

+ 0 - 12
netflix-service/src/main/java/com/cyksj/service/register/SpotifyService.java

@@ -1,12 +0,0 @@
-package com.cyksj.service.register;
-
-import java.io.IOException;
-
-/**
- * @author chan
- * @date 2022/11/7 1:54 PM
- */
-public interface SpotifyService {
-
-    void register(Long registerOrderId);
-}

+ 0 - 510
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -1,510 +0,0 @@
-package com.cyksj.service.register.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.domain.AlipayTradeRefundModel;
-import com.alipay.api.internal.util.AlipaySignature;
-import com.alipay.api.request.AlipayTradeRefundRequest;
-import com.alipay.api.response.AlipayTradeRefundResponse;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.common.exception.BusinessRuntimeException;
-import com.cyksj.common.snowflake.Sequence;
-import com.cyksj.common.util.Codec;
-import com.cyksj.common.util.Jsons;
-import com.cyksj.common.util.Xmls;
-import com.cyksj.config.WeChatConfig;
-import com.cyksj.config.zfb.AliPayClientFactory;
-import com.cyksj.config.zfb.BaseZfbConfig;
-import com.cyksj.config.zfb.ZfbProductCode;
-import com.cyksj.dto.RedisKey;
-import com.cyksj.dto.Result;
-import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.AppleAutoRegisterDataMapper;
-import com.cyksj.mapper.RegisterOrderDonMapper;
-import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
-import com.cyksj.mapper.UserMapper;
-import com.cyksj.mapper.channel.ShopConfigMapper;
-import com.cyksj.mapper.manage.coupon.CouponMapper;
-import com.cyksj.model.dto.AliPayParams;
-import com.cyksj.model.dto.H5JsPayParams;
-import com.cyksj.model.entity.*;
-import com.cyksj.model.manage.request.RegisterReq;
-import com.cyksj.model.request.AlipayOrderDonReq;
-import com.cyksj.model.request.OrderAttach;
-import com.cyksj.model.request.OrderRefundReq;
-import com.cyksj.model.views.CouponUserView;
-import com.cyksj.redis.RedisService;
-import com.cyksj.service.mange.coupon.CouponCommonService;
-import com.cyksj.service.pay.AliPayCommonService;
-import com.cyksj.service.register.RegisterOrderDonService;
-import com.cyksj.service.register.SpotifyService;
-import com.cyksj.service.sys.SysConfigService;
-import com.cyksj.service.wechat.WeChatService;
-import com.cyksj.task.JobManager;
-import com.ejlchina.searcher.BeanSearcher;
-import com.ejlchina.searcher.param.Operator;
-import com.ejlchina.searcher.util.MapUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * @author chan
- * @date 2022/11/7 2:39 PM
- */
-@Service
-@Slf4j
-@RequiredArgsConstructor
-public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMapper ,RegisterOrderDon> implements RegisterOrderDonService {
-
-    private static final Sequence SEQUENCE = new Sequence(0);
-
-    private static final String REGISTER_PRICE_KEY = "register_price";
-
-    private final SpotifyService spotifyService;
-
-    private final RedisService redisService;
-
-    private final WeChatService weChatService;
-
-    private final WeChatConfig weChatConfig;
-
-    private final SysConfigService sysConfigService;
-
-    private final UserMapper userMapper;
-
-    private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
-
-    private final JobManager jobManager;
-
-    private final RegisterOrderDonMapper registerOrderDonMapper;
-
-    private final CouponMapper couponMapper;
-
-    private final CouponCommonService couponCommonService;
-
-    private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
-
-    private final BeanSearcher beanSearcher;
-
-    private final ShopConfigMapper shopConfigMapper;
-
-    private final AliPayCommonService aliPayCommonService;
-
-    private static final Long EXPIRY_TIME = 1000 * 60 * 5L;
-
-    /**
-     * 判断是否免费
-     * @author chan
-     * @date 2022-11-07 3:34 PM
-     */
-    @Override
-    public boolean isFree(long userId, String platform) {
-        int count = count(Wrappers.lambdaQuery(RegisterOrderDon.class)
-                .eq(RegisterOrderDon::getUserId, userId)
-                .ne(RegisterOrderDon::getStatus, RegisterOrderDon.Status.noPayment)
-                .eq(RegisterOrderDon::getIsFree, true));
-        if(count > 0){
-            return false;
-        }
-        Long num = redisService.decr(RedisKey.SPOTIFY_FREE_NUM, 1L);
-        if(num >= 0){
-            return true;
-        }else {
-            redisService.incr(RedisKey.SPOTIFY_FREE_NUM, 1L);
-        }
-        return false;
-    }
-
-    /**
-     * 保存注册资料
-     * @author chan
-     * @date 2022-11-07 3:34 PM
-     */
-    @Override
-    @Transactional(rollbackFor = Throwable.class)
-    public RegisterOrderDon saveOrder(long userId, RegisterReq req, boolean isFree) throws Exception {
-        RegisterOrderDon orderDon = new RegisterOrderDon();
-        User user = userMapper.selectById(userId);
-        BeanUtil.copyProperties(req,orderDon);
-        SysConfig register_price = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "register_price").last("limit 1"));
-        Map<String, Integer> map = Jsons.toMap(register_price.getSysValue());
-        orderDon.setOrderNo(SEQUENCE.nextId() + "");
-        orderDon.setUserId(userId);
-        orderDon.setOpenId(user.getOpenId());
-        orderDon.setIsFree(isFree);
-        orderDon.setMoney(isFree ? BigDecimal.ZERO : BigDecimal.valueOf(("apple".equals(req.getPlatform()) && "auto".equals(req.getAppleRegisterType())) ? map.get("appleAuto") : map.get(req.getPlatform())));
-        orderDon.setStatus(isFree ? RegisterOrderDon.Status.hasPayment : RegisterOrderDon.Status.noPayment);
-        String shopId = sysConfigService.getDefaultShopConfigByType("zfb");
-        orderDon.setShopId(shopId);
-        save(orderDon);
-        //apple
-        handleAppleIdAuto(userId, req, orderDon);
-        return orderDon;
-    }
-
-    /**
-     *  Apple ID自动注册
-     */
-    private void handleAppleIdAuto(long userId, RegisterReq req, RegisterOrderDon orderDon) {
-        if ("apple".equals(req.getPlatform()) && "auto".equals(req.getAppleRegisterType())) {
-            //是否有未支付的国家或区域的订单
-            Integer exists = appleAutoRegisterDataMapper.checkNoPayOrder(userId, req.getCountryOrArea());
-            if (exists != null) {
-                throw BusinessRuntimeException.getInstance(String.format("您有%s随机生成Apple ID未支付的订单", req.getCountryOrArea().getDesc()));
-            }
-            if (req.getCountryOrArea() == null) {
-                throw BusinessRuntimeException.getInstance("请选择对应的国家或地区");
-            }
-            //查看是否有空余账号
-            AppleAutoRegisterData appleAutoRegisterData = appleAutoRegisterDataMapper.selectOne(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getCountryOrArea, req.getCountryOrArea()).eq(AppleAutoRegisterData::getStatus, false).select(AppleAutoRegisterData::getId).last("limit 1"));
-            if (appleAutoRegisterData == null) {
-                throw BusinessRuntimeException.getInstance("自动生成Apple ID库存不足");
-            }
-            appleAutoRegisterData.setUserId(userId);
-            appleAutoRegisterData.setStatus(true);
-            appleAutoRegisterData.setOrderId(orderDon.getId());
-            int update = appleAutoRegisterDataMapper.update(appleAutoRegisterData, Wrappers.lambdaUpdate(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getStatus, false).eq(AppleAutoRegisterData::getId, appleAutoRegisterData.getId()));
-            if (update != 1) {
-                throw BusinessRuntimeException.getInstance("系统异常,请重新操作");
-            }
-            jobManager.addJob(EXPIRY_TIME, () -> {
-                updateAppleAutoStatus(orderDon.getId());
-            });
-        }
-    }
-
-    @Override
-    public void updateAppleAutoStatus(Long orderId) {
-        log.info("校验appleID自动注册订单 orderId:{}", orderId);
-        RegisterOrderDon registerOrderDon = this.getById(orderId);
-        if (registerOrderDon != null && RegisterOrderDon.Status.noPayment == registerOrderDon.getStatus()) {
-            AppleAutoRegisterData appleAutoRegisterData = appleAutoRegisterDataMapper.selectOne(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getOrderId, orderId).last("limit 1"));
-            if (appleAutoRegisterData != null) {
-                appleAutoRegisterData.setStatus(false);
-                appleAutoRegisterData.setUserId(0l);
-                appleAutoRegisterData.setOrderId(0l);
-                appleAutoRegisterDataMapper.updateById(appleAutoRegisterData);
-                log.info("未支付appleID自动注册订单:{},修改appleID使用状态", orderId);
-            }
-            //订单关闭
-            registerOrderDon.setStatus(RegisterOrderDon.Status.close);
-            registerOrderDonMapper.updateById(registerOrderDon);
-        }
-    }
-
-	@Override
-	public CouponUserView spotifyUnLimit(SpotifyUnLimitRecord spotifyUnLimitRecord) {
-		Boolean isFlag = false;
-		Long spotifyUnLimitCouponId = null;
-		//是否配置了优惠券
-		SysConfig spotify_unLimit_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_unLimit_cid").last("limit 1"));
-		if (spotify_unLimit_cid != null && StrUtil.isNotBlank(spotify_unLimit_cid.getSysValue())) {
-			spotifyUnLimitCouponId = Long.parseLong(spotify_unLimit_cid.getSysValue());
-			Coupon coupon = couponMapper.selectById(spotifyUnLimitCouponId);
-			if (coupon != null) {
-				isFlag = couponCommonService.sendCouponToUser(spotifyUnLimitRecord.getUserId(), spotifyUnLimitCouponId, null, null, null, CouponUser.Channel.manual);
-			}
-		}
-		//14天内是否重复提交过该账号
-        SpotifyUnLimitRecord exists = spotifyUnLimitRecordMapper.selectOne(Wrappers.lambdaQuery(SpotifyUnLimitRecord.class)
-                .eq(SpotifyUnLimitRecord::getUserId, spotifyUnLimitRecord.getUserId())
-                .eq(SpotifyUnLimitRecord::getAccount, spotifyUnLimitRecord.getAccount())
-                .last("limit 1"));
-        if (exists != null && exists.getUpdateTime().after(DateUtil.offsetDay(DateTime.now(), -14))) {
-            throw BusinessRuntimeException.getInstance("您已提交过,请勿重复提交");
-        }
-        if (exists != null) {
-            spotifyUnLimitRecord.setId(exists.getId());
-            spotifyUnLimitRecord.setIsSend(false);
-            spotifyUnLimitRecordMapper.updateById(spotifyUnLimitRecord);
-        } else {
-            try {
-                spotifyUnLimitRecordMapper.insert(spotifyUnLimitRecord);
-            } catch (DuplicateKeyException e) {
-                log.info("用户:{}重复提交解除限制spotify账号:{}", spotifyUnLimitRecord.getUserId(), spotifyUnLimitRecord.getAccount());
-            }
-        }
-		return isFlag ? beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
-				.field(CouponUserView::getUserId, spotifyUnLimitRecord.getUserId()).op(Operator.Equal)
-				.field(CouponUserView::getCouponId, spotifyUnLimitCouponId).op(Operator.Equal)
-				.build()) : null;
-	}
-
-    @Override
-    public CouponUserView getAvailableSpotifyCoupon(long userId) {
-        SysConfig spotify_register_success_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_register_success_cid").last("limit 1"));
-        CouponUserView couponUserView = null;
-        if (spotify_register_success_cid != null && StrUtil.isNotBlank(spotify_register_success_cid.getSysValue())) {
-            DateTime now = DateTime.now();
-            Long spotifyRegisterSucCid = Long.parseLong(spotify_register_success_cid.getSysValue());
-            couponUserView = beanSearcher.searchFirst(CouponUserView.class, MapUtils.builder()
-                    .field(CouponUserView::getUserId, userId).op(Operator.Equal)
-                    .field(CouponUserView::getCouponId, spotifyRegisterSucCid).op(Operator.Equal)
-                    .field(CouponUserView::getCouponUserStatus, CouponUser.Status.unused.name()).op(Operator.Equal)
-                    .field(CouponUserView::getValidStartTime, now).op(Operator.LessThan)
-                    .field(Coupon::getValidEndTime, now).op(Operator.GreaterThan)
-                    .build());
-        }
-        return couponUserView;
-    }
-
-    @Override
-    public void unifiedRefund(OrderRefundReq refundReq) throws Exception {
-        Long orderId = refundReq.getOrderId();
-        RegisterOrderDon registerOrderDon = this.getById(orderId);
-        if (registerOrderDon == null) throw BusinessRuntimeException.getInstance("订单不存在");
-        if (registerOrderDon.getStatus() == RegisterOrderDon.Status.refund) throw BusinessRuntimeException.getInstance("该订单已退款");
-
-        if (registerOrderDon.getStatus() != RegisterOrderDon.Status.error && registerOrderDon.getStatus() != RegisterOrderDon.Status.hasPayment) {
-            throw BusinessRuntimeException.getInstance("该订单状态不允许退款");
-        }
-        if (registerOrderDon.getMoney().compareTo(BigDecimal.ZERO) <= 0) {
-            throw BusinessRuntimeException.getInstance("该订单金额为0,无需退款");
-        }
-        if (!redisService.setNx(String.format("%s", refundReq.getOrderId()), refundReq.getOrderId(), 10l)) {
-            throw BusinessRuntimeException.getInstance("请勿重复点击,正在退款中..");
-        }
-        RegisterOrderDon.Type type = registerOrderDon.getType();
-        if (type == RegisterOrderDon.Type.WeChat) {
-            wxRefund(refundReq, registerOrderDon);
-        }
-        if (type == RegisterOrderDon.Type.ALI_PAY) {
-            zfbRefund(refundReq, registerOrderDon);
-        }
-    }
-
-    @Override
-    public AliPayParams zfbUnifiedPay(AlipayOrderDonReq re) throws Exception {
-        String productCode = StrUtil.EMPTY;
-        if (re.getType() == 1) {
-            productCode = ZfbProductCode.MOBILE_WEB.getProductCode();
-        }
-        if (re.getType() == 2) {
-            productCode = ZfbProductCode.PC_WEB.getProductCode();
-        }
-        return aliPayCommonService.unifiedPayRegister(re.getOrderId(), productCode, re.getPayMode(), re.getReturnUrl());
-    }
-
-    @Override
-    public void aliPayNotify(Map<String, String> params) throws Exception {
-        //调用SDK验证签名
-        String body = Codec.DoBase64.custom().setData(params.get("body")).decodeAsText();
-        OrderAttach orderAttach = Jsons.parseObject(body, OrderAttach.class);
-        Long oderId = orderAttach.getO();
-        RegisterOrderDon orderDon = getById(oderId);
-        if (null == orderDon) {
-            throw BusinessRuntimeException.getInstance("订单不存在.");
-        }
-        String appId = params.get("app_id");
-        boolean signVerified = AlipaySignature.rsaCheckV1(params, shopConfigMapper.getByAppId(appId).getPublicKey(), BaseZfbConfig.charset, BaseZfbConfig.signType);
-        if (!signVerified) {
-            log.error("支付宝回调校验签名错误,自定义入参:{}", params.get("body"));
-            throw BusinessRuntimeException.getInstance("支付宝回调校验签名错误");
-        }
-        String transactionId = params.get("trade_no");
-        String payTimeStr = params.get("gmt_payment");
-        if (!orderDon.getStatus().equals(RegisterOrderDon.Status.noPayment) && !orderDon.getStatus().equals(RegisterOrderDon.Status.close)) {
-            log.info("支付宝已回调,重复修改状态 id:{}", orderDon.getId());
-            return;
-        }
-
-        // 更改订单状态
-        orderDon.setTransactionId(transactionId);
-        orderDon.setStatus(RegisterOrderDon.Status.hasPayment);
-        AppleAutoRegisterData appleAutoRegisterData = appleAutoRegisterDataMapper.selectOne(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getOrderId, orderDon.getId()).eq(AppleAutoRegisterData::getStatus, true));
-        if (appleAutoRegisterData != null) {
-            orderDon.setStatus(RegisterOrderDon.Status.complete);
-        }
-        if (StrUtil.isNotBlank(payTimeStr)) {
-            orderDon.setPayTime(DateUtil.parse(payTimeStr, "yyyy-MM-dd HH:mm:ss"));
-        }
-        this.updateById(orderDon);
-    }
-
-    @Override
-    public H5JsPayParams pay(Long orderId) throws Exception {
-        log.info("注册 账号调起微信支付[start] orderId:{}", orderId);
-        RegisterOrderDon orderDon = this.getById(orderId);
-        if (orderDon.getStatus() == RegisterOrderDon.Status.close) {
-            throw BusinessRuntimeException.getInstance("订单已关闭");
-        }
-        OrderAttach attach = new OrderAttach();
-        attach.setO(orderDon.getId());
-
-        //获取支付默认商户
-        String shopId = sysConfigService.getDefaultShopConfigByType("wx");
-
-        String toWechatAttach = Codec.DoBase64.custom()
-                .setData(Jsons.toJson(attach)).encodeAsText();
-
-        H5JsPayParams params = weChatService.getJsPayParams(
-                weChatConfig.getAppid(),
-                shopId,
-                orderDon.getOpenId(),
-                orderDon.getMoney().intValue(),
-                orderDon.getOrderNo(),
-                weChatConfig.getDomain() + "applets/register/prepay/notify",
-                toWechatAttach,
-                "注册服务",
-                "JSAPI",
-                null
-        );
-
-        log.info("微信支付成功[end]");
-        return params;
-    }
-
-    @Override
-    @Transactional(rollbackFor = Throwable.class)
-    public void prepayNotify(Map<String, String> map) throws Exception {
-        /* 此处处理订单等业务逻辑 */
-        // 获取订单 和 微信订单号 和 支付的金额
-
-        String attach = Codec.DoBase64.custom().setData(map.get("attach")).decodeAsText();
-
-        OrderAttach orderAttach = Jsons.parseObject(attach, OrderAttach.class);
-
-        final Long oid = orderAttach.getO();
-
-        //final Long shareId = orderAttach.getShared();
-
-        RegisterOrderDon order = this.getById(oid);
-
-        if (null == order) {
-            throw BusinessRuntimeException.getInstance("订单不存在.");
-        }
-        String appId = map.get("mch_id");
-
-        // 校验签名
-        boolean f = weChatService.checkSignWithMd5(map, shopConfigMapper.getByAppId(appId).getSecret());
-        if (!f) {
-            log.error("回调数据:{}", map);
-            throw BusinessRuntimeException.getInstance("支付成功回调, 校验签名失败.");
-        }
-
-        String transactionId = map.get("transaction_id");
-
-        if (order.getStatus().equals(RegisterOrderDon.Status.hasPayment)) {
-            log.info("已回调,重复修改状态 id:{}", order.getId());
-            return;
-        }
-
-        // 更改订单状态
-        order.setTransactionId(transactionId);
-        order.setStatus(RegisterOrderDon.Status.hasPayment);
-        AppleAutoRegisterData appleAutoRegisterData = appleAutoRegisterDataMapper.selectOne(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getOrderId, order.getId()).eq(AppleAutoRegisterData::getStatus, true));
-        if (appleAutoRegisterData != null) {
-            order.setStatus(RegisterOrderDon.Status.complete);
-        }
-
-        order.setPayTime(DateUtil.parse(map.get("time_end"), "yyyyMMddHHmmss"));
-
-        if (StringUtils.isBlank(order.getOpenId())) {
-            order.setOpenId(map.get("openid"));
-        }
-
-
-        this.updateById(order);
-    }
-
-    @Override
-    public Result<String> wxRefund(OrderRefundReq refundReq,RegisterOrderDon registerOrderDon) throws Exception {
-        long time = System.currentTimeMillis();
-        //退款订单号
-        String outRefundNo = Codec.DoDigest.custom()
-                .setAlgorithm(Codec.DoDigest.Algorithm.MD5)
-                .setStringData(time + String.valueOf(registerOrderDon.getId()))
-                .toHexString();
-        if (refundReq.getRefundMoney() == null) {
-            refundReq.setRefundMoney(registerOrderDon.getMoney());
-        }
-        weChatService.refundWxOrder(weChatConfig.getAppid(),
-                Optional.ofNullable(registerOrderDon.getShopId()).orElse(ShopConfig.WX_DEFAULT_APP_ID),
-                registerOrderDon.getTransactionId(),
-                outRefundNo,
-                registerOrderDon.getMoney(),
-                refundReq.getRefundMoney(),
-                weChatConfig.getDomain() + "manage/register/wx/refund/notify");
-        //修改订单状态
-        registerOrderDon.setStatus(RegisterOrderDon.Status.refund);
-        registerOrderDon.setRefundMoney(refundReq.getRefundMoney());
-        this.updateById(registerOrderDon);
-        return GatewayResponse.SUCCESS.newBuilder().toResult("退款成功");
-    }
-
-    @Override
-    public void wxRefundNotify(Map<String, String> map) throws Exception {
-        // 对退款数据 解密
-        String md5Key = Codec.DoDigest.custom().setAlgorithm(Codec.DoDigest.Algorithm.MD5).setStringData(shopConfigMapper.getByAppId(map.get("mch_id")).getSecret()).toHexString();
-        String reqInfoXml = Codec.DoCipher.custom().setAlgorithm(Codec.DoCipher.Trans.AES_ECB_PKCS7Padding).setBase64Data(map.get("req_info")).setStringKey(md5Key).ofDecrypt().toText();
-        log.info("=== 退款数据解密: \n {}", reqInfoXml);
-        Map<String, String> reqInfoMap = Xmls.toMap(reqInfoXml);
-        // 退款失败
-        if (StrUtil.equals("CHANGE", reqInfoMap.get("refund_status"))) {
-            throw BusinessRuntimeException.getInstance("退款异常.");
-        } else if (StrUtil.equals("REFUNDCLOSE", reqInfoMap.get("refund_status"))) {
-            throw BusinessRuntimeException.getInstance("退款关闭.");
-        }
-        /* 此处处理业务逻辑 */
-        String outRefundNo = reqInfoMap.get("out_refund_no");
-        String transactionId = reqInfoMap.get("transaction_id");
-        RegisterOrderDon registerOrderDon = this.getOne(Wrappers.lambdaQuery(RegisterOrderDon.class).eq(RegisterOrderDon::getTransactionId, transactionId).last("limit 1"));
-        if (registerOrderDon == null) {
-            log.error("退款回调,transactionId:{}订单不存在", transactionId);
-        }
-        if (registerOrderDon.getStatus() != RegisterOrderDon.Status.refund) {
-            registerOrderDon.setStatus(RegisterOrderDon.Status.refund);
-            this.updateById(registerOrderDon);
-        }
-        log.info("微信退款: 退款单号[{}] 退款成功.", outRefundNo);
-    }
-
-    public void zfbRefund(OrderRefundReq refundReq, RegisterOrderDon registerOrderDon) throws Exception {
-        AlipayTradeRefundResponse response;
-        //支付宝退款
-        AlipayClient alipayClient = AliPayClientFactory.getAlipayClient(Optional.ofNullable(registerOrderDon.getShopId()).orElse(ShopConfig.ZFB_DEFAULT_APP_ID));
-        AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
-        AlipayTradeRefundModel model = new AlipayTradeRefundModel();
-        //支付宝交易号
-        model.setTradeNo(registerOrderDon.getTransactionId());
-        if (refundReq.getRefundMoney() == null) {
-            refundReq.setRefundMoney(registerOrderDon.getMoney());
-        }
-        model.setRefundAmount(refundReq.getRefundMoney().divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_EVEN).toString());
-        model.setQueryOptions(List.of("gmt_refund_pay"));
-        long time = System.currentTimeMillis();
-        //退款订单号
-        String outRefundNo = Codec.DoDigest.custom()
-                .setAlgorithm(Codec.DoDigest.Algorithm.MD5)
-                .setStringData(time + String.valueOf(registerOrderDon.getId()))
-                .toHexString();
-        //退款请求号
-        model.setOutRequestNo(outRefundNo);
-        request.setBizModel(model);
-        String shopId = registerOrderDon.getShopId();
-        ShopConfig shopConfig = shopConfigMapper.selectOne(Wrappers.lambdaQuery(ShopConfig.class).eq(ShopConfig::getAppId, registerOrderDon.getShopId()));
-        if (shopId != null && shopConfig != null && shopConfig.getIsCert()) {
-            response = alipayClient.certificateExecute(request);
-        } else {
-            response = alipayClient.execute(request);
-        }
-        if (!response.isSuccess()) throw BusinessRuntimeException.getInstance("退款失败,e:{0}", response.getSubMsg());
-        registerOrderDon.setStatus(RegisterOrderDon.Status.refund);
-        registerOrderDon.setRefundMoney(refundReq.getRefundMoney());
-        registerOrderDonMapper.updateById(registerOrderDon);
-    }
-}

+ 0 - 337
netflix-service/src/main/java/com/cyksj/service/register/impl/SpotifyServiceImpl.java

@@ -1,337 +0,0 @@
-package com.cyksj.service.register.impl;
-
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
-import cn.hutool.http.Method;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.cyksj.common.EnvCommonService;
-import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.util.Jsons;
-import com.cyksj.common.util.StringUtil;
-import com.cyksj.dto.RedisKey;
-import com.cyksj.mapper.ProxysMapper;
-import com.cyksj.mapper.RegisterOrderDonMapper;
-import com.cyksj.mapper.manage.coupon.CouponMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.Coupon;
-import com.cyksj.model.entity.CouponUser;
-import com.cyksj.model.entity.RegisterOrderDon;
-import com.cyksj.model.entity.SysConfig;
-import com.cyksj.model.request.SpotifyRegisterReq;
-import com.cyksj.model.response.ProxyInfo;
-import com.cyksj.model.views.WxAppTemplateView;
-import com.cyksj.redis.RedisService;
-import com.cyksj.service.mange.coupon.CouponCommonService;
-import com.cyksj.service.register.SpotifyService;
-import com.cyksj.service.sys.SysConfigService;
-import com.cyksj.service.template.TemplateCommonService;
-import com.cyksj.service.wechat.WeChatService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @author chan
- * @date 2022/11/7 1:54 PM
- */
-@Service
-@Slf4j
-@RequiredArgsConstructor
-public class SpotifyServiceImpl implements SpotifyService {
-
-    private final ProxysMapper proxysMapper;
-
-    private final RegisterOrderDonMapper registerOrderDonMapper;
-
-    private final RedisService redisService;
-
-    private final EnvCommonService envCommonService;
-
-    private final WeChatService weChatService;
-
-    private final CouponMapper couponMapper;
-
-    private final CouponCommonService couponCommonService;
-
-    private final SysConfigService sysConfigService;
-
-    private final TemplateCommonService templateCommonService;
-
-    private static final List<String> User_Agent_LIST =  List.of(
-            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
-            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
-            "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
-            "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
-            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
-            "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
-            "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
-            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
-            "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
-            "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
-            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
-            "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
-            "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
-            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
-            "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
-            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
-            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
-            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
-            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
-            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
-            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
-            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
-            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
-            "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
-            "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
-            "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
-            "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
-            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
-            "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10");
-
-
-    @Override
-    public synchronized void register(Long registerOrderId){
-        log.info("spotify 注册 orderId:{}",registerOrderId);
-        RegisterOrderDon registerOrderDon = registerOrderDonMapper.selectById(registerOrderId);
-
-        SpotifyRegisterReq registerReq = new SpotifyRegisterReq();
-        SpotifyRegisterReq.AccountDetails accountDetails = new SpotifyRegisterReq.AccountDetails();
-        SpotifyRegisterReq.AccountDetails.EmailAndPasswordIdentifier emailAndPasswordIdentifier = new SpotifyRegisterReq.AccountDetails.EmailAndPasswordIdentifier();
-        emailAndPasswordIdentifier.setEmail(registerOrderDon.getEmail());
-        emailAndPasswordIdentifier.setPassword(registerOrderDon.getPassword());
-        accountDetails.setEmail_and_password_identifier(emailAndPasswordIdentifier);
-        accountDetails.setBirthdate(Optional.ofNullable(registerOrderDon.getBirthYear()).orElse("1989") + "-" + Optional.ofNullable(registerOrderDon.getBirthMonth()).orElse("10") + "-" + Optional.ofNullable(registerOrderDon.getBirthDay()).orElse("06"));
-        accountDetails.setDisplay_name(emailAndPasswordIdentifier.getEmail());
-        accountDetails.setGender(1);
-        registerReq.setAccount_details(accountDetails);
-
-        Map<String,String> map = new HashMap<>();
-        map.put("User-Agent", User_Agent_LIST.get(RandomUtil.randomInt(User_Agent_LIST.size())));
-        map.put( "authority","spclient.wg.spotify.com");
-        map.put( "method","POST");
-        map.put("Host","spclient.wg.spotify.com");
-        map.put("Accept", "*/*");
-        map.put( "path","/signup/public/v2/account/create");
-        map.put( "Referer", "https://www.spotify.com/");
-        map.put("Content-Type", "application/json; charset=utf-8");
-        map.put("Origin", "https://www.spotify.com");
-        map.put("Connection", "keep-alive");
-        map.put("sec-ch-ua", "\"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"108\", \"Google Chrome\";v=\"108\"");
-        map.put("sec-ch-ua-mobile", "?0");
-        map.put("sec-ch-ua-platform", "Windows");
-        map.put("Sec-Fetch-Dest", "empty");
-        map.put("Sec-Fetch-Mode", "cors");
-        map.put("Sec-Fetch-Site", "same-site");
-        map.put("referrer-policy", "strict-origin-when-cross-origin");
-        CopyOnWriteArrayList<ProxyInfo> proxyInfos = (CopyOnWriteArrayList<ProxyInfo>) redisService.get(RedisKey.IP_LIST);
-        if (proxyInfos == null || proxyInfos.size() == 0) {
-            //String res = HttpUtil.get("http://api.proxy.ipidea.io/getProxyIp?num=30&return_type=json&lb=1&sb=0&flow=1&regions=&protocol=http");
-            //JSONObject jsonObject = JSONUtil.parseObj(res);
-            //JSONArray data = jsonObject.getJSONArray("data");
-            //proxyInfos = new CopyOnWriteArrayList<>(data.toList(ProxyInfo.class));
-
-            String result = HttpUtil.get("https://dvapi.doveproxy.net/cmapi.php?rq=distribute&user=1031494735&token=ckc1MUFURnk3bi80MXVxeUFTZUh0Zz09&auth=0&geo=ph&agreement=0&timeout=10&num=1&type_ip=1&repeat=0");
-            log.info("付费ip 请求返回 res:{}",result);
-            /*
-             * {
-             *   "errno": 200,
-             *   "msg": "Success",
-             *   "data": {
-             *     "geo": "mx", //国家
-             *     "ip": "47.253.12.97", //代理ip
-             *     "port": 40076, //代理端口
-             *     "d_ip": "201.162.169.86" //目标ip
-             *     "timeout": 600 //有效时间(秒)
-             *   }
-             * }
-             */
-            JSONObject resObj = JSONUtil.parseObj(result);
-            if (200 == resObj.getInt("errno")) {
-                JSONObject data = resObj.getJSONObject("data");
-                ProxyInfo proxyInfo = new ProxyInfo();
-                proxyInfo.setPort(data.getInt("port"));
-                proxyInfo.setIp(data.getStr("ip"));
-                log.info("----------付费IP地址----------\n ip:{}",proxyInfo);
-                proxyInfos = new CopyOnWriteArrayList<>();
-                proxyInfos.add(proxyInfo);
-            }else {
-                log.error("----------获取 付费IP 错误 停止循环----------");
-                return;
-            }
-        }
-        AtomicInteger count =  new AtomicInteger(1);
-        while (count.get() <= 3) {
-            boolean flag = false;
-            count.addAndGet(1);
-            for (ProxyInfo proxyInfo : proxyInfos) {
-                try {
-                    log.info("执行:info:{}", proxyInfo);
-
-                    Proxy proxy = new Proxy(Proxy.Type.SOCKS,
-                            new InetSocketAddress(proxyInfo.getIp(), proxyInfo.getPort()));
-                    //OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
-                    //log.info("spotify request body :{}",JSONUtil.toJsonStr(registerReq));
-                    //RequestBody requestBody = FormBody.create(JSONUtil.toJsonStr(registerReq),MediaType.parse("application/json; charset=utf-8"));
-                    //
-                    //Request request = new Request.Builder()
-                    //        .url("https://spclient.wg.spotify.com/signup/public/v2/account/create")
-                    //        .post(requestBody)
-                    //        .headers(Headers.of(map))
-                    //        .build();
-                    //
-                    //okhttp3.Response response = client.newCall(request).execute();
-                    //ResponseBody body = response.body();
-                    HttpRequest request = new HttpRequest("https://spclient.wg.spotify.com/signup/public/v2/account/create");
-                    request.setProxy(proxy);
-                    request.body(JSONUtil.toJsonStr(registerReq));
-                    request.addHeaders(map);
-                    request.setMethod(Method.POST);
-                    request.setConnectionTimeout(15 * 1000);
-                    request.setReadTimeout(15 * 1000);
-                    String spotifyBody = request.execute().body();
-
-                    log.info("spotify 返回body:{}", spotifyBody);
-                    /*
-                    {
-                        "error":{
-                            "error_details":{
-                                "code":2,
-                                "title":"请检查你的详细信息,然后再试一次。",
-                                "body":"此电子邮件已关联至某个帐号。请登录你的帐号,或使用其他电子邮件注册。",
-                                "already_exists":{
-
-                                }
-                            }
-                        }
-                    }
-                     */
-                    /*
-                    {
-                        "success": {
-                            "username": "31naixo6v3uydhvcp63sya57ozae",
-                            "login_token": "N7N9gHZ3QeG74yHWAx8hAw"
-                        }
-                    }
-                     */
-                    JSONObject resObj = JSONUtil.parseObj(spotifyBody);
-                    log.info("spotify 返回:{}",resObj);
-                    JSONObject error = resObj.getJSONObject("error");
-                    if (error == null || error.isEmpty()) {
-                        JSONObject success = resObj.getJSONObject("success");
-                        if (StringUtils.isNotBlank(success.getStr("login_token")) || StringUtils.isNotBlank("username")) {
-                            log.info("注册成功!");
-                            registerOrderDon.setStatus(RegisterOrderDon.Status.complete);
-                            registerOrderDonMapper.updateById(registerOrderDon);
-                            //注册成功发放模板消息
-                            spotifyTemplateMsg(registerOrderDon, String.format("%s%s", envCommonService.getDomain(), "yinhe/web/sign/list"), true);
-                            //注册成功发放声破天优惠券
-                            sendSpotifyCoupon(registerOrderDon);
-                            flag = true;
-                            break;
-                        }else if(!resObj.getJSONObject("challenge").isEmpty()) {
-                            log.info("spotify 注册 被监测出代理服务 。 删除该代理 ip:{}", proxyInfo.getIp());
-                            proxyInfos.remove(proxyInfo);
-                        }
-                    }else {
-                        JSONObject error_details = error.getJSONObject("error_details");
-                        String errorMsg = error_details.getStr("body");
-                        Integer code = error_details.getInt("code");
-                        if (code.equals(4) || "你的设备似乎已连接至代理或 VPN 服务。请关闭此类服务,然后再试一次。".equals(errorMsg)) {
-                            log.info("spotify 注册 被监测出代理服务 。 删除该代理 ip:{}", proxyInfo.getIp());
-                            proxyInfos.remove(proxyInfo);
-                            continue;
-                        }
-                        //{"error":{"error_details":{"code":1,"invalid_argument":{"field_errors":[{"code":6,"message":"你的密码安全强度太低。设置安全强度较高的密码。","field":"FIELD_PASSWORD"}]},"title":"请检查你的详细信息,然后再试一次。"}}}
-                        //{"error":{"error_details":{"code":2,"title":"请检查你的详细信息,然后再试一次。","body":"此电子邮件已关联至某个帐号。请登录你的帐号,或使用其他电子邮件注册。","already_exists":{}}}}
-                        if(code == 1 || error_details.getJSONObject("invalid_argument") != null){
-                            JSONObject invalid_argument = error_details.getJSONObject("invalid_argument") ;
-                            JSONArray field_errors = invalid_argument.getJSONArray("field_errors");
-                            JSONObject errmsg = (JSONObject)field_errors.get(0);
-                            registerOrderDon.setErrorMsg(errmsg.getStr("message"));
-                            registerOrderDon.setStatus(RegisterOrderDon.Status.error);
-                        }else {
-                            registerOrderDon.setErrorMsg(error_details.getStr("body"));
-                            registerOrderDon.setStatus(RegisterOrderDon.Status.error);
-                        }
-                        registerOrderDonMapper.updateById(registerOrderDon);
-
-                        //注册失败发放模板消息
-                        spotifyTemplateMsg(registerOrderDon, String.format("%s%s", envCommonService.getDomain(), "yinhe/web/sign/list"), false);
-                        flag = true;
-                        break;
-                    }
-                } catch (Exception e) {
-                    proxyInfos.remove(proxyInfo);
-                    log.error("错误 ip:{}", proxyInfo.getIp());
-                    log.error("spotify 注册 error:{}", StringUtil.getErrorText(e));
-                    break;
-                }
-            }
-
-            if(flag){
-                log.info("spotify 停止");
-                break;
-            }
-        }
-
-        redisService.set(RedisKey.IP_LIST,proxyInfos,360L);
-    }
-
-    private void sendSpotifyCoupon(RegisterOrderDon registerOrderDon) {
-        //已经拥有声破天年费的不用发
-        Integer exists = registerOrderDonMapper.isPaySpotifyYearTicket(registerOrderDon.getUserId());
-        if (exists == null) {
-            SysConfig spotify_register_success_cid = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "spotify_register_success_cid").last("limit 1"));
-            if (spotify_register_success_cid != null && StrUtil.isNotBlank(spotify_register_success_cid.getSysValue())) {
-                Long spotifyRegisterSucCid = Long.parseLong(spotify_register_success_cid.getSysValue());
-                Coupon coupon = couponMapper.selectById(spotifyRegisterSucCid);
-                if (coupon != null) {
-                    couponCommonService.sendCouponToUser(registerOrderDon.getUserId(), spotifyRegisterSucCid, null, null, null, CouponUser.Channel.manual);
-                }
-            }
-        }
-    }
-
-    private void spotifyTemplateMsg(RegisterOrderDon registerOrderDon, String url, Boolean isSuccess) throws Exception {
-        if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-            String openId = registerOrderDon.getOpenId();
-            if (StrUtil.isNotBlank(openId)) {
-                WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(openId, TemplateEnum.SPOTIFY_TEMPLATE.getDesc());
-                if (wxAppTemplateView != null) {
-                    WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-                            .setToUser(openId)
-                            .setTemplateId(wxAppTemplateView.getTemplateId())
-                            .setUrl(url);
-                    WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-                    data.setFirst(new WxMpTemplateData(isSuccess ? "Spotify账号已注册成功" : "Spotify账号注册失败,请修改后重新提交"));
-                    data.setKeyword1(new WxMpTemplateData(registerOrderDon.getPhone()));
-                    data.setKeyword2(new WxMpTemplateData(DateUtil.format(registerOrderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
-                    weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-                }
-            }
-        }
-    }
-
-}

+ 1 - 38
netflix-service/src/main/java/com/cyksj/service/template/TemplateCommonService.java

@@ -1,9 +1,6 @@
 package com.cyksj.service.template;
 
-import com.cyksj.model.entity.*;
-import com.cyksj.model.manage.request.ReqSetLogisticsPost;
-import com.cyksj.model.manage.views.GroupsRelationView;
-import com.cyksj.model.views.WxAppTemplateView;
+import com.cyksj.model.entity.Account;
 
 /*
  *项目名: netflix
@@ -12,42 +9,8 @@ import com.cyksj.model.views.WxAppTemplateView;
  *创建时间:2023/1/11 9:59
  */
 public interface TemplateCommonService {
-	/**
-	 * 发送新订单模板消息
-	 */
-	void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, User user, String toPeople, Boolean isCustomer) throws Exception;
-
-	/**
-	 * 公众号扫描登录成功模板消息
-	 */
-	void sendWxGzhQrCodeSuccessMsg(User user) throws Exception;
-
-	/**
-	 * 获取发送模板消息的公众号
-	 */
-	WxAppTemplateView getWxAppByUserId(String openId, String templateMark);
-
-	/**
-	 * 发货通知模板消息
-	 */
-	void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost, Boolean isReceiveAll) throws Exception;
-
-	/**
-	 * 空车位通知模板
-	 */
-	void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception;
-
 	/**
 	 * 账号修改密码通知模板
 	 */
 	void sendAccountTemplateMsg(Account account) throws Exception;
-
-	/**
-	 * 修改用户车票账号密码通知
-	 */
-	void sendUpdateAccountMsgNotify(GroupsRelationView relation) throws Exception;
-
-	/**
-	 * Spotify账号到期通知模板
-	 */
 }

+ 2 - 202
netflix-service/src/main/java/com/cyksj/service/template/impl/TemplateCommonServiceImpl.java

@@ -2,37 +2,24 @@ package com.cyksj.service.template.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.Constant;
-import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.util.Jsons;
-import com.cyksj.common.util.StringUtil;
 import com.cyksj.config.WeChatConfig;
 import com.cyksj.mapper.GoodsDonMapper;
-import com.cyksj.mapper.GoodsDonSkuMapper;
-import com.cyksj.mapper.OrderDonTransportMapper;
 import com.cyksj.mapper.UserMapper;
-import com.cyksj.mapper.gzh.UserGzhRelationMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.*;
-import com.cyksj.model.manage.request.ReqSetLogisticsPost;
+import com.cyksj.model.entity.Account;
+import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.manage.views.GroupsRelationView;
-import com.cyksj.model.views.WxAppTemplateView;
 import com.cyksj.service.sms.SmsService;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
-import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 /*
@@ -47,166 +34,12 @@ import java.util.List;
 public class TemplateCommonServiceImpl implements TemplateCommonService {
 	private final EnvCommonService envCommonService;
 
-	private final WeChatService weChatService;
-
 	private final BeanSearcher beanSearcher;
 
-	private final UserGzhRelationMapper userGzhRelationMapper;
-
-	private final WeChatConfig weChatConfig;
-
-	private final UserMapper userMapper;
-
 	private final GoodsDonMapper goodsDonMapper;
 
-	private final OrderDonTransportMapper transportMapper;
-
-	private final GoodsDonSkuMapper goodsDonSkuMapper;
-
 	private final SmsService smsService;
 
-	public void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, User user, String toPeople, Boolean isCustomer) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			String openId = toPeople;
-			if (StrUtil.isNotBlank(openId)) {
-				WxAppTemplateView wxAppTemplateView = null;
-				if (isCustomer) {
-					wxAppTemplateView = this.getCustomerTemplateView(TemplateEnum.NEW_ORDER_TEMPLATE.getDesc());
-				} else {
-					wxAppTemplateView = this.getWxAppByUserId(openId, TemplateEnum.NEW_ORDER_TEMPLATE.getDesc());
-				}
-				if (wxAppTemplateView != null) {
-					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-							.setToUser(openId)
-							.setTemplateId(wxAppTemplateView.getTemplateId())
-							//TODO
-							.setUrl(" ");
-					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-					data.setFirst(new WxMpTemplateData("新订单通知!"));
-					data.setKeyword1(new WxMpTemplateData(order.getOrderNo()));
-					data.setKeyword2(new WxMpTemplateData(String.format("%s服务", goodsDon.getTitle())));
-					data.setKeyword3(new WxMpTemplateData(order.getMoney().divide(BigDecimal.valueOf(100)).toString()));
-					data.setRemark(new WxMpTemplateData(goodsDon.getType() == 1 && goodsDon.getSecondType() == 1 ? "需要联系客服邀请才可使用,请联系客服" : "点击查看详情"));
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-				}
-			}
-		}
-	}
-
-	@Override
-	public WxAppTemplateView getWxAppByUserId(String openId, String templateMark) {
-		UserGzhRelation userGzhRelation = null;
-		if (!TemplateEnum.WX_GZH_QR_CODE_LOGIN.getDesc().equals(templateMark)) {
-			userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class)
-					.eq(UserGzhRelation::getOpenId, openId).last("limit 1"));
-		}
-		MapBuilder builder = MapUtils.builder()
-				.field(WxAppTemplateView::getRemark, templateMark);
-		if (userGzhRelation == null) {
-			builder.field(WxAppTemplateView::getAppId, weChatConfig.getAppid());
-		} else {
-			builder.field(WxAppTemplateView::getWxAppId, userGzhRelation.getWxAppId());
-		}
-		String type;
-		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
-			type = EnvCommonService.active;
-		} else {
-			type = EnvCommonService.active_prd;
-		}
-		builder.field(WxAppTemplateView::getType, type);
-		WxAppTemplateView wxAppTemplateView = beanSearcher.searchFirst(WxAppTemplateView.class, builder.build());
-		return wxAppTemplateView;
-	}
-
-	public WxAppTemplateView getCustomerTemplateView(String templateMark) {
-		WxAppTemplateView wxAppTemplateView = beanSearcher.searchFirst(WxAppTemplateView.class, MapUtils.builder()
-				.field(WxAppTemplateView::getRemark, templateMark)
-				.field(WxAppTemplateView::getAppId, weChatConfig.getAppid())
-				.field(WxAppTemplateView::getType, EnvCommonService.active_prd).build());
-		return wxAppTemplateView;
-	}
-
-	@Override
-	public void sendWxGzhQrCodeSuccessMsg(User user) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			String openId = user.getOpenId();
-			if (StrUtil.isNotBlank(openId)) {
-				WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(openId, TemplateEnum.WX_GZH_QR_CODE_LOGIN.getDesc());
-				if (wxAppTemplateView != null) {
-					String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain() + "yinhe/web/");
-					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-							.setToUser(openId)
-							.setTemplateId(wxAppTemplateView.getTemplateId())
-							.setUrl(url);
-					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-					data.setFirst(new WxMpTemplateData("您已登录成功"));
-					data.setKeyword1(new WxMpTemplateData("银河录像局"));
-					data.setKeyword2(new WxMpTemplateData(DateUtil.format(DateTime.now(), "yyyy-MM-dd HH:mm:ss")));
-					data.setRemark(new WxMpTemplateData("欢迎使用银河录像局"));
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
-				}
-			}
-		}
-	}
-
-	@Override
-	public void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost, Boolean isReceiveAll) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			Long userId = orderDon.getUserId();
-			User user = userMapper.selectById(userId);
-			if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
-				String openId = orderDon.getOpenId();
-				WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(openId, TemplateEnum.ORDER_TRANSPORT_TEMPLATE.getDesc());
-				if (wxAppTemplateView != null) {
-					String url = String.format("%s%s", envCommonService.getDomain(), "order");
-					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-							.setToUser(openId)
-							.setTemplateId(wxAppTemplateView.getTemplateId())
-							.setUrl(url);
-					String msg = isReceiveAll ? "家庭套餐特权已生效,可在我的车票中查看" : "存在待领取权益,点击查看详情";
-					GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
-					OrderDonTransport transport = transportMapper.selectOne(Wrappers.lambdaQuery(OrderDonTransport.class).eq(OrderDonTransport::getOrderId, reqSetLogisticsPost.getOrderId()).last("limit 1"));
-					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-					data.setFirst(new WxMpTemplateData("订单发货通知"));
-					data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
-					data.setKeyword2(new WxMpTemplateData(goodsDon.getTitle()));
-					data.setKeyword3(new WxMpTemplateData(reqSetLogisticsPost.getCodeCn()));
-					data.setKeyword4(new WxMpTemplateData(reqSetLogisticsPost.getTrackingNumber()));
-					data.setKeyword5(new WxMpTemplateData(String.format("%s%s%s%s", transport.getProvince(), transport.getCity(), transport.getDistrict(), transport.getAddress())));
-					data.setRemark(new WxMpTemplateData(String.format("可复制运单编号查询物流信息\n%s", msg)));
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-				}
-			}
-		}
-	}
-
-	@Override
-	public void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			String openId = toPeople;
-			WxAppTemplateView wxAppTemplateView = this.getCustomerTemplateView(TemplateEnum.EMPTY_TEMPLATE.getDesc());
-			if (wxAppTemplateView != null) {
-				User u = userMapper.selectById(orderDon.getUserId());
-				WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-						.setToUser(openId)
-						.setTemplateId(wxAppTemplateView.getTemplateId())
-						//TODO
-						.setUrl(" ");
-				GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
-				GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
-				WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-				data.setFirst(new WxMpTemplateData("空车位通知!"));
-				data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
-				data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), goodsDonSku.getSpecVal())));
-				data.setKeyword3(new WxMpTemplateData((u == null ? " " : u.getNickname())));
-				data.setKeyword4(new WxMpTemplateData(orderDon.getMoney().divide(BigDecimal.valueOf(100)).toString()));
-				data.setKeyword5(new WxMpTemplateData(DateUtil.format(orderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
-				data.setRemark(new WxMpTemplateData("请尽快关联账号信息"));
-				weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-			}
-		}
-	}
-
 	@Override
 	public void sendAccountTemplateMsg(Account account) throws Exception {
 		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
@@ -237,37 +70,4 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 			}
 		}
 	}
-
-	@Override
-	public void sendUpdateAccountMsgNotify(GroupsRelationView relation) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			sendUpdateAccountMsg(relation);
-		}
-	}
-
-	public void sendUpdateAccountMsg(GroupsRelationView relation) throws Exception {
-		String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
-		User user = userMapper.selectById(relation.getUserId());
-		if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
-			String openId = user.getOpenId();
-			WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(openId, TemplateEnum.PLAT_ACCOUNT_UPDATE_TEMPLATE.getDesc());
-			if (wxAppTemplateView != null) {
-				WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-						.setToUser(openId)
-						.setTemplateId(wxAppTemplateView.getTemplateId())
-						.setUrl(url);
-				WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-				data.setFirst(new WxMpTemplateData(String.format("%s账号%s密码更改提醒", relation.getTitle(), relation.getTripsAccount())));
-				data.setKeyword1(new WxMpTemplateData(relation.getTripsPassword()));
-				data.setKeyword2(new WxMpTemplateData(DateTime.now().toString("YYYY-MM-mm HH:mm:ss")));
-				data.setRemark(new WxMpTemplateData("您的账号密码已经更新,请到我的车票查看,长期用户请选择拼车/年付。\n" +
-						"如您不是在公众号购买,请在浏览器登录查看我的车票"));
-				try {
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-				} catch (Exception e) {
-					log.info("发送用户:{}车票账号修改密码模板消息错误,errorMsg:{}", user.getId(), StringUtil.getErrorText(e));
-				}
-			}
-		}
-	}
 }

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -1,7 +1,5 @@
 package com.cyksj.web.controller.manage.account;
 
-import com.cyksj.common.constant.Constant;
-import com.cyksj.web.util.StpAbroadUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -14,6 +12,7 @@ import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.annotation.Log;
 import com.cyksj.common.annotation.NoSubmit;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.dto.Result;
@@ -39,6 +38,7 @@ import com.cyksj.service.mange.CmsGroupService;
 import com.cyksj.service.mange.cms.CmsUserManager;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.web.util.EasyExcelUtils;
+import com.cyksj.web.util.StpAbroadUtil;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;

+ 0 - 80
netflix-web/src/main/java/com/cyksj/web/controller/manage/gzh/GzhController.java

@@ -1,80 +0,0 @@
-package com.cyksj.web.controller.manage.gzh;
-
-import cn.hutool.core.util.StrUtil;
-import com.cyksj.common.util.IoKit;
-import com.cyksj.common.util.StringUtil;
-import com.cyksj.common.util.Xmls;
-import com.cyksj.dto.Result;
-import com.cyksj.enums.GatewayResponse;
-import com.cyksj.model.dto.MsgEvent;
-import com.cyksj.service.gzh.GzhService;
-import com.cyksj.service.wechat.WeChatService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-
-/*
- *项目名: netflix
- *文件名: GzhController
- *创建者: JavaZou
- *创建时间:2023/1/13 16:50
- */
-@RestController
-@RequestMapping("/manage/gzh")
-@RequiredArgsConstructor
-@Slf4j
-public class GzhController {
-	private final HttpServletRequest request;
-
-	private final GzhService gzhService;
-
-	private final WeChatService weChatService;
-
-	@RequestMapping(value = "/msg/notify", method = {RequestMethod.GET, RequestMethod.POST})
-	public String msgNotify(@RequestParam(value = "echostr", required = false) String echoStr) throws IOException {
-		if (StrUtil.endWithIgnoreCase(request.getMethod(), RequestMethod.GET.name())) {
-			if (StrUtil.isBlank(echoStr)) {
-				return StrUtil.EMPTY;
-			}
-			//验证消息推送URL是否正确
-			return echoStr;
-		}
-
-		String content = IoKit.toString(request.getInputStream(), IoKit.Charsets.UTF_8);
-		log.info("公众号消息推送通知: \n{}", content);
-
-		if (StringUtils.isBlank(content)) {
-			return StringUtil.EMPTY;
-		}
-		MsgEvent msgEvent;
-		try {
-			msgEvent = Xmls.parseObject(content, MsgEvent.class);
-		} catch (Exception e) {
-			log.warn(" ! 解析公众号推送XML 失败.");
-			return "";
-		}
-		if (null == msgEvent) {
-			return "";
-		}
-
-		if (msgEvent.getMsgType() == null) {
-			return "";
-		}
-
-		return gzhService.gzhMsg(msgEvent);
-	}
-
-	/**
-	 * 生成永久渠道二维码
-	 */
-	@GetMapping("/get/notExpired/popularizeCode")
-	public Result<String> getNotExpiredPopularizeCode(String sceneKey) throws Exception {
-		//获取gzh带参数的二维码
-		String url = weChatService.getNotExpiredWxGzhQrCode(sceneKey);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(url);
-	}
-}

+ 0 - 209
netflix-web/src/main/java/com/cyksj/web/controller/manage/register/CmsRegisterController.java

@@ -1,209 +0,0 @@
-package com.cyksj.web.controller.manage.register;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.support.ExcelTypeEnum;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.cyksj.common.exception.BusinessRuntimeException;
-import com.cyksj.common.util.IoKit;
-import com.cyksj.common.util.Xmls;
-import com.cyksj.dto.Result;
-import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.AppleAutoRegisterDataMapper;
-import com.cyksj.mapper.SpotifyUnLimitRecordMapper;
-import com.cyksj.model.entity.AppleAutoRegisterData;
-import com.cyksj.model.entity.RegisterOrderDon;
-import com.cyksj.model.entity.SpotifyUnLimitRecord;
-import com.cyksj.model.excel.ExcelAppleIdTemplateData;
-import com.cyksj.model.excel.listener.ExcelAppleDataListener;
-import com.cyksj.model.request.OrderRefundReq;
-import com.cyksj.model.views.AppleIdCountryOrAreaDataView;
-import com.cyksj.model.views.AppleIdHeadDataView;
-import com.cyksj.model.views.AppleIdRegisterView;
-import com.cyksj.service.mange.SpotifySendMsgService;
-import com.cyksj.service.register.RegisterOrderDonService;
-import com.cyksj.web.util.EasyExcelUtils;
-import com.ejlchina.searcher.BeanSearcher;
-import com.ejlchina.searcher.SearchResult;
-import com.ejlchina.searcher.param.Operator;
-import com.ejlchina.searcher.util.MapBuilder;
-import com.ejlchina.searcher.util.MapUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.OutputStream;
-import java.util.Map;
-
-/**
- * @author chan
- * @date 2022/11/7 1:49 PM
- */
-@Slf4j
-@RestController
-@RequestMapping("/manage/register")
-@RequiredArgsConstructor
-public class CmsRegisterController {
-
-    private final RegisterOrderDonService registerOrderDonService;
-
-    private final BeanSearcher beanSearcher;
-
-    private final HttpServletRequest request;
-
-    private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
-
-    private final SpotifyUnLimitRecordMapper spotifyUnLimitRecordMapper;
-
-    private final SpotifySendMsgService spotifySendMsgService;
-
-    @GetMapping("/get")
-    public Result<SearchResult<RegisterOrderDon>> get(Boolean appleIsAutoType) {
-        MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-        if (appleIsAutoType != null) {
-            if (appleIsAutoType) {
-                builder.field(RegisterOrderDon::getAppleAutoId).op(Operator.NotNull);
-            }else {
-                builder.field(RegisterOrderDon::getAppleAutoId).op(Operator.IsNull);
-            }
-        }
-        SearchResult<RegisterOrderDon> search = beanSearcher.search(RegisterOrderDon.class, builder.build());
-        search.getDataList().forEach(data->{
-            if (data.getAppleIsAutoType()) {
-                data.setCountry(data.getCountryOrArea().getDesc());
-                data.setEmail(data.getApplePwdId());
-            }
-        });
-        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-    }
-
-    @PutMapping("/update")
-    public Result<RegisterOrderDon> update(@RequestBody RegisterOrderDon registerOrderDon){
-        registerOrderDonService.updateById(registerOrderDon);
-        return GatewayResponse.SUCCESS.newBuilder().toResult(registerOrderDon);
-    }
-
-    /**
-     * 下载apple id 导入模板
-     */
-    @GetMapping("/get/appleId/template")
-    public void appleIdTemplate(HttpServletResponse response) {
-        EasyExcelUtils.createTemplateExcel(response, ExcelAppleIdTemplateData.class, "导入模板", "导入模板", ExcelTypeEnum.XLSX, null);
-    }
-
-    /**
-     * 导入apple Id注册数据
-     */
-    @PostMapping("/export/appleId/data")
-    public Result<String> exportRegisterAppleData(MultipartFile file, String remark, String countryOrArea) throws Exception {
-        EasyExcel.read(file.getInputStream(), ExcelAppleIdTemplateData.class, new ExcelAppleDataListener(appleAutoRegisterDataMapper, countryOrArea, remark)).sheet().doRead();
-        return GatewayResponse.SUCCESS.newBuilder().toResult("导入数据成功");
-    }
-
-    /**
-     * apple ID注册数据列表
-     */
-    @GetMapping("/get/appleId/list")
-    public Result<SearchResult<AppleIdRegisterView>> getAppleIdList(HttpServletRequest request) {
-        return GatewayResponse.SUCCESS.newBuilder().toResult(beanSearcher.search(AppleIdRegisterView.class, MapUtils.flatBuilder(request.getParameterMap()).build()));
-    }
-
-    /**
-     * apple ID头部数据
-     */
-    @GetMapping("/get/appleId/head")
-    public Result<AppleIdHeadDataView> getAppleIdHeadDataView() {
-        AppleIdCountryOrAreaDataView appleIdCountryOrAreaDataView = new AppleIdCountryOrAreaDataView();
-        appleIdCountryOrAreaDataView.setJapanAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.JAPAN));
-        appleIdCountryOrAreaDataView.setHongKongAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.CN_HongKong));
-        appleIdCountryOrAreaDataView.setUsAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.US));
-        appleIdCountryOrAreaDataView.setTaiWanAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.CN_TaiWan));
-        AppleIdHeadDataView appleIdHeadDataView = new AppleIdHeadDataView();
-        appleIdHeadDataView.setAreaDataView(appleIdCountryOrAreaDataView);
-        Integer avaAppleIdNum = appleAutoRegisterDataMapper.selectCount(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getStatus, false));
-        appleIdHeadDataView.setAvaAppleIdNum(avaAppleIdNum);
-        Integer usedAppleIdNum = appleAutoRegisterDataMapper.selectCount(Wrappers.lambdaQuery(AppleAutoRegisterData.class).eq(AppleAutoRegisterData::getStatus, true));
-        appleIdHeadDataView.setUsedAppleIdNum(usedAppleIdNum);
-        return GatewayResponse.SUCCESS.newBuilder().toResult(appleIdHeadDataView);
-    }
-    /**
-     * 微信订单退款
-     */
-    @PostMapping("/wx/refund")
-    public Result<String> wxRefund(@RequestBody @Validated OrderRefundReq refundReq) throws Exception {
-        RegisterOrderDon registerOrderDon = registerOrderDonService.getById(refundReq.getOrderId());
-        if (registerOrderDon==null) throw BusinessRuntimeException.getInstance("");
-        return registerOrderDonService.wxRefund(refundReq, registerOrderDon);
-    }
-
-    /**
-     * 微信退款回调
-     */
-    @PostMapping("/wx/refund/notify")
-    public void wxRefundNotify(HttpServletRequest request, HttpServletResponse response) throws Exception {
-        String xml = IoKit.toString(request.getInputStream());
-        log.info("=== 注册账号退款成功的回调: \n {}", xml);
-
-        // 解析xml
-        Map<String, String> map = Xmls.toMap(xml);
-
-        // 退款失败
-        if (!StrUtil.equals("SUCCESS", map.get("return_code"))) {
-            throw BusinessRuntimeException.getInstance("退款失败.");
-        }
-
-        registerOrderDonService.wxRefundNotify(map);
-
-        String toWechatXmlResponse = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
-
-        OutputStream out = null;
-        try {
-            out = response.getOutputStream();
-            IoKit.write(toWechatXmlResponse, out);
-        } catch (Throwable e) {
-            throw BusinessRuntimeException.getInstance(e == null ? null : e.getMessage());
-        } finally {
-            IoKit.close(out);
-        }
-    }
-
-    /**
-     * 注册 统一退款
-     */
-    @PostMapping("/unified/refund")
-    public Result<String> unifiedRefund(@RequestBody OrderRefundReq refundReq) throws Exception {
-        registerOrderDonService.unifiedRefund(refundReq);
-        return GatewayResponse.SUCCESS.newBuilder().toResult();
-    }
-
-    /**
-     * 获取需要解除限制的账号列表
-     */
-    @GetMapping("/unLimit")
-    public Result<SearchResult<SpotifyUnLimitRecord>> getUnLimit(){
-        SearchResult<SpotifyUnLimitRecord> search = beanSearcher.search(SpotifyUnLimitRecord.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(SpotifyUnLimitRecord::getStatus,"Processing").build());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-    }
-
-    /**
-     * 修改解除限制状态
-     */
-    @PutMapping("/unLimit")
-    public Result<String> upUnLimit(@RequestBody SpotifyUnLimitRecord spotifyUnLimitRecord) throws Exception {
-        spotifyUnLimitRecordMapper.update(null, Wrappers.lambdaUpdate(SpotifyUnLimitRecord.class)
-                .eq(SpotifyUnLimitRecord::getId, spotifyUnLimitRecord.getId())
-                .set(SpotifyUnLimitRecord::getStatus, spotifyUnLimitRecord.getStatus())
-                .set(SpotifyUnLimitRecord::getUpdateTime, DateTime.now())
-        );
-        if (spotifyUnLimitRecord.getStatus() == SpotifyUnLimitRecord.Status.Success) {
-            spotifySendMsgService.sendSpotifyUnLimitSuccessMsg(spotifyUnLimitRecord);
-        }
-        return GatewayResponse.SUCCESS.newBuilder().toResult();
-    }
-}

+ 0 - 275
netflix-web/src/main/java/com/cyksj/web/controller/register/RegisterController.java

@@ -1,275 +0,0 @@
-package com.cyksj.web.controller.register;
-
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.cyksj.common.annotation.NoSubmit;
-import com.cyksj.common.exception.BusinessRuntimeException;
-import com.cyksj.common.util.IoKit;
-import com.cyksj.common.util.Xmls;
-import com.cyksj.dto.Result;
-import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.AppleAutoRegisterDataMapper;
-import com.cyksj.mapper.ProxysMapper;
-import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
-import com.cyksj.model.dto.H5JsPayParams;
-import com.cyksj.model.entity.AppleAutoRegisterData;
-import com.cyksj.model.entity.Proxys;
-import com.cyksj.model.entity.RegisterOrderDon;
-import com.cyksj.model.entity.SpotifyUnLimitRecord;
-import com.cyksj.model.manage.request.RegisterReq;
-import com.cyksj.model.request.AlipayOrderDonReq;
-import com.cyksj.model.response.AliPayTradeStatus;
-import com.cyksj.model.views.AppleIdCountryOrAreaDataView;
-import com.cyksj.model.views.CouponUserView;
-import com.cyksj.service.register.RegisterOrderDonService;
-import com.cyksj.web.util.StpUserUtil;
-import com.ejlchina.searcher.BeanSearcher;
-import com.ejlchina.searcher.SearchResult;
-import com.ejlchina.searcher.param.Operator;
-import com.ejlchina.searcher.util.MapUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author chan
- * @date 2022/11/7 1:49 PM
- */
-@Slf4j
-@RestController
-@RequestMapping("/applets/register")
-@RequiredArgsConstructor
-public class RegisterController {
-
-    private final RegisterOrderDonService registerOrderDonService;
-
-    private final BeanSearcher beanSearcher;
-
-    private final HttpServletRequest request;
-
-    private final AppleAutoRegisterDataMapper appleAutoRegisterDataMapper;
-
-	private final ProxysMapper proxysMapper;
-
-    private final CouponSkuMapper couponSkuMapper;
-
-    @PostMapping
-    public Result<RegisterOrderDon> register(@RequestBody RegisterReq req) throws Exception {
-        long userId = StpUserUtil.getLoginIdAsLong();
-        //参数校验
-        boolean isFree = false;
-        //判断Spotify是否拥有免费资格
-        if("spotify".equals(req.getPlatform())){
-            isFree = registerOrderDonService.isFree(userId,req.getPlatform());
-        }
-        RegisterOrderDon orderDon = registerOrderDonService.saveOrder(userId,req,isFree);
-
-        orderDon.setPassword("");
-
-        return GatewayResponse.SUCCESS.newBuilder().toResult(orderDon);
-    }
-
-  /**
-   * 注册资料支付
-   * @author chan
-   * @date 2022-11-07 3:44 PM
-   */
-    @PostMapping("/post/pay/{orderId}")
-    public Result<H5JsPayParams> pay(@PathVariable Long orderId) throws Exception {
-        final String methodName = "提交注册资料 吊起微信支付";
-        log.info("{}[start] orderId:{}",methodName,orderId);
-
-        H5JsPayParams payParams = registerOrderDonService.pay(orderId);
-
-        return GatewayResponse.SUCCESS.newBuilder().toResult(payParams);
-    }
-
-    /**
-     * 微信支付回调
-     * @author chan
-     * @date 2021-10-11 下午5:42
-     */
-    @PostMapping("/prepay/notify")
-    public void prepayNotify(HttpServletRequest request, HttpServletResponse response) throws Exception {
-
-        String xml = IoKit.toString(request.getInputStream());
-        log.info("=== 微信支付成功的回调: \n {}", xml);
-
-        // 解析xml
-        Map<String, String> map = Xmls.toMap(xml);
-
-        // 支付失败
-        if (!StringUtils.equals("SUCCESS", map.get("return_code")) || !StringUtils.equals("SUCCESS", map.get("result_code"))) {
-            throw BusinessRuntimeException.getInstance("支付失败.");
-        }
-
-        registerOrderDonService.prepayNotify(map);
-        String toWeChatXmlResponse = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
-
-        OutputStream out = null;
-        try {
-            out = response.getOutputStream();
-            IoKit.write(toWeChatXmlResponse, out);
-        } catch (Exception e) {
-            throw BusinessRuntimeException.getInstance(e,e.getMessage());
-        } finally {
-            IoKit.close(out);
-        }
-    }
-
-    /**
-     * 支付宝支付
-     */
-    @PostMapping("/zfb/unified/pay")
-    public Result<String> zfbUnifiedPay(@RequestBody @Validated AlipayOrderDonReq re) throws Exception {
-        if (re.getType() == null) throw BusinessRuntimeException.getInstance("支付异常");
-        String pay_body = registerOrderDonService.zfbUnifiedPay(re).getBody();
-//        response.setContentType("text/html;charset=" + BaseZfbConfig.charset);
-//        //直接将完整的表单html输出到页面
-//        response.getWriter().write(pay_body);
-//        response.getWriter().flush();
-//        response.getWriter().close();
-        return GatewayResponse.SUCCESS.newBuilder().toResult(pay_body);
-    }
-
-    /**
-     * 支付宝回调
-     */
-    @PostMapping("/prepay/zfb/notify")
-    public String aliPayNotify(HttpServletRequest request) throws Exception {
-        ////将异步通知中收到的所有参数都存放到map中
-        Map<String, String> params = convertRequestParamsToMap(request);
-        String tradeStatus = params.get("trade_status");
-        String orderNo = params.get("out_trade_no");
-        if (AliPayTradeStatus.TRADE_SUCCESS.getStatus().equals(tradeStatus) || AliPayTradeStatus.TRADE_FINISHED.getStatus().equals(tradeStatus)) {
-            log.info("支付宝商家订单号orderNo:{},status:{}开始回调", orderNo, tradeStatus);
-            registerOrderDonService.aliPayNotify(params);
-        } else {
-            log.error("支付宝回调 error 状态不符合 成功或完成 status:{} ,orderNo:{}", tradeStatus, orderNo);
-            return "fail";
-        }
-        return "success";
-    }
-
-    @GetMapping("/get")
-    public Result<SearchResult<RegisterOrderDon>> get(){
-        long userId = StpUserUtil.getLoginIdAsLong();
-        SearchResult<RegisterOrderDon> search = beanSearcher.search(RegisterOrderDon.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(RegisterOrderDon::getUserId,userId).op(Operator.Equal)
-                .build());
-        search.getDataList().forEach(data->{
-            if (data.getAppleIsAutoType() && (data.getStatus() == RegisterOrderDon.Status.noPayment || data.getStatus() == RegisterOrderDon.Status.close)) {
-                data.setApplePwdId(null);
-                data.setCountryOrArea(null);
-                data.setRemark(null);
-            }
-        });
-        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-    }
-
-    @PutMapping("/put")
-    public Result<String> update(@RequestBody RegisterOrderDon req){
-        if (req.getId() == null) {
-            throw new BusinessRuntimeException("缺少必填参数");
-        }
-        RegisterOrderDon registerOrderDon = registerOrderDonService.getById(req.getId());
-        if (!registerOrderDon.getStatus().equals(RegisterOrderDon.Status.error)) {
-            throw new BusinessRuntimeException("该状态下不可更改信息");
-        }
-        req.setStatus(RegisterOrderDon.Status.hasPayment);
-        registerOrderDonService.updateById(req);
-
-        return GatewayResponse.SUCCESS.newBuilder().toResult();
-    }
-
-    @GetMapping("/get/appleId/area/detail")
-    public Result<AppleIdCountryOrAreaDataView> getAppleIdCountryOrAreaData() {
-        AppleIdCountryOrAreaDataView appleIdCountryOrAreaDataView = new AppleIdCountryOrAreaDataView();
-        appleIdCountryOrAreaDataView.setJapanAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.JAPAN));
-        appleIdCountryOrAreaDataView.setHongKongAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.CN_HongKong));
-        appleIdCountryOrAreaDataView.setUsAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.US));
-        appleIdCountryOrAreaDataView.setTaiWanAvaNum(appleAutoRegisterDataMapper.selectAreaDataView(AppleAutoRegisterData.CountryOrArea.CN_TaiWan));
-        return GatewayResponse.SUCCESS.newBuilder().toResult(appleIdCountryOrAreaDataView);
-    }
-
-    /**
-     * 取消appleId订单
-     */
-    @PutMapping("/cancel/order/{orderId}")
-    public Result<String> cancelOrder(@PathVariable Long orderId) {
-        registerOrderDonService.updateAppleAutoStatus(orderId);
-        return GatewayResponse.SUCCESS.newBuilder().toResult("取消订单成功");
-    }
-
-    /**
-     * 解除限制申请
-     */
-    @PostMapping("/spotify/unLimit")
-    @NoSubmit
-    public Result<CouponUserView> spotifyUnLimit(@RequestBody @Validated SpotifyUnLimitRecord spotifyUnLimitRecord) {
-        long userId = StpUserUtil.getLoginIdAsLong();
-        spotifyUnLimitRecord.setUserId(userId);
-        CouponUserView couponUserView = registerOrderDonService.spotifyUnLimit(spotifyUnLimitRecord);
-        if (couponUserView != null) {
-            String str = couponSkuMapper.selectGoodsSkuStr(couponUserView.getCouponId());
-            couponUserView.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
-        }
-        return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
-    }
-
-    /**
-     * 查询是否有可用的spotify年付优惠券
-     */
-    @GetMapping("/get/available/spotifyCoupon")
-    public Result<CouponUserView> getAvailableSpotifyCoupon() {
-        CouponUserView couponUserView = registerOrderDonService.getAvailableSpotifyCoupon(StpUserUtil.getLoginIdAsLong());
-        if (couponUserView != null) {
-            String str = couponSkuMapper.selectGoodsSkuStr(couponUserView.getCouponId());
-            couponUserView.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
-        }
-        return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
-    }
-
-    /**
-     * 获取代理ip
-     */
-    @GetMapping("/get/proxys")
-    public Result<Page<Proxys>> getProxys(@RequestParam(defaultValue = "1") Integer start, @RequestParam(defaultValue = "10") Integer limit) {
-        return GatewayResponse.SUCCESS.newBuilder().toResult(proxysMapper.selectPage(new Page<>(start, limit), Wrappers.lambdaQuery(Proxys.class).orderByDesc(Proxys::getScore)));
-    }
-
-    /**
-     * 获取支付宝回调参数
-     */
-    private static Map<String, String> convertRequestParamsToMap(HttpServletRequest request) {
-        Map<String, String> retMap = new HashMap<>();
-        Set<Map.Entry<String, String[]>> entrySet = request.getParameterMap().entrySet();
-        for (Map.Entry<String, String[]> entry : entrySet) {
-            String name = entry.getKey();
-            String[] values = entry.getValue();
-            int valLen = values.length;
-            if (valLen == 1) {
-                retMap.put(name, values[0]);
-            } else if (valLen > 1) {
-                StringBuilder sb = new StringBuilder();
-                for (String val : values) {
-                    sb.append(",").append(val);
-                }
-                retMap.put(name, sb.substring(1));
-            } else {
-                retMap.put(name, "");
-            }
-        }
-        return retMap;
-    }
-
-}