分销更名 全民股东

新增全民股东群聊配置
This commit is contained in:
2026-01-28 10:54:58 +08:00
parent ae67fb6f8e
commit 6cd6ac74ea
11 changed files with 219 additions and 24 deletions

View File

@@ -0,0 +1,47 @@
package com.czg.controller.admin;
import com.czg.annotation.SaAdminCheckPermission;
import com.czg.market.entity.MkDistributionGroup;
import com.czg.market.service.MkDistributionGroupService;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
/**
* 全民股东群聊
*
* @author ww
*/
@RestController
@RequestMapping("/admin/disGroup")
public class ADisGroupController {
@Resource
private MkDistributionGroupService mkDistributionGroupService;
/**
* 全民股东群聊
*/
@GetMapping
@SaAdminCheckPermission(parentName = "全民股东群聊", value = "share:config", name = "全民股东群聊-配置")
public CzgResult<MkDistributionGroup> getShareBase() {
return CzgResult.success(mkDistributionGroupService.getById(StpKit.USER.getShopId()));
}
/**
* 全民股东群聊:新增/修改
*/
@PostMapping
@SaAdminCheckPermission(parentName = "全民股东群聊", value = "share:up", name = "全民股东群聊-新增/修改")
public CzgResult<Boolean> editShareBase(@RequestBody MkDistributionGroup group) {
group.setShopId(StpKit.USER.getShopId());
MkDistributionGroup share = mkDistributionGroupService.getById(group.getShopId());
if (share == null) {
return CzgResult.success(mkDistributionGroupService.save(group));
} else {
return CzgResult.success(mkDistributionGroupService.updateById(group, false));
}
}
}

View File

