/*********************************************************************** * Project: CoreCms * ProjectName: 核心内容管理系统 * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com * CreateTime: 2021/1/31 21:45:10 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using CoreCms.Net.Auth.HttpContextUser; using CoreCms.Net.Configuration; using CoreCms.Net.IServices; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.Entities.Expression; using CoreCms.Net.Model.FromBody; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Utility.Extensions; using CoreCms.Net.Utility.Helper; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; namespace CoreCms.Net.Web.WebApi.Controllers { /// /// 代理请求接口 /// [Route("api/[controller]/[action]")] [ApiController] public class AgentController : ControllerBase { private IHttpContextUser _user; private readonly ICoreCmsAgentServices _agentServices; private readonly ICoreCmsAgentOrderServices _agentOrderServices; private readonly ICoreCmsAgentGoodsServices _agentGoodsServices; private readonly ICoreCmsSettingServices _settingServices; private readonly ICoreCmsUserServices _userServices; private readonly ICoreCmsGoodsServices _goodsServices; /// /// 构造函数 /// /// /// /// /// /// /// /// public AgentController(IHttpContextUser user, ICoreCmsAgentServices agentServices, ICoreCmsSettingServices settingServices, ICoreCmsAgentOrderServices agentOrderServices, ICoreCmsUserServices userServices, ICoreCmsGoodsServices goodsServices, ICoreCmsAgentGoodsServices agentGoodsServices) { _user = user; _agentServices = agentServices; _settingServices = settingServices; _agentOrderServices = agentOrderServices; _userServices = userServices; _goodsServices = goodsServices; _agentGoodsServices = agentGoodsServices; } //公共接口==================================================================================================== #region 获取店铺信息 /// /// 获取店铺信息 /// /// [HttpPost] public async Task GetStoreInfo([FromBody] FMIntId entity) { var jm = new WebApiCallBack(); if (entity.id == 0) { jm.msg = "店铺信息丢失"; return jm; } var store = UserHelper.GetUserIdByShareCode(entity.id); if (store <= 0) { jm.msg = "店铺信息丢失"; return jm; } jm = await _agentServices.GetStore(store); return jm; } #endregion #region 根据查询条件获取分页数据============================================================ /// /// 根据查询条件获取分页数据 /// /// [HttpPost] public async Task GetGoodsPageList([FromBody] FMPageByWhereOrder entity) { var jm = new WebApiCallBack(); var where = PredicateBuilder.True(); where = where.And(p => p.isDel == false); where = where.And(p => p.isMarketable == true); var className = string.Empty; if (!string.IsNullOrEmpty(entity.where)) { var obj = JsonConvert.DeserializeAnonymousType(entity.where, new { priceFrom = "", priceTo = "", catId = "", brandId = "", labelId = "", searchName = "", }); if (!string.IsNullOrEmpty(obj.priceFrom)) { var priceF = obj.priceFrom.ObjectToDouble(0); if (priceF >= 0) { var f = Convert.ToDecimal(priceF); where = where.And(p => p.price >= f); } } if (!string.IsNullOrEmpty(obj.priceTo)) { var priceT = obj.priceTo.ObjectToDouble(0); if (priceT >= 0) { var f = Convert.ToDecimal(priceT); where = where.And(p => p.price <= f); } } if (!string.IsNullOrEmpty(obj.brandId)) { var brandId = obj.brandId.ObjectToInt(0); if (brandId >= 0) { where = where.And(p => p.brandId == brandId); } } if (!string.IsNullOrEmpty(obj.labelId)) { var brandId = obj.brandId.ObjectToInt(0); if (brandId >= 0) { where = where.And(p => p.brandId == brandId); } } if (!string.IsNullOrEmpty(obj.searchName)) { where = where.And(p => p.name.Contains(obj.searchName)); } } var list = await _goodsServices.QueryAgentGoodsPageAsync(where, entity.page, entity.limit, true); if (list.Any()) { foreach (var goods in list) { goods.images = !string.IsNullOrEmpty(goods.images) ? goods.images.Split(",")[0] : "/static/images/common/empty.png"; } } //返回数据 jm.status = true; jm.data = new { list, className, entity.page, list.TotalCount, list.TotalPages, entity.limit, entity.where, }; jm.msg = "数据调用成功!"; return jm; } #endregion //验证接口==================================================================================================== #region 查询用户是否可以成为代理商 /// /// 查询用户是否可以成为代理商 /// /// [HttpPost] [Authorize] public async Task Info() { var jm = await _agentServices.GetInfo(_user.ID); return jm; } #endregion #region 申请成为代理商接口 /// /// 申请成为代理商接口 /// /// [HttpPost] [Authorize] public async Task ApplyAgent([FromBody] FMAgentApply entity) { var jm = new WebApiCallBack(); if (entity.agreement != "on") { jm.msg = "请勾选代理商协议"; return jm; } var iData = new CoreCmsAgent(); iData.mobile = entity.mobile; iData.name = entity.name; iData.weixin = entity.weixin; iData.qq = entity.qq; jm = await _agentServices.AddData(iData, _user.ID); return jm; } #endregion #region 获取我的下级用户数量 /// /// 获取我的下级用户数量 /// /// [HttpPost] [Authorize] public async Task GetTeamSum() { var jm = new WebApiCallBack(); //发展人数 var first = await _userServices.QueryChildCountAsync(_user.ID, 1); //订单数 var second = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID); //当月发展人数 var monthFirst = await _userServices.QueryChildCountAsync(_user.ID, 1, true); DateTime dt = DateTime.Now; //本月第一天时间 DateTime dtFirst = dt.AddDays(1 - (dt.Day)); dtFirst = new DateTime(dtFirst.Year, dtFirst.Month, dtFirst.Day, 0, 0, 0); //获得某年某月的天数 int year = dt.Date.Year; int month = dt.Date.Month; int dayCount = DateTime.DaysInMonth(year, month); //本月最后一天时间 DateTime dtLast = dtFirst.AddDays(dayCount - 1); var monthSecond = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID && p.createTime > dtFirst && p.createTime < dtLast, true); jm.status = true; jm.data = new { count = first + monthFirst, first, second, monthCount = second + monthSecond, monthFirst, monthSecond }; return jm; } #endregion #region 获取我的订单统计 /// /// 获取我的订单统计 /// /// [HttpPost] [Authorize] public async Task GetOrderSum() { var jm = new WebApiCallBack(); DateTime dt = DateTime.Now; //本月第一天时间 DateTime dtFirst = dt.AddDays(1 - (dt.Day)); dtFirst = new DateTime(dtFirst.Year, dtFirst.Month, dtFirst.Day, 0, 0, 0); //获得某年某月的天数 int dayCount = DateTime.DaysInMonth(dt.Date.Year, dt.Date.Month); //本月最后一天时间 DateTime dtLast = dtFirst.AddDays(dayCount - 1); //全部订单 var allOrder = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID, true); //代购订单 var procurementServiceOrder = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID && p.buyUserId == _user.ID, true); //推广订单 var customerOrder = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID && p.buyUserId != _user.ID, true); //本月订单 var monthOrder = await _agentOrderServices.GetCountAsync(p => p.userId == _user.ID && p.createTime > dtFirst && p.createTime < dtLast, true); //全部订单金额 var allOrderMoney = await _agentOrderServices.GetSumAsync(p => p.userId == _user.ID, p => p.amount, true); //代购订单金额 var procurementServiceOrderMoney = await _agentOrderServices.GetSumAsync(p => p.userId == _user.ID && p.buyUserId == _user.ID, p => p.amount, true); //推广订单金额 var customerOrderMoney = await _agentOrderServices.GetSumAsync(p => p.userId == _user.ID && p.buyUserId != _user.ID, p => p.amount, true); //本月订单金额 var monthOrderMoney = await _agentOrderServices.GetSumAsync(p => p.userId == _user.ID && p.createTime > dtFirst && p.createTime < dtLast, p => p.amount, true); jm.status = true; jm.data = new { allOrder, procurementServiceOrder, customerOrder, monthOrder, allOrderMoney, procurementServiceOrderMoney, customerOrderMoney, monthOrderMoney }; return jm; } #endregion #region 我推广的订单 /// /// 我推广的订单 /// /// [HttpPost] [Authorize] public async Task MyOrder([FromBody] FMPageByIntId entity) { var jm = await _agentServices.GetMyOrderList(_user.ID, entity.page, entity.limit, entity.id); return jm; } #endregion #region 店铺设置 /// /// 店铺设置 /// /// [HttpPost] [Authorize] public async Task SetStore([FromBody] FMSetAgentStorePost entity) { var jm = new WebApiCallBack(); if (string.IsNullOrEmpty(entity.storeName)) { jm.msg = "请填写店铺名称"; return jm; } if (string.IsNullOrEmpty(entity.storeLogo)) { jm.msg = "请上传店铺logo"; return jm; } if (string.IsNullOrEmpty(entity.storeBanner)) { jm.msg = "请上传店铺banner"; return jm; } var info = await _agentServices.QueryByClauseAsync(p => p.userId == _user.ID); if (info != null) { info.storeLogo = entity.storeLogo; info.storeBanner = entity.storeBanner; info.storeDesc = entity.storeDesc; info.storeName = entity.storeName; await _agentServices.UpdateAsync(info); } jm.status = true; jm.msg = "保存成功"; return jm; } #endregion #region 获取代理商排行 /// /// 获取代理商排行 /// /// [HttpPost] [Authorize] public async Task GetAgentRanking([FromBody] FMPageByIntId entity) { var jm = new WebApiCallBack(); var list = await _agentServices.QueryRankingPageAsync(entity.page, entity.limit); jm.status = true; jm.data = new { data = list, list.HasNextPage, list.HasPreviousPage, list.PageIndex, list.PageSize, list.TotalPages, list.TotalCount, }; return jm; } #endregion } }