NewGaoKaoApi/New_College.Services/D_UserSettingBaseServices.cs

129 lines
5.1 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 usersettinglist = await _dal.Query(e => e.CustomerId == request.CustomerId);
if (usersettinglist.Any())
{
usersettinglist.ForEach(a =>
{
a.ScoreCount = 10;
a.SearchCount = 9999;
a.ShowCount = 9999;
});
await _dal.Update(usersettinglist);
}
else
{
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,
ShowCount = 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,
ShowCount = 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(c =>
{
userbaselist.Where(e => e.CustomerId == c.Id).ToList().ForEach(models =>
{
models.ScoreCount = c.IsVIP ? 10 : 3;
models.SearchCount = c.IsVIP ? 9999 : 10;
models.ShowCount = c.IsVIP ? 9999 : 10;
models.ModifyTime = DateTime.Now;
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);
});
}
}
}