Commit 05130e1b authored by 李尚科's avatar 李尚科

fix

parent c18df01e
'use strict';
const moment = require('moment');
module.exports = app => {
const { INTEGER, STRING, DATE, TEXT, DECIMAL } = app.Sequelize;
const CreditLogOrder = app.prometheusModel.define('credit_log_order', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true
},
name: STRING,
phone: STRING,
id_card: STRING,
type: INTEGER,
price: DECIMAL,
preferential_id: INTEGER,
preferential_price: DECIMAL,
final_price: DECIMAL,
state: STRING,
state_time: {
type: DATE,
get() {
const date = this.getDataValue('state_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
pay_status: STRING,
pay_method: STRING,
created_at: {
type: DATE,
get() {
const date = this.getDataValue('created_at');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
}, {
timestamps: false,
tableName: 'credit_log_order',
});
CreditLogOrder.one = async (data) => {
const attributes = data.attributes ? data.attributes : {};
const where = data.where ? data.where : {};
return await CreditLogOrder.findOne({
attributes: attributes,
where: where,
});
}
CreditLogOrder.all = async (data) => {
const attributes = data.attributes ? data.attributes : {};
const where = data.where ? data.where : {};
const order = data.order ? data.order : [];
return await CreditLogOrder.findAll({
attributes: attributes,
where: where,
order,
});
}
CreditLogOrder.list = async (data = {}) => {
const limit = data.limit ? Number(data.limit) : 10;
const page = data.page ? data.page : 1;
const order = data.order ? data.order : [];
const attributes = data.attributes ? data.attributes : {};
const where = data.where ? data.where : {};
const condition = {
offset: (page - 1) * limit,
limit,
where: where,
order: order,
attributes: attributes,
};
const { count, rows } = await CreditLogOrder.findAndCountAll(condition);
return { page, count, rows };
}
CreditLogOrder.add = async (data) => {
try {
//返回promise对象实力 instance
const res = await CreditLogOrder.create(data);
//从promise 实例中中获得需要的id号,id 必须是自增长,而且必须主键,否则返回null
return res.id;
} catch (error) {
throw (error);
}
}
CreditLogOrder.edit = async (data) => {
const where = data.where;
const params = data.params;
try {
const res = await CreditLogOrder.update(params, { where: where })
return res;
} catch (error) {
throw (error);
}
}
return CreditLogOrder;
};
...@@ -71,6 +71,7 @@ class OrderService extends Service { ...@@ -71,6 +71,7 @@ class OrderService extends Service {
if (expire_time < now_time && (state === '待支付' || state === '已取消') && pay_status === 0) { if (expire_time < now_time && (state === '待支付' || state === '已取消') && pay_status === 0) {
const ret = await ctx.prometheusModel.CreditOrder.update({ state: '已失效', state_time: state_time }, { where: { id } }); const ret = await ctx.prometheusModel.CreditOrder.update({ state: '已失效', state_time: state_time }, { where: { id } });
if (ret && ret[0]) { if (ret && ret[0]) {
await this.logOrder(order);
order.state = '已失效'; order.state = '已失效';
order.state_time = state_time; order.state_time = state_time;
} }
...@@ -91,6 +92,10 @@ class OrderService extends Service { ...@@ -91,6 +92,10 @@ class OrderService extends Service {
} }
const state_time = moment().format('YYYY-MM-DD HH:mm:ss'); const state_time = moment().format('YYYY-MM-DD HH:mm:ss');
const where = { user_id, name, id_card, id: { $ne: id } }; const where = { user_id, name, id_card, id: { $ne: id } };
const other_orders = await ctx.prometheusModel.CreditOrder.findAll({ where, });
for (let i in other_orders) {
await this.logOrder(other_orders[i]);
}
const ret = await ctx.prometheusModel.CreditOrder.update({ state: '已取消', state_time: state_time }, { where }); const ret = await ctx.prometheusModel.CreditOrder.update({ state: '已取消', state_time: state_time }, { where });
if (ret && ret[0]) { if (ret && ret[0]) {
status = true; status = true;
...@@ -98,6 +103,7 @@ class OrderService extends Service { ...@@ -98,6 +103,7 @@ class OrderService extends Service {
return status; return status;
} }
//更新订单优惠价格
async updateOrderPrice(order) { async updateOrderPrice(order) {
const { ctx } = this; const { ctx } = this;
...@@ -179,6 +185,7 @@ class OrderService extends Service { ...@@ -179,6 +185,7 @@ class OrderService extends Service {
return order; return order;
} }
//获取支付详细信息
async getOrderPayInfo(order_id) { async getOrderPayInfo(order_id) {
const { ctx } = this; const { ctx } = this;
...@@ -216,6 +223,7 @@ class OrderService extends Service { ...@@ -216,6 +223,7 @@ class OrderService extends Service {
return ret; return ret;
} }
//检查是否支付成功
async checkOrderPay(order_id) { async checkOrderPay(order_id) {
const { ctx } = this; const { ctx } = this;
...@@ -288,6 +296,7 @@ class OrderService extends Service { ...@@ -288,6 +296,7 @@ class OrderService extends Service {
return ret; return ret;
} }
//统一下单
async unifiedOrder(type, order_id) { async unifiedOrder(type, order_id) {
const { ctx } = this; const { ctx } = this;
...@@ -317,7 +326,7 @@ class OrderService extends Service { ...@@ -317,7 +326,7 @@ class OrderService extends Service {
scene_info: JSON.stringify({ h5_info: { type: 'Wap', wap_url: this.config.PHP_URL, wap_name: '我的信用' }, }), scene_info: JSON.stringify({ h5_info: { type: 'Wap', wap_url: this.config.PHP_URL, wap_name: '我的信用' }, }),
}; };
const ret = await ctx.service.credit.common.WexinUnifiedOrder(data); const ret = await ctx.service.credit.common.WexinUnifiedOrder(data);//微信统一下单
const pay_data = { const pay_data = {
order_id, order_id,
...@@ -328,10 +337,11 @@ class OrderService extends Service { ...@@ -328,10 +337,11 @@ class OrderService extends Service {
unifiedorder_result: JSON.stringify(ret), unifiedorder_result: JSON.stringify(ret),
client_ip: ctx.helper.getClientIP(), client_ip: ctx.helper.getClientIP(),
}; };
await this.addCreditPay(pay_data);; await this.addCreditPay(pay_data);//添加下单记录
await this.updateOrderStateToCancel(order); await this.updateOrderStateToCancel(order);//更新其他同姓名和身份证号的订单状态
await this.updateOrderPrice(order); await this.updateOrderPrice(order);//更新金额
await ctx.prometheusModel.CreditOrder.update({ method: type, state: '支付中' }, { where: { id: order.id } }); await this.logOrder(order);//订单状态变化日志记录
await ctx.prometheusModel.CreditOrder.update({ method: type, state: '支付中' }, { where: { id: order.id } });//更新状态
return { url: ret.mweb_url, order_id: order_id, trade_no: data.trade_no }; return { url: ret.mweb_url, order_id: order_id, trade_no: data.trade_no };
} else if (type === 'alipay') { } else if (type === 'alipay') {
...@@ -455,6 +465,35 @@ class OrderService extends Service { ...@@ -455,6 +465,35 @@ class OrderService extends Service {
} }
//记录订单状态
async logOrder(order) {
const { ctx } = this;
const { id, type, phone, name, id_card, price, preferential_id, preferential_price, final_price, state, pay_status, pay_method, state_time, } = order;
if (!order || !order.id) {
ctx.failed('error order');
}
const order_id = id;
const data = {
order_id,
type,
phone,
name,
id_card,
price,
preferential_id,
preferential_price,
final_price,
state,
pay_status,
pay_method,
state_time,
}
await ctx.prometheusModel.CreditLogOrder.add(data);
return true;
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment