|
|
@@ -28,6 +28,7 @@ import com.cyksj.common.snowflake.Sequence;
|
|
|
import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
import com.cyksj.common.util.Codec;
|
|
|
import com.cyksj.common.util.Jsons;
|
|
|
+import com.cyksj.common.util.SmsUtil;
|
|
|
import com.cyksj.common.util.StringUtil;
|
|
|
import com.cyksj.config.WeChatConfig;
|
|
|
import com.cyksj.config.zfb.AliPayClientFactory;
|
|
|
@@ -212,6 +213,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final GroupsRelationExpiryRecordService groupsRelationExpiryRecordService;
|
|
|
|
|
|
+ private final UserPhoneSendRecordMapper userPhoneSendRecordMapper;
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -981,6 +984,40 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void sendOrderPhoneMsg(Long userId) {
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+ String phone = null;
|
|
|
+ if (StrUtil.isNotBlank(user.getLoginPhone())) {
|
|
|
+ phone = user.getLoginPhone();
|
|
|
+ } else {
|
|
|
+ //获取对应手机号
|
|
|
+ UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
+ .eq(StrUtil.isNotBlank(user.getOpenId()), UserBindDetail::getUserId, user.getId())
|
|
|
+ .eq(StrUtil.isNotBlank(user.getEmail()), UserBindDetail::getEmailUserId, user.getId()));
|
|
|
+ if (userBindDetail != null && StrUtil.isNotBlank(userBindDetail.getPhone())) {
|
|
|
+ phone = userBindDetail.getPhone();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(phone)) {
|
|
|
+ //是否发送过手机短信
|
|
|
+ UserPhoneSendRecord userPhoneSendRecord = userPhoneSendRecordMapper.selectOne(Wrappers.lambdaQuery(UserPhoneSendRecord.class)
|
|
|
+ .eq(UserPhoneSendRecord::getPhone, phone).last("limit 1"));
|
|
|
+ if (userPhoneSendRecord == null) {
|
|
|
+ try {
|
|
|
+ Boolean is_success = SmsUtil.sendLuoKey2Msg(phone, String.format(Constant.ORDER_MSG_FIRST_NOTIFY, user.getNickname()));
|
|
|
+ if (is_success) {
|
|
|
+ log.info("用户userId:{},购买成功,发送第一次手机号:{}短信官网信息通知", userId, phone);
|
|
|
+ userPhoneSendRecord = new UserPhoneSendRecord();
|
|
|
+ userPhoneSendRecord.setOrderUserId(userId);
|
|
|
+ userPhoneSendRecord.setPhone(phone);
|
|
|
+ userPhoneSendRecordMapper.insert(userPhoneSendRecord);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void setRelation(Long relationId, Long groupsId, Long userId, Long goodsId, Boolean isLoginPopularize, GroupsRelation.Status status) {
|
|
|
if (isLoginPopularize == null || !isLoginPopularize) {
|
|
|
int noPayCount = count(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getUserId, userId).eq(OrderDon::getGoodsId, goodsId).eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
|
|
|
@@ -2144,6 +2181,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
//同步车票是否重购 记录
|
|
|
TASK_POOL.execute(() -> {
|
|
|
groupsRelationExpiryRecordService.syncGroupsRelationExpiryRecord(orderDon, goodsDon, sku);
|
|
|
+
|
|
|
+ //发送下单后 若有手机 发送短信
|
|
|
+ sendOrderPhoneMsg(orderDon.getUserId());
|
|
|
});
|
|
|
}
|
|
|
|