浏览代码

fix 订单关闭返回银河币

zoujiajian 1 年之前
父节点
当前提交
9c669d86e3

+ 2 - 0
netflix-common/src/main/java/com/cyksj/common/constant/PointsRecordConst.java

@@ -14,4 +14,6 @@ public interface PointsRecordConst {
 	String ORDER = "下单";
 
 	String ORDER_REFUND = "订单退款";
+
+	String ORDER_CLOSE = "订单关闭";
 }

+ 4 - 9
netflix-common/src/main/java/com/cyksj/common/util/SmsUtil.java

@@ -112,16 +112,11 @@ public class SmsUtil {
     }
 
     public static Boolean sendTencent(Integer cid, String mobile, String msg) {
-//        String templateId = TENCENT_SMS_TEMPLATE_ID;
-//        if (cid != 86) {
-//            templateId = TENCENT_SMS_INTERNATIONAL_TEMPLATE_ID;
-//        }
-//        return commonSendTencentSmsMsg(templateId, cid, mobile, msg);
-        try {
-            return SmsUtil.sendLuoKey2Msg(mobile, String.format("尊敬的用户,您的验证码为%s,此验证码仅用于银河录像。【崇宇信息】", msg));
-        } catch (Exception e) {
+        String templateId = TENCENT_SMS_TEMPLATE_ID;
+        if (cid != 86) {
+            templateId = TENCENT_SMS_INTERNATIONAL_TEMPLATE_ID;
         }
-        return false;
+        return commonSendTencentSmsMsg(templateId, cid, mobile, msg);
     }
 
     public static Boolean sendAccountInternalSmsMsg(Integer cid, String mobile, String msg) {

+ 3 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/UserBalanceSourceRecord.java

@@ -33,6 +33,7 @@ public class UserBalanceSourceRecord extends BaseEntity {
 	public enum Source {
 		payment("购买"),
 		refund("退款"),
+		order_close("订单关闭"),
 		clear_valid("未到期车票清除"),
 		ds_transport("分销实物发货"),
 		follow_task("关注引导"),
@@ -46,7 +47,8 @@ public class UserBalanceSourceRecord extends BaseEntity {
 		wholesale_order("批发订单"),
 		vip_order("会员下单"),
 		vip_refund("会员退款"),
-		TICKET_REPLACE("车票替换")
+		TICKET_REPLACE("车票替换"),
+		vip_order_close("会员订单关闭"),
 		;
 		String desc;
 

+ 9 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -1077,7 +1077,15 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				}
 				//返还余额
 				if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-					userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), null, null, null, null, false);
+					userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), null, null, null, UserBalanceSourceRecord.Source.order_close.getDesc(), true);
+				}
+
+				//返回银河币
+				UserGalaxyCoinRecord userGalaxyCoinRecord = userGalaxyCoinRecordMapper.selectOne(Wrappers.lambdaQuery(UserGalaxyCoinRecord.class)
+						.eq(UserGalaxyCoinRecord::getOrderId, orderDon.getId())
+						.last("limit 1"));
+				if (userGalaxyCoinRecord != null) {
+					userGalaxyCoinService.sendGalaxyCoinRecord(orderDon.getUserId(), userGalaxyCoinRecord.getGalaxyCoin().intValue(), PointsRecordConst.ORDER_CLOSE, false);
 				}
 
 				//是否是礼品卡 现金支付订单

+ 26 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/VipOrderDonServiceImpl.java

@@ -14,6 +14,7 @@ import com.alipay.api.response.AlipayTradeQueryResponse;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.constant.Constant;
+import com.cyksj.common.constant.PointsRecordConst;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.snowflake.Sequence;
 import com.cyksj.common.util.Codec;
@@ -41,6 +42,7 @@ import com.cyksj.model.request.VipOrderDonPayReq;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.chatgpt.ChatGptAccountService;
 import com.cyksj.service.claude.ClaudeService;
+import com.cyksj.service.coin.UserGalaxyCoinService;
 import com.cyksj.service.order.VipOrderDonService;
 import com.cyksj.service.pay.AliPayCommonService;
 import com.cyksj.service.relation.GroupRelationFrontService;
@@ -48,6 +50,7 @@ import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.vip.VipFrontService;
+import com.cyksj.task.JobManager;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapUtils;
@@ -141,6 +144,12 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
 
 	private final OrderDonGalaxyCoinRecordMapper orderDonGalaxyCoinRecordMapper;
 
+	private final UserGalaxyCoinService userGalaxyCoinService;
+
+	private final JobManager jobManager;
+
+	private static final Long EXPIRY_TIME = 1000 * 60 * 5L;
+
 	@Override
 	public VipOrderDon submit(VipOrderDonPayReq payRequest) {
 		Long userId = payRequest.getUserId();
@@ -187,6 +196,12 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
 			orderDon = getById(orderId);
 			unifiedHandlerOrderNotify(orderDon);
 		}
+		VipOrderDon finalOrderDon = orderDon;
+		if (finalOrderDon.getStatus() == VipOrderDon.Status.noPayment) {
+			jobManager.addJob(EXPIRY_TIME, () -> {
+				closeOrderDon(finalOrderDon.getUserId(), orderId);
+			});
+		}
 		return orderDon;
 	}
 
@@ -310,6 +325,17 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
 			log.info("关闭订单 orderId:{}", orderId);
 			orderDon.setStatus(VipOrderDon.Status.close);
 			updateById(orderDon);
+			//返还余额
+			if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+				userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), null, null, null, UserBalanceSourceRecord.Source.vip_order_close.getDesc(), true);
+			}
+			//返回银河币
+			UserGalaxyCoinRecord userGalaxyCoinRecord = userGalaxyCoinRecordMapper.selectOne(Wrappers.lambdaQuery(UserGalaxyCoinRecord.class)
+					.eq(UserGalaxyCoinRecord::getOrderId, orderDon.getId())
+					.last("limit 1"));
+			if (userGalaxyCoinRecord != null) {
+				userGalaxyCoinService.sendGalaxyCoinRecord(orderDon.getUserId(), userGalaxyCoinRecord.getGalaxyCoin().intValue(), PointsRecordConst.ORDER_CLOSE, false);
+			}
 		}
 	}
 

+ 1 - 1
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -446,7 +446,7 @@ public class AuthorizationController {
         badIntentionOpService.checkHandleBadUserOp(phone, verifyCode, ticket, randStr, request);
         String code = StringUtil.getRandomCodeStr(digit);
         Boolean isFlag;
-        if (false) {
+        if (!isFree) {
             isFlag = SmsUtil.sendTencent(cid, phone, code);
         } else {
             // 发送短信