Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
d685d437aa
|
|
@ -0,0 +1,61 @@
|
|||
package com.czg.controller.admin;
|
||||
|
||||
import com.czg.annotation.SaAdminCheckPermission;
|
||||
import com.czg.annotation.SaCheckMainShop;
|
||||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.market.dto.MkDistributionConfigDTO;
|
||||
import com.czg.market.dto.MkEnableConfigDTO;
|
||||
import com.czg.market.dto.MkRedemptionConfigDTO;
|
||||
import com.czg.market.service.MkDistributionConfigService;
|
||||
import com.czg.market.service.MkEnableConfigService;
|
||||
import com.czg.market.service.MkRedemptionConfigService;
|
||||
import com.czg.market.vo.MkDistributionConfigVO;
|
||||
import com.czg.market.vo.MkEnableConfigVO;
|
||||
import com.czg.market.vo.MkRedemptionCodeVO;
|
||||
import com.czg.market.vo.MkRedemptionConfigVO;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.groups.Default;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* 分销相关
|
||||
* @author Administrator
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/distribution")
|
||||
public class DistributionController {
|
||||
@Resource
|
||||
private MkDistributionConfigService configService;
|
||||
|
||||
/**
|
||||
* 配置信息详情
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "distribution:detail", name = "分销配置")
|
||||
@GetMapping
|
||||
public CzgResult<MkDistributionConfigVO> detail() {
|
||||
return CzgResult.success(configService.detail(StpKit.USER.getMainShopId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置信息修改
|
||||
*
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "distribution:edit", name = "分销修改")
|
||||
@SaCheckMainShop
|
||||
@PutMapping
|
||||
public CzgResult<Boolean> edit(@Validated({UpdateGroup.class, Default.class}) @RequestBody MkDistributionConfigDTO dto) {
|
||||
return CzgResult.success(configService.edit(StpKit.USER.getShopId(), dto));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.*;
|
||||
import lombok.experimental.Accessors;
|
||||
import java.io.Serial;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 分销配置 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class MkDistributionConfigDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 是否开启
|
||||
*/
|
||||
// @NotNull(message = "是否开启不能为空")
|
||||
private Integer isEnable;
|
||||
|
||||
/**
|
||||
* pay购买开通 auto自动开通 manual手动开通
|
||||
*/
|
||||
// @NotBlank(message = "开通方式不能为空")
|
||||
private String openType;
|
||||
|
||||
/**
|
||||
* 邀请条件人数
|
||||
*/
|
||||
@Min(value = 1, message = "邀请人数不能小于1")
|
||||
private Integer inviteCount;
|
||||
|
||||
/**
|
||||
* 被邀请人消费有效 0 1
|
||||
*/
|
||||
private Integer inviteConsume;
|
||||
|
||||
/**
|
||||
* 购买开通金额
|
||||
*/
|
||||
@DecimalMin(value = "0.01", message = "购买开通金额不能小于0.01")
|
||||
private BigDecimal payAmount;
|
||||
|
||||
/**
|
||||
* 每人奖励次数
|
||||
*/
|
||||
// @NotNull(message = "每人奖励次数不能为空")
|
||||
@Min(value = 1, message = "每人奖励次数不能小于1")
|
||||
private Integer rewardCount;
|
||||
|
||||
/**
|
||||
* n天结算
|
||||
*/
|
||||
// @NotNull(message = "结算天数不能为空")
|
||||
@Min(value = 0, message = "结算天数不能小于0")
|
||||
private Integer settlementDay;
|
||||
|
||||
/**
|
||||
* not_upgrade不自动升级 invite邀请有效人数 cost消费金额
|
||||
*/
|
||||
// @NotBlank(message = "升级条件不能为空")
|
||||
private String upgradeType;
|
||||
|
||||
/**
|
||||
* 未开通页面富文本
|
||||
*/
|
||||
private String notActivatedPage;
|
||||
|
||||
|
||||
@Valid
|
||||
private List<MkDistributionLevelConfigDTO> levelConfigList;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import jakarta.validation.constraints.*;
|
||||
import lombok.experimental.Accessors;
|
||||
import java.io.Serial;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 分销员等级配置 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class MkDistributionLevelConfigDTO implements Serializable {
|
||||
|
||||
|
||||
private Long id;
|
||||
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@NotBlank(message = "名称不能为空")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 有效人数
|
||||
*/
|
||||
@Min(value = 1, message = "有效人数不能小于1")
|
||||
private Integer inviteCount;
|
||||
|
||||
/**
|
||||
* 消费金额
|
||||
*/
|
||||
@DecimalMin(value = "0.01", message = "消费金额不能小于0.01")
|
||||
private BigDecimal costAmount;
|
||||
|
||||
/**
|
||||
* 一级分销比例
|
||||
*/
|
||||
@NotNull(message = "一级分销比例不为空")
|
||||
private BigDecimal levelOneCommission;
|
||||
|
||||
/**
|
||||
* 二级分销比例
|
||||
*/
|
||||
private BigDecimal levelTwoCommission;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 分销配置 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("mk_distribution_config")
|
||||
@Accessors(chain = true)
|
||||
public class MkDistributionConfig implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 是否开启
|
||||
*/
|
||||
private Integer isEnable;
|
||||
|
||||
/**
|
||||
* pay购买开通 auto自动开通 manual手动开通
|
||||
*/
|
||||
private String openType;
|
||||
|
||||
/**
|
||||
* 邀请条件人数
|
||||
*/
|
||||
private Integer inviteCount;
|
||||
|
||||
/**
|
||||
* 被邀请人消费有效 0 1
|
||||
*/
|
||||
private Integer inviteConsume;
|
||||
|
||||
/**
|
||||
* 购买开通金额
|
||||
*/
|
||||
private BigDecimal payAmount;
|
||||
|
||||
/**
|
||||
* 每人奖励次数
|
||||
*/
|
||||
private Integer rewardCount;
|
||||
|
||||
/**
|
||||
* n天结算
|
||||
*/
|
||||
private Integer settlementDay;
|
||||
|
||||
/**
|
||||
* not_upgrade不自动升级 invite邀请有效人数 cost消费金额
|
||||
*/
|
||||
private String upgradeType;
|
||||
|
||||
/**
|
||||
* 未开通页面富文本
|
||||
*/
|
||||
private String notActivatedPage;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 主店id
|
||||
*/
|
||||
private Long mainShopId;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 分销员等级配置 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("mk_distribution_level_config")
|
||||
public class MkDistributionLevelConfig implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分销配置表id
|
||||
*/
|
||||
private Long distributionConfigId;
|
||||
|
||||
/**
|
||||
* 主店id
|
||||
*/
|
||||
private Long mainShopId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 有效人数
|
||||
*/
|
||||
private Integer inviteCount;
|
||||
|
||||
/**
|
||||
* 消费金额
|
||||
*/
|
||||
private BigDecimal costAmount;
|
||||
|
||||
/**
|
||||
* 一级分销比例
|
||||
*/
|
||||
private BigDecimal levelOneCommission;
|
||||
|
||||
/**
|
||||
* 二级分销比例
|
||||
*/
|
||||
private BigDecimal levelTwoCommission;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.dto.MkDistributionConfigDTO;
|
||||
import com.czg.market.vo.MkDistributionConfigVO;
|
||||
import com.czg.market.vo.MkRedemptionConfigVO;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
|
||||
/**
|
||||
* 分销配置 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
public interface MkDistributionConfigService extends IService<MkDistributionConfig> {
|
||||
MkDistributionConfigVO detail(Long mainShopId);
|
||||
|
||||
Boolean edit(Long shopId, MkDistributionConfigDTO dto);
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.dto.MkDistributionLevelConfigDTO;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 分销员等级配置 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
public interface MkDistributionLevelConfigService extends IService<MkDistributionLevelConfig> {
|
||||
|
||||
void updateByShopId(@Valid List<MkDistributionLevelConfigDTO> levelConfigList, Long mainShopId, Long id);
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.czg.market.vo;
|
||||
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class MkDistributionConfigVO extends MkDistributionConfig implements Serializable {
|
||||
private List<MkDistributionLevelConfig> levelConfigList;
|
||||
|
||||
}
|
||||
|
|
@ -188,7 +188,7 @@ public class UShopUserServiceImpl implements UShopUserService {
|
|||
@Override
|
||||
public ShopUserDetailDTO getInfo(Long shopId, long userId) {
|
||||
Long mainId = shopInfoService.getMainIdByShopId(shopId);
|
||||
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getMainShopId, mainId).eq(ShopUser::getUserId, userId));
|
||||
ShopUser shopUser = shopUserService.getShopUserInfo(mainId, shopId);
|
||||
UserInfo userInfo = userInfoService.getById(userId);
|
||||
if (userInfo == null) {
|
||||
throw new ApiNotPrintException("用户信息不存在");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
|
||||
/**
|
||||
* 分销配置 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
public interface MkDistributionConfigMapper extends BaseMapper<MkDistributionConfig> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
|
||||
/**
|
||||
* 分销员等级配置 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
public interface MkDistributionLevelConfigMapper extends BaseMapper<MkDistributionLevelConfig> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.czg.market.dto.MkDistributionConfigDTO;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
import com.czg.market.service.MkDistributionLevelConfigService;
|
||||
import com.czg.market.vo.MkDistributionConfigVO;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
import com.czg.market.service.MkDistributionConfigService;
|
||||
import com.czg.service.market.mapper.MkDistributionConfigMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 分销配置 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Service
|
||||
public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionConfigMapper, MkDistributionConfig> implements MkDistributionConfigService{
|
||||
|
||||
@Resource
|
||||
private MkDistributionLevelConfigService levelConfigService;
|
||||
|
||||
@Override
|
||||
public MkDistributionConfigVO detail(Long mainShopId) {
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, mainShopId));
|
||||
if (config == null) {
|
||||
config = new MkDistributionConfig().setMainShopId(mainShopId);
|
||||
save(config);
|
||||
config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, mainShopId));
|
||||
}
|
||||
|
||||
MkDistributionConfigVO configVO = BeanUtil.copyProperties(config, MkDistributionConfigVO.class);
|
||||
configVO.setLevelConfigList(levelConfigService.list(new QueryWrapper().eq(MkDistributionLevelConfig::getDistributionConfigId, config.getId())));
|
||||
return configVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean edit(Long shopId, MkDistributionConfigDTO dto) {
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, shopId));
|
||||
BeanUtil.copyProperties(dto, config);
|
||||
|
||||
if (dto.getLevelConfigList() != null) {
|
||||
levelConfigService.updateByShopId(dto.getLevelConfigList(), config.getMainShopId(), config.getId());
|
||||
}
|
||||
|
||||
return updateById(config);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.czg.market.dto.MkDistributionLevelConfigDTO;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
import com.czg.market.service.MkDistributionLevelConfigService;
|
||||
import com.czg.service.market.mapper.MkDistributionLevelConfigMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 分销员等级配置 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Service
|
||||
public class MkDistributionLevelConfigServiceImpl extends ServiceImpl<MkDistributionLevelConfigMapper, MkDistributionLevelConfig> implements MkDistributionLevelConfigService{
|
||||
|
||||
@Override
|
||||
public void updateByShopId(List<MkDistributionLevelConfigDTO> levelConfigList, Long mainShopId, Long id) {
|
||||
if (levelConfigList.isEmpty()) {
|
||||
remove(new QueryWrapper().eq(MkDistributionLevelConfig::getDistributionConfigId, id));
|
||||
return;
|
||||
}
|
||||
|
||||
levelConfigList.forEach(item -> {
|
||||
MkDistributionLevelConfig config = BeanUtil.copyProperties(item, MkDistributionLevelConfig.class);
|
||||
config.setDistributionConfigId(id);
|
||||
config.setMainShopId(mainShopId);
|
||||
saveOrUpdate(config);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -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.MkDistributionConfigMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.MkDistributionLevelConfigMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue