增加Shop API
This commit is contained in:
1 parent
3769193696
commit
5d017740c6
83 files changed
+4451
-696
No files matched your search
@@ -0,0 +1,108 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using MAX.Framework.Commons;
|
||||
using MAX.Framework.Validation;
|
||||
using Store.Shops.Dtos;
|
||||
using Store.Shops.Entities;
|
||||
using Store.Shops.Mappers;
|
||||
|
||||
namespace Store.Shops.Services;
|
||||
|
||||
public sealed partial class ShopService
|
||||
{
|
||||
/// <summary>查询微信业务下的拼多多店铺,保持与 bxx.shop 数据隔离。</summary>
|
||||
public async Task<ShopPage<ShopInfo>> PddShops(ShopSearchRequest request, CancellationToken ct)
|
||||
{
|
||||
RequestValidator.Validate(request);
|
||||
Page(request.Page, request.PageSize);
|
||||
var actor = await Actor();
|
||||
var name = actor.UserName;
|
||||
var member = "," + name + ",";
|
||||
var query = db.Select<PddLoginShopEntity>().Where(s => s.UserName == name || ("," + s.SubUserName + ",").Contains(member))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.SearchId), s => s.ShopId.Contains(request.SearchId!))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.SearchUserName), s => s.UserName.Contains(request.SearchUserName!))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.SearchLoginName), s => s.LoginName.Contains(request.SearchLoginName!))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.SearchName), s => s.ShopAccount.Contains(request.SearchName!))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.SearchNotes), s => s.Notes.Contains(request.SearchNotes!))
|
||||
.WhereIf(!string.IsNullOrEmpty(request.OperateSubSaName), s => s.OperateSubSaName == request.OperateSubSaName)
|
||||
.WhereIf(request.ShopIds != null, s => request.ShopIds!.Contains(s.ShopId))
|
||||
.WhereIf(request.ShopNames != null, s => request.ShopNames!.Contains(s.ShopAccount))
|
||||
.WhereIf(request.ShopNotes != null, s => request.ShopNotes!.Contains(s.Notes));
|
||||
var count = await query.CountAsync(ct);
|
||||
var rows = await query.OrderByDescending(s => s.Id).Page(request.Page, request.PageSize).ToListAsync(ct);
|
||||
return new(rows.Select(new ShopDetailsMapper().Map).ToList(), count);
|
||||
}
|
||||
|
||||
/// <summary>导入拼多多店铺,重复导入更新资料;已有Cookie只能由专用登录更新接口修改。</summary>
|
||||
public async Task SavePdd(PddSaveRequest request, CancellationToken ct)
|
||||
{
|
||||
RequestValidator.Validate(request);
|
||||
var actor = await Actor();
|
||||
var name = actor.UserName;
|
||||
await ValidateAssignments(request.SubUserName, name);
|
||||
using var work = db.CreateUnitOfWork();
|
||||
work.IsolationLevel = System.Data.IsolationLevel.Serializable;
|
||||
work.GetOrBeginTransaction();
|
||||
var orm = work.Orm;
|
||||
var rows = await orm.Select<PddLoginShopEntity>().Where(s => s.UserName == name && s.LoginName == request.LoginName)
|
||||
.WhereIf(!string.IsNullOrEmpty(request.ShopId), s => s.ShopId == request.ShopId).ForUpdate().ToListAsync(ct);
|
||||
if (rows.Count == 0)
|
||||
{
|
||||
await orm.Insert(new PddLoginShopEntity
|
||||
{
|
||||
UserName = name, LoginName = request.LoginName, LoginPass = request.LoginPass ?? "",
|
||||
Cookie = request.Cookie ?? "", Cookie2 = request.Cookie2 ?? "", AntiContents = request.AntiContents ?? "",
|
||||
ShopId = request.ShopId ?? "", MallId = request.MallId ?? "", ShopAccount = request.ShopAccount ?? "",
|
||||
SubUserName = request.SubUserName ?? "", GroupName = request.GroupName ?? "", Notes = request.Notes ?? "",
|
||||
LoginStatus = request.LoginStatus ?? "", AddTime = DateTime.Now, MdyTime = DateTime.Now
|
||||
}).ExecuteAffrowsAsync(ct);
|
||||
}
|
||||
else
|
||||
{
|
||||
var ids = rows.Select(s => s.Id).ToArray();
|
||||
var update = orm.Update<PddLoginShopEntity>().Where(s => ids.Contains(s.Id)).Set(s => s.MdyTime, DateTime.Now);
|
||||
if (request.LoginPass != null) update.Set(s => s.LoginPass, request.LoginPass);
|
||||
if (request.AntiContents != null) update.Set(s => s.AntiContents, request.AntiContents);
|
||||
if (request.NewShopId != null) update.Set(s => s.ShopId, request.NewShopId);
|
||||
if (request.MallId != null) update.Set(s => s.MallId, request.MallId);
|
||||
if (request.ShopAccount != null) update.Set(s => s.ShopAccount, request.ShopAccount);
|
||||
if (request.SubUserName != null) update.Set(s => s.SubUserName, request.SubUserName);
|
||||
if (request.GroupName != null) update.Set(s => s.GroupName, request.GroupName);
|
||||
if (request.Notes != null) update.Set(s => s.Notes, request.Notes);
|
||||
if (request.LoginStatus != null) update.Set(s => s.LoginStatus, request.LoginStatus);
|
||||
await update.ExecuteAffrowsAsync(ct);
|
||||
}
|
||||
ct.ThrowIfCancellationRequested();
|
||||
work.Commit();
|
||||
}
|
||||
|
||||
/// <summary>刷新本人或已分配拼多多店铺的Cookie、状态及拼多多用户ID。</summary>
|
||||
public async Task UpdatePddCookies(CookieRequest request, CancellationToken ct)
|
||||
{
|
||||
RequestValidator.Validate(request);
|
||||
if (request.Cookie == null && request.Cookie2 == null && request.LoginStatus == null && request.LoginStatus2 == null && request.PddId == null)
|
||||
throw new ValidationException("至少提供一个登录状态字段");
|
||||
var actor = await Actor();
|
||||
var name = actor.UserName;
|
||||
var member = "," + name + ",";
|
||||
var update = db.Update<PddLoginShopEntity>().Where(s => s.LoginName == request.LoginName
|
||||
&& (s.UserName == name || ("," + s.SubUserName + ",").Contains(member))).Set(s => s.MdyTime, DateTime.Now);
|
||||
if (request.Cookie != null) update.Set(s => s.Cookie, request.Cookie);
|
||||
if (request.Cookie2 != null) update.Set(s => s.Cookie2, request.Cookie2);
|
||||
if (request.LoginStatus != null) update.Set(s => s.LoginStatus, request.LoginStatus);
|
||||
if (request.LoginStatus2 != null) update.Set(s => s.LoginStatus2, request.LoginStatus2);
|
||||
if (request.PddId != null) update.Set(s => s.PddId, request.PddId);
|
||||
if (await update.ExecuteAffrowsAsync(ct) == 0 && !await db.Select<PddLoginShopEntity>()
|
||||
.Where(s => s.LoginName == request.LoginName && (s.UserName == name || ("," + s.SubUserName + ",").Contains(member))).AnyAsync(ct))
|
||||
throw new AppException("店铺不存在或无操作权限");
|
||||
}
|
||||
|
||||
/// <summary>删除当前账号自己创建的拼多多店铺,分配账号不能删除。</summary>
|
||||
public async Task DeletePdd(LoginRequest request, CancellationToken ct)
|
||||
{
|
||||
RequestValidator.Validate(request);
|
||||
var actor = await Actor();
|
||||
var count = await db.Delete<PddLoginShopEntity>().Where(s => s.UserName == actor.UserName && s.LoginName == request.LoginName)
|
||||
.WhereIf(!string.IsNullOrEmpty(request.ShopId), s => s.ShopId == request.ShopId).ExecuteAffrowsAsync(ct);
|
||||
if (count == 0) throw new AppException("店铺不存在或无删除权限");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user