@@ -3,6 +3,7 @@ package com.czg.controller.user;
import com.czg.account.entity.UserInfo; import com.czg.account.entity.UserInfo;
import com.czg.market.dto.MkDistributionUserDTO; import com.czg.market.dto.MkDistributionUserDTO;
import com.czg.market.dto.MkDistributionWithdrawFlowDTO; import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
import com.czg.market.entity.MkDistributionUser;
import com.czg.market.entity.MkDistributionWithdrawFlow; import com.czg.market.entity.MkDistributionWithdrawFlow;
import com.czg.market.service.MkDistributionConfigService; import com.czg.market.service.MkDistributionConfigService;
import com.czg.market.service.MkDistributionFlowService; import com.czg.market.service.MkDistributionFlowService;
@@ -16,7 +17,7 @@ import com.czg.sa.StpKit;
import com.czg.task.DistributionTask; import com.czg.task.DistributionTask;
import com.czg.utils.AssertUtil; import com.czg.utils.AssertUtil;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import io.seata.core.exception.TransactionException; import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -25,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Map; import java.util.Map;
/** /**
* 分销相关 * 全民股东相关
* *
* @author Administrator * @author Administrator
*/ */
@@ -59,7 +60,7 @@ public class UDistributionController {
/** /**
* 分销员中心-获取配置 * 全民股东=-获取配置
*/ */
@GetMapping("/getConfig") @GetMapping("/getConfig")
public CzgResult<MkDistributionConfigVO> getConfig(@RequestParam Long shopId) { public CzgResult<MkDistributionConfigVO> getConfig(@RequestParam Long shopId) {
@@ -67,7 +68,7 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-首页 * 全民股东-首页
*/ */
@PostMapping("/centerUser") @PostMapping("/centerUser")
public CzgResult<Map<String, Object>> centerUser() { public CzgResult<Map<String, Object>> centerUser() {
@@ -75,7 +76,7 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-已开通的店铺 * 全民股东界-已开通的店铺
*/ */
@GetMapping("/centerUser/activates") @GetMapping("/centerUser/activates")
public CzgResult<Page<DistributionCenterShopVO>> activates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) { public CzgResult<Page<DistributionCenterShopVO>> activates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) {
@@ -83,7 +84,7 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-未开通的店铺 * 全民股东-未开通的店铺
*/ */
@GetMapping("/centerUser/unActivates") @GetMapping("/centerUser/unActivates")
public CzgResult<Page<DistributionCenterShopVO>> unActivates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) { public CzgResult<Page<DistributionCenterShopVO>> unActivates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) {
@@ -91,7 +92,7 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-配置信息 * 全民股东-配置信息
*/ */
@GetMapping("/centerConfig") @GetMapping("/centerConfig")
public CzgResult<Map<String, Object>> centerConfig(@RequestParam Long shopId) { public CzgResult<Map<String, Object>> centerConfig(@RequestParam Long shopId) {
@@ -99,7 +100,18 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-获取邀请码 * 全民股东界面-进入过标识
*/
@GetMapping("/editIn")
public CzgResult<Boolean> editIn(@RequestParam Long shopUserId) {
MkDistributionUser distributionUser = new MkDistributionUser();
distributionUser.setFirstIn(1);
distributionUserService.update(distributionUser, QueryWrapper.create().eq(MkDistributionUser::getId, shopUserId));
return CzgResult.success();
}
/**
* 全民股东-获取邀请码
*/ */
@GetMapping("/getInviteCode") @GetMapping("/getInviteCode")
public CzgResult<String> getInviteCode(@RequestParam Long shopId, @RequestParam Long shopUserId) { public CzgResult<String> getInviteCode(@RequestParam Long shopId, @RequestParam Long shopUserId) {
@@ -108,7 +120,7 @@ public class UDistributionController {
/** /**
* 分销员中心-实名认证 * 全民股东-实名认证
*/ */
@PostMapping("/realNameAuth") @PostMapping("/realNameAuth")
public CzgResult<Map<String, Object>> realNameAuth(@RequestBody UserInfo userInfo) { public CzgResult<Map<String, Object>> realNameAuth(@RequestBody UserInfo userInfo) {
@@ -120,7 +132,7 @@ public class UDistributionController {
} }
/** /**
* 分销员中心-绑定邀请人 * 全民股东-绑定邀请人
*/ */
@PostMapping("/bindInviteUser") @PostMapping("/bindInviteUser")
public CzgResult<Map<String, Object>> bindInviteUser(@RequestBody MkDistributionUserDTO param) { public CzgResult<Map<String, Object>> bindInviteUser(@RequestBody MkDistributionUserDTO param) {
@@ -132,7 +144,7 @@ public class UDistributionController {
} }
/** /**
* 分销员:获取邀请人分页列表 * 全民股东:获取邀请人分页列表
*/ */
@GetMapping("/inviteUser") @GetMapping("/inviteUser")
public CzgResult<Page<InviteUserVO>> getInviteUser( public CzgResult<Page<InviteUserVO>> getInviteUser(

View File

@@ -2,6 +2,7 @@ package com.czg.controller.admin;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopInfo;
import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopInfoService;
import com.czg.config.RabbitPublisher; import com.czg.config.RabbitPublisher;
@@ -30,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
@@ -66,9 +68,16 @@ public class ProductController {
@GetMapping("page") @GetMapping("page")
@OperationLog("商品-分页") @OperationLog("商品-分页")
//@SaAdminCheckPermission("product:page") //@SaAdminCheckPermission("product:page")
public CzgResult<Page<ProductDTO>> getProductPage(ProductDTO param) { public CzgResult<Map<String, Object>> getProductPage(ProductDTO param) {
Page<ProductDTO> data = productService.getProductPage(param); Page<ProductDTO> data = productService.getProductPage(param);
return CzgResult.success(data); Map<String, Object> map = JSONObject.parseObject(JSONObject.toJSONString(data), Map.class);
if(data.getRecords() != null){
ProductDTO first = data.getRecords().getFirst();
map.put("warnLine", first.getWarnLine());
}else {
map.put("warnLine", 0);
}
return CzgResult.success(map);
} }
/** /**
@@ -111,7 +120,7 @@ public class ProductController {
for (ProdSkuDTO prodSkuDTO : dto.getSkuList()) { for (ProdSkuDTO prodSkuDTO : dto.getSkuList()) {
ValidatorUtil.validateEntity(prodSkuDTO, DefaultGroup.class); ValidatorUtil.validateEntity(prodSkuDTO, DefaultGroup.class);
} }
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
dto.setShopId(shopId); dto.setShopId(shopId);
productService.addProduct(dto); productService.addProduct(dto);
asyncProductToShop(dto.getId()); asyncProductToShop(dto.getId());
@@ -140,7 +149,7 @@ public class ProductController {
if (dto.getStockNumber() != null) { if (dto.getStockNumber() != null) {
StpKit.USER.checkStaffPermission("yun_xu_xiu_gai_shang_pin_ku_cun"); StpKit.USER.checkStaffPermission("yun_xu_xiu_gai_shang_pin_ku_cun");
} }
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
dto.setShopId(shopId); dto.setShopId(shopId);
productService.updateProduct(dto); productService.updateProduct(dto);
asyncProductToShop(dto.getId()); asyncProductToShop(dto.getId());
@@ -155,7 +164,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_xiu_gai_shang_pin") //@SaStaffCheckPermission("yun_xu_xiu_gai_shang_pin")
public CzgResult<Void> updateProductStock(@RequestBody ProductModifyStockParam param) { public CzgResult<Void> updateProductStock(@RequestBody ProductModifyStockParam param) {
ValidatorUtil.validateEntity(param, DefaultGroup.class); ValidatorUtil.validateEntity(param, DefaultGroup.class);
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId); param.setShopId(shopId);
productService.updateProductStock(param); productService.updateProductStock(param);
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
@@ -176,7 +185,7 @@ public class ProductController {
public CzgResult<Void> deleteProduct(@PathVariable("id") Long id) { public CzgResult<Void> deleteProduct(@PathVariable("id") Long id) {
//效验数据 //效验数据
AssertUtil.isNull(id, "{}不能为空", "id"); AssertUtil.isNull(id, "{}不能为空", "id");
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
productService.deleteProduct(shopId, id); productService.deleteProduct(shopId, id);
asyncProductToShop(id); asyncProductToShop(id);
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
@@ -193,7 +202,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_shang_xia_jia_shang_pin") //@SaStaffCheckPermission("yun_xu_shang_xia_jia_shang_pin")
//@SaAdminCheckPermission("product:on-off") //@SaAdminCheckPermission("product:on-off")
public CzgResult<Void> onOffProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSaleParam param) { public CzgResult<Void> onOffProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSaleParam param) {
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId); param.setShopId(shopId);
productService.onOffProduct(param); productService.onOffProduct(param);
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
@@ -210,7 +219,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_shou_qing_shang_pin") //@SaStaffCheckPermission("yun_xu_shou_qing_shang_pin")
//@SaAdminCheckPermission("product:markIsSoldOut") //@SaAdminCheckPermission("product:markIsSoldOut")
public CzgResult<Void> markIsSoldOutProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSoldOutParam param) { public CzgResult<Void> markIsSoldOutProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSoldOutParam param) {
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId); param.setShopId(shopId);
productService.markProductIsSoldOut(param); productService.markProductIsSoldOut(param);
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {

View File

@@ -0,0 +1,67 @@
package com.czg.market.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 分销员管理群(全民股东管理) 实体类。
*
* @author ww
* @since 2026-01-28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("mk_distribution_group")
public class MkDistributionGroup implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id
private Long shopId;
/**
* 群二维码地址
*/
private String groupUrl;
/**
* 模块标题 15字以内
*/
private String title;
/**
* 模块内容 20字以内
*/
private String content;
/**
* 是否开启
*/
private Integer isEnable;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 更新时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@@ -1,7 +1,6 @@
package com.czg.market.entity; package com.czg.market.entity;
import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table; import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@@ -117,5 +116,9 @@ public class MkDistributionUser implements Serializable {
* 邀请码 * 邀请码
*/ */
private String inviteCode; private String inviteCode;
/**
* 是否第一次进入全民股东界面
*/
private Integer firstIn;
} }

View File

@@ -0,0 +1,14 @@
package com.czg.market.service;
import com.mybatisflex.core.service.IService;
import com.czg.market.entity.MkDistributionGroup;
/**
* 分销员管理群(全民股东管理) 服务层。
*
* @author ww
* @since 2026-01-28
*/
public interface MkDistributionGroupService extends IService<MkDistributionGroup> {
}

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkDistributionGroup;
/**
* 分销员管理群(全民股东管理) 映射层。
*
* @author ww
* @since 2026-01-28
*/
public interface MkDistributionGroupMapper extends BaseMapper<MkDistributionGroup> {
}

View File

@@ -0,0 +1,18 @@
package com.czg.service.market.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkDistributionGroup;
import com.czg.market.service.MkDistributionGroupService;
import com.czg.service.market.mapper.MkDistributionGroupMapper;
import org.springframework.stereotype.Service;
/**
* 分销员管理群(全民股东管理) 服务层实现。
*
* @author ww
* @since 2026-01-28
*/
@Service
public class MkDistributionGroupServiceImpl extends ServiceImpl<MkDistributionGroupMapper, MkDistributionGroup> implements MkDistributionGroupService{
}

View File

@@ -61,6 +61,8 @@ import java.util.stream.Collectors;
@Service @Service
public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUserMapper, MkDistributionUser> implements MkDistributionUserService { public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUserMapper, MkDistributionUser> implements MkDistributionUserService {
@Resource
private MkDistributionGroupService mkDistributionGroupService;
@Resource @Resource
private MkDistributionConfigService mkDistributionConfigService; private MkDistributionConfigService mkDistributionConfigService;
@Resource @Resource
@@ -156,6 +158,9 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
} }
MkDistributionUser mkDistributionUser = getMkDistributionUserByIdAndShopId(shopUser.getId(), shopId); MkDistributionUser mkDistributionUser = getMkDistributionUserByIdAndShopId(shopUser.getId(), shopId);
MkDistributionConfigVO mkDistributionConfigVO = mkDistributionConfigService.detail(shopId); MkDistributionConfigVO mkDistributionConfigVO = mkDistributionConfigService.detail(shopId);
MkDistributionGroup group = mkDistributionGroupService.getById(shopId);
result.put("config", mkDistributionConfigVO);
result.put("group", group);
if (mkDistributionUser != null) { if (mkDistributionUser != null) {
Map<String, Object> distributionUser = new HashMap<>(); Map<String, Object> distributionUser = new HashMap<>();
distributionUser.put("distributionId", mkDistributionUser.getId()); distributionUser.put("distributionId", mkDistributionUser.getId());
@@ -165,6 +170,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
distributionUser.put("totalIncome", mkDistributionUser.getTotalIncome()); distributionUser.put("totalIncome", mkDistributionUser.getTotalIncome());
distributionUser.put("pendingIncome", mkDistributionUser.getPendingIncome()); distributionUser.put("pendingIncome", mkDistributionUser.getPendingIncome());
distributionUser.put("isAssignLevel", mkDistributionUser.getIsAssignLevel()); distributionUser.put("isAssignLevel", mkDistributionUser.getIsAssignLevel());
distributionUser.put("firstIn", mkDistributionUser.getFirstIn());
if (mkDistributionUser.getDistributionLevelId() != null) { if (mkDistributionUser.getDistributionLevelId() != null) {
List<MkDistributionLevelConfig> levelConfigList = mkDistributionConfigVO.getLevelConfigList(); List<MkDistributionLevelConfig> levelConfigList = mkDistributionConfigVO.getLevelConfigList();
@@ -186,8 +192,6 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
distributionUser.put("levelName", ""); distributionUser.put("levelName", "");
} }
result.put("distributionUser", distributionUser); result.put("distributionUser", distributionUser);
} else {
result.put("config", mkDistributionConfigVO);
} }
return result; return result;
} }

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkDistributionGroupMapper">
</mapper>

View File

@@ -668,7 +668,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
@Override @Override
public void stockWarning(Integer warnLine) { public void stockWarning(Integer warnLine) {
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
UpdateChain.of(Product.class) UpdateChain.of(Product.class)
.set(Product::getWarnLine, warnLine) .set(Product::getWarnLine, warnLine)
.eq(Product::getShopId, shopId) .eq(Product::getShopId, shopId)
@@ -678,7 +678,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void reportDamage(ProductReportDamageParam param) { public void reportDamage(ProductReportDamageParam param) {
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
Long createUserId = StpKit.USER.getLoginIdAsLong(); Long createUserId = StpKit.USER.getLoginIdAsLong();
String createUserName = StpKit.USER.getAccount(); String createUserName = StpKit.USER.getAccount();
Product product = mapper.selectOneById(param.getProductId()); Product product = mapper.selectOneById(param.getProductId());