NewGaoKaoApi/New_College.Services/D_UserSettingBaseServices.cs

115 lines
4.4 KiB
C#

using New_College.IServices;
using New_College.Model.Models;
using New_College.Services.BASE;
using New_College.IRepository.Base;
using System.Threading.Tasks;
using New_College.Model.ViewModels;
using New_College.IRepository;
using New_College.Common.WebApiClients.HttpApis;
using System;
using System.Linq;
using System.Collections.Generic;
namespace New_College.Services
{
public class D_UserSettingBaseServices : BaseServices<D_UserSettingBase>, ID_UserSettingBaseServices
{
private readonly IBaseRepository<D_UserSettingBase> _dal;
private readonly ID_UserSettingBaseRepository _userSettingBaseRepository;
private readonly IV_CustomerInfoRepository _CustomerInfoRepository;
public D_UserSettingBaseServices(IBaseRepository<D_UserSettingBase> dal, IV_CustomerInfoRepository v_CustomerInfoRepository, ID_UserSettingBaseRepository userSettingBaseRepository)
{
this._dal = dal;
base.BaseDal = dal;
_CustomerInfoRepository = v_CustomerInfoRepository;
_userSettingBaseRepository = userSettingBaseRepository;
}
public async Task<List<UserBaseSettingDto>> GetUserBaseSettings(UserSettingBaseRequest request)
{
return (await _dal.Query(c => c.CustomerId == request.CustomerId)).Select(c => new UserBaseSettingDto()
{
CustomerId = request.CustomerId,
PType = c.PType,
ScoreCount = c.ScoreCount,
SearchCount = c.SearchCount,
}).ToList();
}
public async Task<bool> SyncBaseInfo(UserSettingBaseRequest request)
{
var customerinfo = await _CustomerInfoRepository.Query(c => c.Id == request.CustomerId);
if (customerinfo == null)
{
return false;
}
var basesettinginfo = new D_UserSettingBase()
{
CustomerId = request.CustomerId,
CreateTime = DateTime.Now,
IsDelete = false,
OrderSort = 0,
PType = 0,
ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3,
SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10,
};
var basesettingtypeinfo = new D_UserSettingBase()
{
CustomerId = request.CustomerId,
CreateTime = DateTime.Now,
IsDelete = false,
OrderSort = 0,
PType = 1,
ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3,
SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10,
};
await _dal.Add(basesettinginfo);
await _dal.Add(basesettingtypeinfo);
return true;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async Task UpdateBaseInit()
{
var modelslist = new List<D_UserSettingBase>();
var customerlist = await _CustomerInfoRepository.Query(c => c.IsDelete == false);
var userbaselist = await _userSettingBaseRepository.Query(c => c.IsDelete == false);
customerlist.ForEach(async c =>
{
var userbaseinfo = userbaselist.Where(e => e.CustomerId == c.Id);
if (userbaselist.Any())
{
var models = userbaselist.FirstOrDefault();
models.ScoreCount = c.IsVIP ? 10 : 3;
models.SearchCount = c.IsVIP ? 9999 : 10;
modelslist.Add(models);
}
});
await _userSettingBaseRepository.UpdateAllBaseInfo(modelslist);
}
public async Task UpdateSingleCustomerSetting(UserBaseSettingUpdateDTO request)
{
var basesettinglist = await _userSettingBaseRepository.Query(c => c.CustomerId == request.CustomerId);
basesettinglist.ForEach(async a =>
{
if (request.UType == 0)
{
a.ScoreCount = a.ScoreCount > 0 ? a.ScoreCount - 1 : 0;
}
if (request.UType == 1)
{
a.SearchCount = a.SearchCount > 0 ? a.SearchCount - 1 : 0;
}
await _userSettingBaseRepository.Update(a);
});
}
}
}