增加 shop 永不过期API

This commit is contained in:
chfei committed 2026-09-28 17:06:23 +08:00
1 parent 90dacd88a3
commit 766afa2fb8
11 files changed
+2155 -2135

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -11,7 +11,7 @@ namespace KJD_Web.Controllers.WX
{
[RoutePrefix("wxxd_shop")]
[Route("{action}")]
public class WXShopController:AsmxApiController
public partial class WXShopController:AsmxApiController
{
public IHttpActionResult get_shop_list()
@@ -0,0 +1,40 @@
using KJD_Web.Requests;
using KJD_Web.Services.Shops;
using Store.Framework.Dtos;
using Store.Framework.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
namespace KJD_Web.Controllers.WX;
public partial class WXShopController : AsmxApiController
{
private readonly ShopService _shopService;
public WXShopController(ShopService shopService)
{
_shopService = shopService;
}
/// <summary>
/// 更新商铺永久续费
/// </summary>
/// <returns></returns>
[HttpPost]
public IHttpActionResult UpdateShopNeverExpires(ShopNeverExpiresRequest request)
{
try
{
var ret = _shopService.UpdateShopNeverExpires(request.UserName, request.ShopId, request.OwnerUser, request.IsNever);
return Ok(ApiResult.Success(ret));
}
catch (Exception ex)
{
return Ok(ApiResult.Fail(ex.Message));
}
}
}
+3
View File
@@ -193,6 +193,7 @@
<Compile Include="Controllers\AsmxApiController.cs" />
<Compile Include="Controllers\ImageCacheController.cs" />
<Compile Include="Controllers\WX\OEMController.cs" />
<Compile Include="Controllers\WX\WXShop_N_Controller.cs" />
<Compile Include="Controllers\WX\WXUser_N_Controller.cs" />
<Compile Include="Controllers\WX\WXShopController.cs" />
<Compile Include="Controllers\WX\WXUserController.cs" />
@@ -218,6 +219,7 @@
<Compile Include="Model\WxModel\oms_wei_transfer_extra_package.cs" />
<Compile Include="Model\WxModel\yh_sync_logistics.cs" />
<Compile Include="Requests\RequestBase.cs" />
<Compile Include="Requests\ShopRequest.cs" />
<Compile Include="Requests\Users\CUUserInfoRequest.cs" />
<Compile Include="Requests\Users\RebateRecordRequest.cs" />
<Compile Include="Responses\Users\RebateRecordResponse.cs" />
@@ -264,6 +266,7 @@
<Compile Include="Repository\UserPointsRecordRepository.cs" />
<Compile Include="Requests\Users\ShopRenewRequest.cs" />
<Compile Include="Services\ImageCacheService.cs" />
<Compile Include="Services\Shops\ShopService.cs" />
<Compile Include="Services\Users\UserService.FeeRecord.cs" />
<Compile Include="Services\Users\UserService.OEM.cs" />
<Compile Include="Services\Users\UserService.cs" />
@@ -76,6 +76,8 @@ namespace KJD_Web.Model.ShopModel
public long? erp_shop_id { get; internal set; }
public long? erp_corporate_account_user_id { get; internal set; }
public long? erp_manage_user_id { get; internal set; }
public bool never_expires { get; internal set; }
}
public class AuthInfo
+14
View File
@@ -0,0 +1,14 @@
using Store.Framework.Dtos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace KJD_Web.Requests;
public class ShopNeverExpiresRequest : SignRequestBase
{
public string ShopId { get; set; }
public string OwnerUser { get; set; }
public bool IsNever { get; set; }
}
@@ -0,0 +1,42 @@
using MAX.Core.DependencyInjection;
using MAX.Core.Logger;
using Store.Contracts.Shops;
using Store.Contracts.User.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace KJD_Web.Services.Shops;
public class ShopService : ITransientDependency
{
private readonly IFreeSql _freeSql;
private readonly ILoggerFacade _logger;
private readonly IUserService _userService;
public ShopService(IFreeSql freeSql, ILoggerFacade logger, IUserService userService)
{
_freeSql = freeSql;
_logger = logger;
_userService = userService;
}
/// <summary>
/// 修改商铺永不过期
/// </summary>
public bool UpdateShopNeverExpires(string userName, string shopId,string ownerUser, bool isNever)
{
if (string.IsNullOrEmpty(userName)) return false;
if (string.IsNullOrEmpty(shopId)) return false;
var user = _userService.GetUserByUserName(userName);
if (user == null) return false;
if (user.SaLevel != 1) return false;
var affrows = _freeSql.Update<ShopEntity>()
.Set(a => a.NeverExpires, isNever)
.Where(a => a.ShopId == shopId && a.UserName == ownerUser)
.ExecuteAffrows();
return affrows == 1;
}
}
+1 -1
View File
@@ -44,7 +44,7 @@ namespace KJD_Web.Services.Users
{
return GetOEMByUserName(userName) != null;
}
public UserEntity GetUserByUserName(string userName)
{
if (string.IsNullOrEmpty(userName)) return null;
+122 -228
View File
@@ -1,255 +1,149 @@
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Store.Contracts.Shops;
/// <summary>
/// 店铺表
/// </summary>
[Table(Name = "erp.o_shop")]
public class ShopEntity
namespace Store.Contracts.Shops
{
/// <summary>
/// 主键
/// 店铺表
/// </summary>
[Column(Name = "id", IsPrimary = true, IsIdentity = true)]
public long Id { get; set; }
[Table(Name = "wxxd.shop")]
public class ShopEntity
{
/// <summary>
/// 表id
/// </summary>
[Column(Name = "id", IsPrimary = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 店铺名
/// </summary>
[Column(Name = "name")]
public string Name { get; set; }
/// <summary>
/// login_name
/// </summary>
[Column(Name = "login_name")]
public string LoginName { get; set; }
/// <summary>
/// 对应第三方平台Id
/// </summary>
[Column(Name = "type")]
public int Type { get; set; }
/// <summary>
/// login_pass
/// </summary>
[Column(Name = "login_pass")]
public string LoginPass { get; set; }
/// <summary>
/// 登录获取的Cookie信息
/// </summary>
[Column(Name = "login_cookie")]
public string LoginCookie { get; set; }
/// <summary>
/// cookie
/// </summary>
[Column(Name = "cookie")]
public string Cookie { get; set; }
/// <summary>
/// 访问需要的header参数
/// </summary>
[Column(Name = "header_params")]
public string HeaderParams { get; set; }
/// <summary>
/// cookie2
/// </summary>
[Column(Name = "cookie2")]
public string Cookie2 { get; set; }
/// <summary>
/// 店铺url
/// </summary>
[Column(Name = "url")]
public string Url { get; set; }
/// <summary>
/// anti_contents
/// </summary>
[Column(Name = "anti_contents")]
public string AntiContents { get; set; }
/// <summary>
/// 排序
/// </summary>
[Column(Name = "sort")]
public int Sort { get; set; }
/// <summary>
/// openid
/// </summary>
[Column(Name = "openid")]
public string Openid { get; set; }
/// <summary>
/// 状态(1正常2已删除)
/// </summary>
[Column(Name = "status")]
public int? Status { get; set; }
/// <summary>
/// shop_id
/// </summary>
[Column(Name = "shop_id")]
public string ShopId { get; set; }
/// <summary>
/// 描述
/// </summary>
[Column(Name = "remark")]
public string Remark { get; set; }
/// <summary>
/// shop_account
/// </summary>
[Column(Name = "shop_account")]
public string ShopAccount { get; set; }
/// <summary>
/// 第三方平台店铺id,淘宝天猫开放平台使用
/// </summary>
[Column(Name = "seller_id")]
public long? SellerId { get; set; }
/// <summary>
/// sub_user_name
/// </summary>
[Column(Name = "sub_user_name")]
public string SubUserName { get; set; }
/// <summary>
/// 授权时间
/// </summary>
[Column(Name = "auth_time")]
public long? AuthTime { get; set; }
/// <summary>
/// user_name
/// </summary>
[Column(Name = "user_name")]
public string UserName { get; set; }
/// <summary>
/// 服务市场授权到期时间
/// </summary>
[Column(Name = "expire_time")]
public long? ExpireTime { get; set; }
/// <summary>
/// 店铺分组名称(非子账号分组)
/// </summary>
[Column(Name = "group_name")]
public string GroupName { get; set; }
/// <summary>
/// Appkey
/// </summary>
[Column(Name = "app_key")]
public string AppKey { get; set; }
/// <summary>
/// add_time
/// </summary>
[Column(Name = "add_time")]
public DateTime? AddTime { get; set; }
/// <summary>
/// Appsercet
/// </summary>
[Column(Name = "app_secret")]
public string AppSecret { get; set; }
/// <summary>
/// mdy_time
/// </summary>
[Column(Name = "mdy_time")]
public DateTime? MdyTime { get; set; }
/// <summary>
/// 小红椒的access_token
/// </summary>
[Column(Name = "access_token_xhj")]
public string AccessTokenXhj { get; set; }
/// <summary>
/// 店铺所属公司
/// </summary>
[Column(Name = "company_name")]
public string CompanyName { get; set; }
/// <summary>
/// 第三方平台sessionKey(access_token)
/// </summary>
[Column(Name = "access_token")]
public string AccessToken { get; set; }
/// <summary>
/// 备注
/// </summary>
[Column(Name = "notes")]
public string Notes { get; set; }
/// <summary>
/// 小红椒多久到期
/// </summary>
[Column(Name = "expires_in_xhj")]
public long? ExpiresInXhj { get; set; }
/// <summary>
/// login_status
/// </summary>
[Column(Name = "login_status")]
public string LoginStatus { get; set; }
/// <summary>
/// 到期
/// </summary>
[Column(Name = "expires_in")]
public long? ExpiresIn { get; set; }
/// <summary>
/// 店铺每月商品上传限额剩余
/// </summary>
[Column(Name = "add_product_remaining")]
public int AddProductRemaining { get; set; }
/// <summary>
/// 小红椒access_token开始时间
/// </summary>
[Column(Name = "access_token_begin_xhj")]
public long? AccessTokenBeginXhj { get; set; }
/// <summary>
/// 上传限额所处月份
/// </summary>
[Column(Name = "add_product_month")]
public byte AddProductMonth { get; set; }
/// <summary>
/// access_token开始时间
/// </summary>
[Column(Name = "access_token_begin")]
public long? AccessTokenBegin { get; set; }
/// <summary>
/// 分配的二级超管的user_name
/// </summary>
[Column(Name = "operate_sub_sa_name")]
public string OperateSubSaName { get; set; }
/// <summary>
/// 刷新token
/// </summary>
[Column(Name = "refresh_token")]
public string RefreshToken { get; set; }
/// <summary>
/// 分配二级超管的时间
/// </summary>
[Column(Name = "add_sub_sa_time")]
public DateTime? AddSubSaTime { get; set; }
/// <summary>
/// 刷新token过期时间
/// </summary>
[Column(Name = "refresh_token_timeout")]
public long? RefreshTokenTimeout { get; set; }
/// <summary>
/// 代理api请求凭证
/// </summary>
[Column(Name = "session")]
public string Session { get; set; }
/// <summary>
/// 代理api获取请求凭证的shopkey字段
/// </summary>
[Column(Name = "shop_key")]
public string ShopKey { get; set; }
/// <summary>
/// 请求url
/// </summary>
[Column(Name = "api_request_url")]
public string ApiRequestUrl { get; set; }
/// <summary>
/// 回掉URL
/// </summary>
[Column(Name = "api_callback_url")]
public string ApiCallbackUrl { get; set; }
/// <summary>
/// 负责人id
/// </summary>
[Column(Name = "manage_user_id")]
public long? ManageUserId { get; set; }
/// <summary>
/// 默认运费模板id,抖店上传商品使用
/// </summary>
[Column(Name = "default_freight_template_id")]
public long? DefaultFreightTemplateId { get; set; }
/// <summary>
/// 默认品牌id,抖店上传商品使用
/// </summary>
[Column(Name = "default_brand_id")]
public long? DefaultBrandId { get; set; }
/// <summary>
/// 店铺是否已开启尺码自动优化,0:不需要开启,1:未开启,2:已开启
/// </summary>
[Column(Name = "auto_size_template_optimize")]
public byte? AutoSizeTemplateOptimize { get; set; }
/// <summary>
/// 店铺分组
/// </summary>
[Column(Name = "shop_group_id")]
public long? ShopGroupId { get; set; }
/// <summary>
/// 企业账号用户id
/// </summary>
[Column(Name = "corporate_account_user_id")]
public long? CorporateAccountUserId { get; set; }
/// <summary>
/// 国家/地区
/// </summary>
[Column(Name = "region_id")]
public long? RegionId { get; set; }
/// <summary>
/// 商户ID
/// </summary>
[Column(Name = "merchant_id")]
public long? MerchantId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(Name = "create_time")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
[Column(Name = "create_by")]
public string CreateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(Name = "update_time")]
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
[Column(Name = "update_by")]
public string UpdateBy { get; set; }
/// <summary>
/// api调用状态0未开启1已开启
/// </summary>
[Column(Name = "api_status")]
public int ApiStatus { get; set; }
/// <summary>
/// 是否开启自动购买外采礼物单,0:未开启,1:已开启
/// </summary>
[Column(Name = "auto_purchase_external_gift")]
public int? AutoPurchaseExternalGift { get; set; }
}
/// <summary>
/// login_status2
/// </summary>
[Column(Name = "login_status2")]
public string LoginStatus2 { get; set; }
/// <summary>
///
/// </summary>
[Column(Name = "never_expires")]
public bool NeverExpires { get; set; }
}
}
+17 -1
View File
@@ -14,7 +14,7 @@ namespace Store.Framework.Commons
/// </summary>
public override List<Assembly> GetAssemblies()
{
LoadAssemblies(HttpRuntime.BinDirectory);
LoadAssemblies(BinDirectory);
return GetAssembliesFromCurrentAppDomain();
}
@@ -22,5 +22,21 @@ namespace Store.Framework.Commons
{
return ["Max", "Store"];
}
public string BinDirectory
{
get
{
// 传统 ASP.NET Web 环境(IIS 或 VS 调试的 Web 应用)
if (HttpRuntime.AppDomainAppVirtualPath != null)
{
return HttpRuntime.BinDirectory;
}
// 测试环境或非 Web 环境:返回当前程序集所在目录
return AppDomain.CurrentDomain.BaseDirectory;
}
}
}
}
+2 -2
View File
@@ -97,7 +97,7 @@ internal class GiftLogisticsTest
public void BuyTest()
{
var logisticsService = _container.Resolve<VirtualLogisticsService>();
var ret = logisticsService.Buy("15222220006", "260923-573109716621688", "4439363558732480512");
var ret = logisticsService.Buy("16603999396", "260924-061299770880192", "4439386298687207168");
if (ret != null)
{
Console.WriteLine(string.Join(" ", ret.Select(a => $"{a.OrderId}:{a.TrackingNumber}")));
@@ -129,7 +129,7 @@ internal class GiftLogisticsTest
public void GetOrderStatus()
{
var logisticsService = _container.Resolve<VirtualLogisticsService>();
var data = logisticsService.GetOrderStatus(["260923-407759756800192"]);
var data = logisticsService.GetOrderStatus(["260927-623588227382767"]);
Console.WriteLine(string.Join(" ", data.Select(a => $"{a.OrderSn}:{a.KuaidiSn}:{a.ShopOrder}:{a.DeliveryStatus}")));
}
}