import * as _ from "underscore" import { BaseHallController } from './BaseHallController'; import { UserValidate } from '../Decorator/UserValidate'; import { EErrorCode } from '../Config/_error_'; import { GOrderSer } from '../../../Common/Service/OrderService'; import { ETaskType, GTaskSer } from '../../../Common/Service/TaskService'; import { GExtUserSer } from '../../../Common/Service/ExtUserService'; import { GItemRecordService as GItemRecordSer } from '../../../Common/Service/ItemRecordService'; import { GGiveSer } from '../../../Common/Service/GiveService'; import { GOrderCfg } from '../Config/OrderConfig'; import { GAlipayTool, GAsyncQueueTool, GLog } from "cgserver"; import { AlipayCallBack, AlipayResult } from "cgserver/dist/types/ThirdParty/AlipayTool"; export class OrderController extends BaseHallController { @UserValidate onGetConfig() { let config = GOrderCfg.getAll() this.showJson({config:config}) } @UserValidate onGetProducts() { let config = GOrderCfg.getAll() this.showJson({products:config.products}) } /* 获取新订单 */ @UserValidate async onGetNewOrder() { let user_id = this.selfUser.id let from = this.postData.from let product_id=this.postData.product_id let product = GOrderCfg.getProduct(product_id) if(!product) { this.showJson({errcode:EErrorCode.Wrong_Param}) return } let money = product.money let order = await GOrderSer.createNewOrder(user_id,from,product_id,money) this.showJson({order:order}) } @UserValidate async onGetOrderInfo() { let user_id = this.selfUser.id let from = this.postData.from let product_id=this.postData.product_id let product = GOrderCfg.getProduct(product_id) if(!product) { this.showJson({errcode:EErrorCode.Wrong_Param}) return } let money = product.money let order = await GOrderSer.createNewOrder(user_id,from,product_id,money) let order_info = GAlipayTool.getOrderInfo(order._id.toString(),order.money,product.title,"") this.showJson({order_info:order_info,order_id:order._id}) } @UserValidate async onCancel() { let user_id = this.selfUser.id let order_id=this.postData.order_id let errcode = await GOrderSer.cancelOrder(order_id,user_id) this.showJson({errcode:errcode}) } @UserValidate async onRecharge() { let user_id = this.selfUser.id let order_id = this.postData.order_id let transaction = this.postData.transaction let receipt = this.postData.receipt let rs = await GOrderSer.completeOrder(order_id,transaction,receipt) if(rs.errcode) { this.showJson({errcode:rs.errcode}) return } //触发任务 GTaskSer.onUserAction(user_id,ETaskType.Charge,rs.product.money) this.update_user(this.selfUser.id) this.showJson({crystal:this.selfUser.crystal,coin:this.selfUser.coin}) } @UserValidate async onPayComplete() { let params = this.postData let ret = await GOrderSer.onComplete(params.order_id,params.money) this.showJson({crystal:ret.crystal,coin:ret.coin,vip_exp:ret.vip_exp,errcode:ret.errcode}) } //客户端主动请求 @UserValidate async onAlipayComplete() { let params = this.postData let alipay:AlipayResult=params.result if(!alipay||alipay.alipay_trade_app_pay_response?.msg!="Success") { this.showJson() return } let order_id = alipay.alipay_trade_app_pay_response.out_trade_no let rs=await GAsyncQueueTool.add("order",GOrderSer.completeOrder.bind(this),null,order_id) this.showJson(rs) } //alipay 回调 @UserValidate async onAlipay() { let params = this.postData let alipay:AlipayCallBack=params if(!alipay||(alipay.trade_status!="TRADE_SUCCESS"&&alipay.trade_status!="TRADE_FINISHED")) { this.showJson() return } let order_id = alipay.out_trade_no let rs:any=await GAsyncQueueTool.add("order",GOrderSer.completeOrder.bind(this),null,order_id) if(!rs.errcode) { this.showJson('success') return } this.showJson('failure') } @UserValidate async onBuyCoin() { let coin_id = this.postData.coin_id let item = GOrderCfg.getCoin(coin_id) if(!item) { this.showJson({errcode:EErrorCode.Wrong_Param}) return } if(this.selfUser.crystal