Skip to content

Commit

Permalink
修复意外创建重复关联表的bug
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleFish-233 committed Sep 28, 2023
1 parent f2466c9 commit d9c01de
Show file tree
Hide file tree
Showing 12 changed files with 119 additions and 212 deletions.
Expand Up @@ -21,14 +21,14 @@ namespace CnGalWebSite.APIServer.Controllers
public class CommodityAPIController : ControllerBase
{
private readonly IRepository<Commodity, long> _commodityRepository;
private readonly IRepository<CommodityApplicationUser, long> _commodityUserRepository;
private readonly IRepository<ApplicationUserCommodity, long> _commodityUserRepository;
private readonly IQueryService _queryService;
private readonly IAppHelper _appHelper;
private readonly IRepository<ApplicationUser, long> _userRepository;
private readonly IRepository<UserIntegral, string> _userIntegralRepository;
private readonly IUserService _userService;

public CommodityAPIController(IRepository<Commodity, long> commodityRepository, IQueryService queryService, IAppHelper appHelper, IRepository<ApplicationUser, long> userRepository, IRepository<CommodityApplicationUser, long> commodityUserRepository,
public CommodityAPIController(IRepository<Commodity, long> commodityRepository, IQueryService queryService, IAppHelper appHelper, IRepository<ApplicationUser, long> userRepository, IRepository<ApplicationUserCommodity, long> commodityUserRepository,
IRepository<UserIntegral, string> userIntegralRepository, IUserService userService)
{
_commodityRepository= commodityRepository;
Expand Down Expand Up @@ -191,7 +191,7 @@ public async Task<Result> BuyCommodity(BuyCommodityModel model)
}

await _userService.TryAddGCoins(user.Id, UserIntegralSourceType.BuyCommodity, -commodity.Price, $"给看板娘买{commodity.Name}");
await _commodityUserRepository.InsertAsync(new CommodityApplicationUser
await _commodityUserRepository.InsertAsync(new ApplicationUserCommodity
{
ApplicationUserId = user.Id,
CommodityId = commodity.Id,
Expand Down
Expand Up @@ -625,6 +625,7 @@ public async Task<ActionResult<UserTaskModel>> GetUserTasks()
else
{
await _userService.TryAddGCoins(user.Id, UserIntegralSourceType.BindSteamId, 10, null);
model.IsBindSteamId = true;
}
}

Expand Down
Expand Up @@ -100,7 +100,7 @@ public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
public DbSet<EntryInformationType> EntryInformationTypes { get; set; }
public DbSet<BasicEntryInformation> BasicEntryInformation { get; set; }
public DbSet<Commodity> Commodities { get; set; }
public DbSet<CommodityApplicationUser> CommodityApplicationUsers { get; set; }
public DbSet<ApplicationUserCommodity> ApplicationUserCommodities { get; set; }


protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
Expand Down Expand Up @@ -171,7 +171,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
modelBuilder.Entity<Commodity>()
.HasMany(e => e.Users)
.WithMany(e => e.Commodities)
.UsingEntity<CommodityApplicationUser>();
.UsingEntity<ApplicationUserCommodity>();

//设置周边自身多对多关系
modelBuilder.Entity<PeripheryRelation>(entity =>
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -72,33 +72,7 @@ protected override void Up(MigrationBuilder migrationBuilder)
.Annotation("MySql:CharSet", "utf8mb4");

migrationBuilder.CreateTable(
name: "ApplicationUserCommodity",
columns: table => new
{
CommoditiesId = table.Column<long>(type: "bigint", nullable: false),
UsersId = table.Column<string>(type: "varchar(255)", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_ApplicationUserCommodity", x => new { x.CommoditiesId, x.UsersId });
table.ForeignKey(
name: "FK_ApplicationUserCommodity_AspNetUsers_UsersId",
column: x => x.UsersId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_ApplicationUserCommodity_Commodities_CommoditiesId",
column: x => x.CommoditiesId,
principalTable: "Commodities",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
})
.Annotation("MySql:CharSet", "utf8mb4");

migrationBuilder.CreateTable(
name: "CommodityApplicationUsers",
name: "ApplicationUserCommodities",
columns: table => new
{
Id = table.Column<long>(type: "bigint", nullable: false)
Expand All @@ -109,15 +83,15 @@ protected override void Up(MigrationBuilder migrationBuilder)
},
constraints: table =>
{
table.PrimaryKey("PK_CommodityApplicationUsers", x => x.Id);
table.PrimaryKey("PK_ApplicationUserCommodities", x => x.Id);
table.ForeignKey(
name: "FK_CommodityApplicationUsers_AspNetUsers_ApplicationUserId",
name: "FK_ApplicationUserCommodities_AspNetUsers_ApplicationUserId",
column: x => x.ApplicationUserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_CommodityApplicationUsers_Commodities_CommodityId",
name: "FK_ApplicationUserCommodities_Commodities_CommodityId",
column: x => x.CommodityId,
principalTable: "Commodities",
principalColumn: "Id",
Expand All @@ -130,7 +104,7 @@ protected override void Up(MigrationBuilder migrationBuilder)
keyColumn: "Id",
keyValue: "a18be9c0-aa65-4af8-bd17-00bd9344e575",
columns: new[] { "ConcurrencyStamp", "GCoins", "RegistTime" },
values: new object[] { "f7625f82-d8a0-47c9-bab2-4b9a3799cd4b", 0, new DateTime(2023, 9, 28, 19, 21, 13, 20, DateTimeKind.Utc).AddTicks(9432) });
values: new object[] { "00dfc3c2-8d7e-4938-ad11-6b3de1305bf5", 0, new DateTime(2023, 9, 28, 20, 46, 4, 578, DateTimeKind.Utc).AddTicks(5257) });

migrationBuilder.CreateIndex(
name: "IX_EntryInformationTypes_Name",
Expand All @@ -139,35 +113,27 @@ protected override void Up(MigrationBuilder migrationBuilder)
unique: true);

migrationBuilder.CreateIndex(
name: "IX_ApplicationUserCommodity_UsersId",
table: "ApplicationUserCommodity",
column: "UsersId");
name: "IX_ApplicationUserCommodities_ApplicationUserId",
table: "ApplicationUserCommodities",
column: "ApplicationUserId");

migrationBuilder.CreateIndex(
name: "IX_ApplicationUserCommodities_CommodityId",
table: "ApplicationUserCommodities",
column: "CommodityId");

migrationBuilder.CreateIndex(
name: "IX_Commodities_Name",
table: "Commodities",
column: "Name",
unique: true);

migrationBuilder.CreateIndex(
name: "IX_CommodityApplicationUsers_ApplicationUserId",
table: "CommodityApplicationUsers",
column: "ApplicationUserId");

migrationBuilder.CreateIndex(
name: "IX_CommodityApplicationUsers_CommodityId",
table: "CommodityApplicationUsers",
column: "CommodityId");
}

/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ApplicationUserCommodity");

migrationBuilder.DropTable(
name: "CommodityApplicationUsers");
name: "ApplicationUserCommodities");

migrationBuilder.DropTable(
name: "Commodities");
Expand Down

0 comments on commit d9c01de

Please sign in to comment.