切换店铺统计 √

下单选择会员 √
注册会员 √
完善手机号 √
会员流水信息同步 √
This commit is contained in:
谭凯凯
2025-04-10 15:37:17 +08:00
committed by Tankaikai
parent e17a2ee5d1
commit 63e608a208
26 changed files with 263 additions and 64 deletions

View File

@@ -1,14 +1,18 @@
package com.czg.controller.admin;
import cn.hutool.core.thread.ThreadUtil;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ConsGroupDTO;
import com.czg.product.service.ConsGroupService;
import com.czg.product.service.ShopSyncService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -27,6 +31,8 @@ import java.util.List;
@RequestMapping("/admin/product/consGroup")
public class ConsGroupController {
private final ConsGroupService consGroupService;
@Resource
private ShopSyncService shopSyncService;
/**
* 分页
@@ -72,6 +78,7 @@ public class ConsGroupController {
//@SaAdminCheckPermission("consGroup:add")
public CzgResult<Void> addConsGroup(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ConsGroupDTO dto) {
consGroupService.addConsGroup(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -83,6 +90,7 @@ public class ConsGroupController {
//@SaAdminCheckPermission("consGroup:update")
public CzgResult<Void> updateConsGroup(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ConsGroupDTO dto) {
consGroupService.updateConsGroup(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -98,6 +106,7 @@ public class ConsGroupController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
consGroupService.disableConsGroup(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -113,6 +122,15 @@ public class ConsGroupController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
consGroupService.enableConsGroup(id);
asyncToBranchShop(id);
return CzgResult.success();
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncConsGroupBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -1,12 +1,13 @@
package com.czg.controller.admin;
import cn.hutool.core.thread.ThreadUtil;
import com.czg.enums.CrudEnum;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ConsInfoDTO;
import com.czg.product.param.ConsInfoParam;
import com.czg.product.param.ConsReportDamageParam;
import com.czg.product.param.ConsSubUnitParam;
import com.czg.product.service.ConsInfoService;
import com.czg.product.service.ShopSyncService;
import com.czg.product.vo.ConsStatisticsVo;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
@@ -16,6 +17,7 @@ import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -34,6 +36,8 @@ import java.util.List;
@RequestMapping("/admin/product/cons")
public class ConsInfoController {
private final ConsInfoService consInfoService;
@Resource
private ShopSyncService shopSyncService;
/**
* 分页
@@ -79,6 +83,7 @@ public class ConsInfoController {
//@SaAdminCheckPermission("consInfo:add")
public CzgResult<Void> addConsInfo(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ConsInfoDTO dto) {
consInfoService.addConsInfo(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -90,6 +95,7 @@ public class ConsInfoController {
//@SaAdminCheckPermission("consInfo:update")
public CzgResult<Void> updateConsInfo(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ConsInfoDTO dto) {
consInfoService.updateConsInfo(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -120,6 +126,7 @@ public class ConsInfoController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
consInfoService.disableConsInfo(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -135,6 +142,7 @@ public class ConsInfoController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
consInfoService.enableConsInfo(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -167,6 +175,7 @@ public class ConsInfoController {
ValidatorUtil.validateEntity(param, InsertGroup.class);
}
consInfoService.modifySubUnit(param);
asyncToBranchShop(param.getId());
return CzgResult.success();
}
@@ -183,4 +192,12 @@ public class ConsInfoController {
return CzgResult.success(data);
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncConsInfoBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -6,6 +6,7 @@ import com.czg.config.RabbitPublisher;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ProdGroupDTO;
import com.czg.product.service.ProdGroupService;
import com.czg.product.service.ShopSyncService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
@@ -13,6 +14,7 @@ import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -32,6 +34,8 @@ import java.util.List;
public class ProdGroupController {
private final ProdGroupService prodGroupService;
private final RabbitPublisher rabbitPublisher;
@Resource
private ShopSyncService shopSyncService;
/**
* 分页
@@ -79,6 +83,7 @@ public class ProdGroupController {
Long shopId = StpKit.USER.getShopId(0L);
dto.setShopId(shopId);
prodGroupService.addProdGroup(dto);
asyncToBranchShop(dto.getId());
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -95,6 +100,7 @@ public class ProdGroupController {
Long shopId = StpKit.USER.getShopId(0L);
dto.setShopId(shopId);
prodGroupService.updateProdGroup(dto,true);
asyncToBranchShop(dto.getId());
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -111,6 +117,7 @@ public class ProdGroupController {
Long shopId = StpKit.USER.getShopId(0L);
dto.setShopId(shopId);
prodGroupService.updateProdGroup(dto,false);
asyncToBranchShop(dto.getId());
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -145,6 +152,7 @@ public class ProdGroupController {
AssertUtil.isNull(id, "{}不能为空", "id");
Long shopId = StpKit.USER.getShopId(0L);
prodGroupService.disableProdGroup(shopId, id);
asyncToBranchShop(id);
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -162,9 +170,18 @@ public class ProdGroupController {
AssertUtil.isNull(id, "{}不能为空", "id");
Long shopId = StpKit.USER.getShopId(0L);
prodGroupService.enableProdGroup(shopId, id);
asyncToBranchShop(id);
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
return CzgResult.success();
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncGroupBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -15,6 +15,7 @@ import com.czg.product.entity.ProductStockFlow;
import com.czg.product.param.*;
import com.czg.product.service.ProdConsRelationService;
import com.czg.product.service.ProductService;
import com.czg.product.service.ShopSyncService;
import com.czg.product.vo.ProductStatisticsVo;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
@@ -24,6 +25,7 @@ import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -44,6 +46,8 @@ public class ProductController {
private final ProductService productService;
private final ProdConsRelationService prodConsRelationService;
private final RabbitPublisher rabbitPublisher;
@Resource
private ShopSyncService shopSyncService;
/**
* 商品-分页
@@ -109,6 +113,7 @@ public class ProductController {
Long shopId = StpKit.USER.getShopId(0L);
dto.setShopId(shopId);
productService.addProduct(dto);
asyncToBranchShop(dto.getId());
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -137,6 +142,7 @@ public class ProductController {
Long shopId = StpKit.USER.getShopId(0L);
dto.setShopId(shopId);
productService.updateProduct(dto);
asyncToBranchShop(dto.getId());
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -168,6 +174,7 @@ public class ProductController {
AssertUtil.isNull(id, "{}不能为空", "id");
Long shopId = StpKit.USER.getShopId(0L);
productService.deleteProduct(shopId, id);
asyncToBranchShop(id);
ThreadUtil.execAsync(() -> {
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
});
@@ -216,6 +223,7 @@ public class ProductController {
//@SaAdminCheckPermission("product:bind")
public CzgResult<Void> bindCons(@RequestBody @Validated({DefaultGroup.class}) ProdConsBindDTO param) {
prodConsRelationService.saveProdConsRelation(param);
asyncToBranchShop2(param.getId());
return CzgResult.success();
}
@@ -227,6 +235,7 @@ public class ProductController {
//@SaAdminCheckPermission("product:update")
public CzgResult<Void> refundToStock(@RequestBody @Validated({DefaultGroup.class}) ProdRefundToStockParam param) {
productService.refundToStock(param);
asyncToBranchShop(param.getId());
return CzgResult.success();
}
@@ -282,4 +291,20 @@ public class ProductController {
return CzgResult.success(data);
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncProductBySourceShop(shopId, id, sysUserId);
});
}
private void asyncToBranchShop2(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncConsProBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -1,14 +1,18 @@
package com.czg.controller.admin;
import cn.hutool.core.thread.ThreadUtil;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ShopProdCategoryDTO;
import com.czg.product.service.ShopProdCategoryService;
import com.czg.product.service.ShopSyncService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -27,6 +31,8 @@ import java.util.List;
@RequestMapping("/admin/prod/category")
public class ShopProdCategoryController {
private final ShopProdCategoryService shopProdCategoryService;
@Resource
private ShopSyncService shopSyncService;
@GetMapping("page")
@OperationLog("商品分类-分页")
@@ -58,6 +64,7 @@ public class ShopProdCategoryController {
//@SaAdminCheckPermission("shopProdCategory:add")
public CzgResult<Void> addShopProdCategory(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ShopProdCategoryDTO dto) {
shopProdCategoryService.addShopProdCategory(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -66,6 +73,7 @@ public class ShopProdCategoryController {
//@SaAdminCheckPermission("shopProdCategory:update")
public CzgResult<Void> updateShopProdCategory(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ShopProdCategoryDTO dto) {
shopProdCategoryService.updateShopProdCategory(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -86,6 +94,7 @@ public class ShopProdCategoryController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdCategoryService.disableShopProdCategory(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -96,7 +105,16 @@ public class ShopProdCategoryController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdCategoryService.enableShopProdCategory(id);
asyncToBranchShop(id);
return CzgResult.success();
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncCategoryBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -1,14 +1,19 @@
package com.czg.controller.admin;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ShopProdSpecDTO;
import com.czg.product.service.ShopProdSpecService;
import com.czg.product.service.ShopSyncService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
import com.czg.validator.ValidatorUtil;
import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -26,6 +31,9 @@ import java.util.List;
@RequestMapping("/admin/prod/spec")
public class ShopProdSpecController {
private final ShopProdSpecService shopProdSpecService;
@Resource
private ShopSyncService shopSyncService;
@GetMapping("list")
@OperationLog("商品规格-列表")
@@ -50,9 +58,8 @@ public class ShopProdSpecController {
public CzgResult<Void> addShopProdSpec(@RequestBody ShopProdSpecDTO dto) {
//效验数据
ValidatorUtil.validateEntity(dto, InsertGroup.class, DefaultGroup.class);
shopProdSpecService.addShopProdSpec(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -62,9 +69,11 @@ public class ShopProdSpecController {
public CzgResult<Void> updateShopProdSpec(@RequestBody ShopProdSpecDTO dto) {
//效验数据
ValidatorUtil.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
shopProdSpecService.updateShopProdSpec(dto);
List<Long> affectedIdList = dto.getAffectedIdList();
if (CollUtil.isNotEmpty(affectedIdList)) {
affectedIdList.parallelStream().forEach(this::asyncToBranchShop);
}
return CzgResult.success();
}
@@ -85,6 +94,7 @@ public class ShopProdSpecController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdSpecService.disableShopProdSpec(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -95,6 +105,7 @@ public class ShopProdSpecController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdSpecService.enableShopProdSpec(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -103,6 +114,10 @@ public class ShopProdSpecController {
//@SaAdminCheckPermission("shopProductSpec:add")
public CzgResult<Void> quickAddShopProdSpec(@RequestBody ShopProdSpecDTO dto) {
shopProdSpecService.quickAddShopProdSpec(dto);
List<Long> affectedIdList = dto.getAffectedIdList();
if (CollUtil.isNotEmpty(affectedIdList)) {
affectedIdList.parallelStream().forEach(this::asyncToBranchShop);
}
return CzgResult.success();
}
@@ -120,6 +135,19 @@ public class ShopProdSpecController {
//@SaAdminCheckPermission("shopProductSpec:update")
public CzgResult<Void> quickUpdateShopProdSpec(@RequestBody ShopProdSpecDTO dto) {
shopProdSpecService.quickUpdateShopProdSpec(dto);
List<Long> affectedIdList = dto.getAffectedIdList();
if (CollUtil.isNotEmpty(affectedIdList)) {
affectedIdList.parallelStream().forEach(this::asyncToBranchShop);
}
return CzgResult.success();
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
ThreadUtil.safeSleep(1000L);
shopSyncService.syncSpecBySourceShop(shopId, id, sysUserId);
});
}
}

View File

@@ -1,14 +1,18 @@
package com.czg.controller.admin;
import cn.hutool.core.thread.ThreadUtil;
import com.czg.log.annotation.OperationLog;
import com.czg.product.dto.ShopProdUnitDTO;
import com.czg.product.service.ShopProdUnitService;
import com.czg.product.service.ShopSyncService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.AssertUtil;
import com.czg.validator.group.DefaultGroup;
import com.czg.validator.group.InsertGroup;
import com.czg.validator.group.UpdateGroup;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -28,6 +32,9 @@ import java.util.List;
public class ShopProdUnitController {
private final ShopProdUnitService shopProdUnitService;
@Resource
private ShopSyncService shopSyncService;
@GetMapping("page")
@OperationLog("商品单位-分页")
@@ -58,9 +65,8 @@ public class ShopProdUnitController {
@OperationLog("商品单位-新增")
//@SaAdminCheckPermission("shopProdUnit:add")
public CzgResult<Void> addShopProdUnit(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) ShopProdUnitDTO dto) {
shopProdUnitService.addShopProdUnit(dto);
Long id = shopProdUnitService.addShopProdUnit(dto);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -68,9 +74,8 @@ public class ShopProdUnitController {
@OperationLog("商品单位-修改")
//@SaAdminCheckPermission("shopProdUnit:update")
public CzgResult<Void> updateShopProdUnit(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ShopProdUnitDTO dto) {
shopProdUnitService.updateShopProdUnit(dto);
asyncToBranchShop(dto.getId());
return CzgResult.success();
}
@@ -91,6 +96,7 @@ public class ShopProdUnitController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdUnitService.disableShopProdUnit(id);
asyncToBranchShop(id);
return CzgResult.success();
}
@@ -101,8 +107,16 @@ public class ShopProdUnitController {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
shopProdUnitService.enableShopProdUnit(id);
asyncToBranchShop(id);
return CzgResult.success();
}
private void asyncToBranchShop(Long id) {
long shopId = StpKit.USER.getShopId(0L);
long sysUserId = StpKit.USER.getLoginIdAsLong();
ThreadUtil.execAsync(() -> {
shopSyncService.syncUnitBySourceShop(shopId, id, sysUserId);
});
}
}