分销更名 全民股东

新增全民股东群聊配置
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.market.dto.MkDistributionUserDTO;
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
import com.czg.market.entity.MkDistributionUser;
import com.czg.market.entity.MkDistributionWithdrawFlow;
import com.czg.market.service.MkDistributionConfigService;
import com.czg.market.service.MkDistributionFlowService;
@@ -16,7 +17,7 @@ import com.czg.sa.StpKit;
import com.czg.task.DistributionTask;
import com.czg.utils.AssertUtil;
import com.mybatisflex.core.paginate.Page;
import io.seata.core.exception.TransactionException;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -25,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 分销相关
* 全民股东相关
*
* @author Administrator
*/
@@ -59,7 +60,7 @@ public class UDistributionController {
/**
* 分销员中心-获取配置
* 全民股东=-获取配置
*/
@GetMapping("/getConfig")
public CzgResult<MkDistributionConfigVO> getConfig(@RequestParam Long shopId) {
@@ -67,7 +68,7 @@ public class UDistributionController {
}
/**
* 分销员中心-首页
* 全民股东-首页
*/
@PostMapping("/centerUser")
public CzgResult<Map<String, Object>> centerUser() {
@@ -75,7 +76,7 @@ public class UDistributionController {
}
/**
* 分销员中心-已开通的店铺
* 全民股东界-已开通的店铺
*/
@GetMapping("/centerUser/activates")
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")
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")
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")
public CzgResult<String> getInviteCode(@RequestParam Long shopId, @RequestParam Long shopUserId) {
@@ -108,7 +120,7 @@ public class UDistributionController {
/**
* 分销员中心-实名认证
* 全民股东-实名认证
*/
@PostMapping("/realNameAuth")
public CzgResult<Map<String, Object>> realNameAuth(@RequestBody UserInfo userInfo) {
@@ -120,7 +132,7 @@ public class UDistributionController {
}
/**
* 分销员中心-绑定邀请人
* 全民股东-绑定邀请人
*/
@PostMapping("/bindInviteUser")
public CzgResult<Map<String, Object>> bindInviteUser(@RequestBody MkDistributionUserDTO param) {
@@ -132,7 +144,7 @@ public class UDistributionController {
}
/**
* 分销员:获取邀请人分页列表
* 全民股东:获取邀请人分页列表
*/
@GetMapping("/inviteUser")
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.thread.ThreadUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.entity.ShopInfo;
import com.czg.account.service.ShopInfoService;
import com.czg.config.RabbitPublisher;
@@ -30,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
@@ -66,9 +68,16 @@ public class ProductController {
@GetMapping("page")
@OperationLog("商品-分页")
//@SaAdminCheckPermission("product:page")
public CzgResult<Page<ProductDTO>> getProductPage(ProductDTO param) {
public CzgResult<Map<String, Object>> getProductPage(ProductDTO 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()) {
ValidatorUtil.validateEntity(prodSkuDTO, DefaultGroup.class);
}
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
dto.setShopId(shopId);
productService.addProduct(dto);
asyncProductToShop(dto.getId());
@@ -140,7 +149,7 @@ public class ProductController {
if (dto.getStockNumber() != null) {
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);
productService.updateProduct(dto);
asyncProductToShop(dto.getId());
@@ -155,7 +164,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_xiu_gai_shang_pin")
public CzgResult<Void> updateProductStock(@RequestBody ProductModifyStockParam param) {
ValidatorUtil.validateEntity(param, DefaultGroup.class);
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId);
productService.updateProductStock(param);
ThreadUtil.execAsync(() -> {
@@ -176,7 +185,7 @@ public class ProductController {
public CzgResult<Void> deleteProduct(@PathVariable("id") Long id) {
//效验数据
AssertUtil.isNull(id, "{}不能为空", "id");
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
productService.deleteProduct(shopId, id);
asyncProductToShop(id);
ThreadUtil.execAsync(() -> {
@@ -193,7 +202,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_shang_xia_jia_shang_pin")
//@SaAdminCheckPermission("product:on-off")
public CzgResult<Void> onOffProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSaleParam param) {
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId);
productService.onOffProduct(param);
ThreadUtil.execAsync(() -> {
@@ -210,7 +219,7 @@ public class ProductController {
//@SaStaffCheckPermission("yun_xu_shou_qing_shang_pin")
//@SaAdminCheckPermission("product:markIsSoldOut")
public CzgResult<Void> markIsSoldOutProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSoldOutParam param) {
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
param.setShopId(shopId);
productService.markProductIsSoldOut(param);
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;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -117,5 +116,9 @@ public class MkDistributionUser implements Serializable {
* 邀请码
*/
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
public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUserMapper, MkDistributionUser> implements MkDistributionUserService {
@Resource
private MkDistributionGroupService mkDistributionGroupService;
@Resource
private MkDistributionConfigService mkDistributionConfigService;
@Resource
@@ -156,6 +158,9 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
}
MkDistributionUser mkDistributionUser = getMkDistributionUserByIdAndShopId(shopUser.getId(), shopId);
MkDistributionConfigVO mkDistributionConfigVO = mkDistributionConfigService.detail(shopId);
MkDistributionGroup group = mkDistributionGroupService.getById(shopId);
result.put("config", mkDistributionConfigVO);
result.put("group", group);
if (mkDistributionUser != null) {
Map<String, Object> distributionUser = new HashMap<>();
distributionUser.put("distributionId", mkDistributionUser.getId());
@@ -165,6 +170,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
distributionUser.put("totalIncome", mkDistributionUser.getTotalIncome());
distributionUser.put("pendingIncome", mkDistributionUser.getPendingIncome());
distributionUser.put("isAssignLevel", mkDistributionUser.getIsAssignLevel());
distributionUser.put("firstIn", mkDistributionUser.getFirstIn());
if (mkDistributionUser.getDistributionLevelId() != null) {
List<MkDistributionLevelConfig> levelConfigList = mkDistributionConfigVO.getLevelConfigList();
@@ -186,8 +192,6 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
distributionUser.put("levelName", "");
}
result.put("distributionUser", distributionUser);
} else {
result.put("config", mkDistributionConfigVO);
}
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
public void stockWarning(Integer warnLine) {
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
UpdateChain.of(Product.class)
.set(Product::getWarnLine, warnLine)
.eq(Product::getShopId, shopId)
@@ -678,7 +678,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
@Override
@Transactional(rollbackFor = Exception.class)
public void reportDamage(ProductReportDamageParam param) {
Long shopId = StpKit.USER.getShopId(0L);
Long shopId = StpKit.USER.getShopId();
Long createUserId = StpKit.USER.getLoginIdAsLong();
String createUserName = StpKit.USER.getAccount();
Product product = mapper.selectOneById(param.getProductId());