Commit c118f56f authored by 成旭东's avatar 成旭东

哇房1.1

parent 05424049
Pipeline #28690 passed with stage
in 8 minutes 21 seconds
......@@ -28,6 +28,8 @@ export default class EstateListController extends Controller {
list_price: { type: 'string', required: false },
sale_status: { type: 'string', required: false },
status: { type: 'string', required: false },
is_hot: { type: 'number', required: false },
is_partner: { type: 'number', required: false },
};
this.updateRule = {
......@@ -40,6 +42,28 @@ export default class EstateListController extends Controller {
show_trade: { type: 'number', required: false },
tags: { type: 'string', required: false },
status: { type: 'string', required: false },
type: { type: 'string', required: false },
region_name: { type: 'string', required: false },
house_amount: { type: 'number', required: false },
list_price: { type: 'number', required: false },
parking_amount: { type: 'number', required: false },
obtain_date: { type: 'string', required: false },
ladder_household_proportion: { type: 'string', required: false },
developer: { type: 'string', required: false },
circle_name: { type: 'string', required: false },
house_area_range_min: { type: 'number', required: false },
house_area_range_max: { type: 'number', required: false },
property_company: { type: 'string', required: false },
building_area: { type: 'number', required: false },
b_x: { type: 'number', required: false },
b_y: { type: 'number', required: false },
sale_address: { type: 'string', required: false },
cub_percent: { type: 'number', required: false },
pro_management_fee: { type: 'number', required: false },
address: { type: 'string', required: false },
vir_percent: { type: 'number', required: false },
rights_years: { type: 'number', required: false },
description: { type: 'string', required: false },
};
this.projectTagUpdateRule = {
......@@ -222,6 +246,8 @@ export default class EstateListController extends Controller {
const { ctx, service, listRule, serviceGroupName, serviceName } = this;
const whereInfo = ctx.helper.switchQueryToWhere(ctx.query, {
id: (item: any) => Number(item),
is_hot: (item: any) => Number(item),
is_partner: (item: any) => Number(item),
}, Object.keys(listRule));
const rule = this.validateRuleParams(listRule, []);
ctx.validate(rule, whereInfo);
......@@ -282,6 +308,18 @@ export default class EstateListController extends Controller {
is_partner: (item: any) => Number(item),
is_hot: (item: any) => Number(item),
show_trade: (item: any) => Number(item),
house_amount: (item: any) => Number(item),
list_price: (item: any) => Number(item),
parking_amount: (item: any) => Number(item),
house_area_range_min: (item: any) => Number(item),
house_area_range_max: (item: any) => Number(item),
building_area: (item: any) => Number(item),
b_x: (item: any) => Number(item),
b_y: (item: any) => Number(item),
cub_percent: (item: any) => Number(item),
pro_management_fee: (item: any) => Number(item),
vir_percent: (item: any) => Number(item),
rights_years: (item: any) => Number(item),
}, Object.keys(updateRule));
ctx.validate(rule, updateItem);
await service[serviceGroupName][serviceName].update(id, {
......@@ -549,6 +587,8 @@ export default class EstateListController extends Controller {
const { ctx, service, listRule, serviceGroupName, serviceName } = this;
const whereInfo = ctx.helper.switchQueryToWhere(ctx.query, {
id: (item: any) => Number(item),
is_hot: (item: any) => Number(item),
is_partner: (item: any) => Number(item),
}, Object.keys(listRule));
ctx.validate(listRule, whereInfo);
const where = whereInfo;
......
......@@ -24,6 +24,7 @@ export default class EstateVideoController extends Controller {
virtual_read_num: { type: 'number', required: false },
is_recommend: { type: 'number', required: false },
is_top: { type: 'number', required: false },
order: { type: 'number', required: false },
cover_image: { type: 'string', required: false },
url: { type: 'string', required: false },
status: { type: 'string', required: false },
......@@ -67,6 +68,7 @@ export default class EstateVideoController extends Controller {
virtual_read_num: (item: any) => Number(item),
is_recommend: (item: any) => Number(item),
is_top: (item: any) => Number(item),
order: (item: any) => Number(item),
}, Object.keys(updateRule));
ctx.validate(rule, updateItem);
await service[serviceGroupName][serviceName].update(id, {
......@@ -78,7 +80,7 @@ export default class EstateVideoController extends Controller {
async create() {
const { ctx, service, updateRule, serviceGroupName, serviceName } = this;
const rule = this.validateRuleParams(updateRule, [ 'project_id', 'title', 'virtual_collection_num', 'virtual_share_num', 'virtual_read_num', 'is_recommend', 'is_top', 'cover_image', 'url' ]);
const rule = this.validateRuleParams(updateRule, [ 'project_id', 'title', 'virtual_collection_num', 'virtual_share_num', 'virtual_read_num', 'is_recommend', 'is_top', 'order', 'cover_image', 'url' ]);
const newItem = ctx.helper.switchQueryToWhere(ctx.request.body, {
project_id: (item: any) => Number(item),
virtual_collection_num: (item: any) => Number(item),
......@@ -86,6 +88,7 @@ export default class EstateVideoController extends Controller {
virtual_read_num: (item: any) => Number(item),
is_recommend: (item: any) => Number(item),
is_top: (item: any) => Number(item),
order: (item: any) => Number(item),
}, Object.keys(updateRule));
ctx.validate(rule, newItem);
const item = await service[serviceGroupName][serviceName].create({ ...newItem });
......
......@@ -277,6 +277,16 @@ export default class EstateListService extends Service {
}
}
const typeToPriceMap = {
house: 'house_list_price',
business: 'business_list_price',
office: 'office_list_price',
};
if (params.list_price && params.type && typeToPriceMap[params.type]) {
params[typeToPriceMap[params.type]] = params.list_price;
}
if (!record) {
this.ctx.throw(400, '记录不存在');
}
......
......@@ -81,6 +81,21 @@ export default class EstateVideoService extends Service {
id,
},
});
const orderArr = [ 1, 2, 3 ];
if (params.order && orderArr.includes(Number(params.order))) {
const videoRecord = await ctx[modelGroupName][modelName].findOne({
where: {
order: params.order,
},
});
if (videoRecord && Number(videoRecord.id) !== Number(id)) {
this.ctx.throw(400, `存在当前推荐排序,楼盘ID为${videoRecord.project_id}`);
}
}
if (!record) {
this.ctx.throw(400, '记录不存在');
}
......@@ -93,6 +108,21 @@ export default class EstateVideoService extends Service {
async create(params: any) {
const { ctx, modelGroupName, modelName } = this;
const orderArr = [ 1, 2, 3 ];
if (params.order && orderArr.includes(Number(params.order))) {
const videoRecord = await ctx[modelGroupName][modelName].findOne({
where: {
order: params.order,
},
});
if (videoRecord) {
this.ctx.throw(400, `存在当前推荐排序,楼盘ID为${videoRecord.project_id}`);
}
}
const record = await ctx[modelGroupName][modelName].create({
...params,
created_at: new Date(),
......
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