第一次提交
This commit is contained in:
13
src/main/java/com/dd/admin/AdminApplication.java
Normal file
13
src/main/java/com/dd/admin/AdminApplication.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.dd.admin;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class AdminApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(AdminApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,95 @@
|
||||
package com.dd.admin.business.card.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.dd.admin.business.card.domain.CardVo;
|
||||
import com.dd.admin.business.card.domain.CardDto;
|
||||
import com.dd.admin.business.card.service.CardService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Api(tags = "")
|
||||
@RestController
|
||||
public class CardController {
|
||||
|
||||
@Autowired
|
||||
CardService cardService;
|
||||
|
||||
@ApiOperation(value = "-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/card/page")
|
||||
@OperLog(operModule = "获取卡项列表",operType = OperType.QUERY,operDesc = "获取卡项列表")
|
||||
public ResultBean<IPage<CardVo>> page(CardDto cardDto) {
|
||||
cardDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<CardVo> pageInfo = cardService.selectCardPage(cardDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/card/list")
|
||||
public ResultBean<List<CardVo>> list(CardDto cardDto) {
|
||||
cardDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<CardVo> list = cardService.selectCardList(cardDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/card/add")
|
||||
@OperLog(operModule = "添加卡项",operType = OperType.ADD,operDesc = "添加卡项")
|
||||
public ResultBean<Card> add(@RequestBody @Validated CardDto cardDto) {
|
||||
Card card = BeanUtil.copyProperties(cardDto, Card.class);
|
||||
cardService.save(card);
|
||||
return ResultBean.success(card);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/card/{cardId}")
|
||||
public ResultBean<CardVo> get(@PathVariable @NotBlank String cardId) {
|
||||
Card card = cardService.getById(cardId);
|
||||
CardVo cardVo = BeanUtil.copyProperties(card,CardVo.class);
|
||||
return ResultBean.success(cardVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/card/update")
|
||||
public ResultBean<Card> update(@RequestBody @Validated(UpdateGroup.class) CardDto cardDto) {
|
||||
Card card = BeanUtil.copyProperties(cardDto, Card.class);
|
||||
cardService.updateById(card);
|
||||
return ResultBean.success(card);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/card/delete/{cardId}")
|
||||
public ResultBean<Card> delete(@PathVariable @NotBlank String cardId) {
|
||||
Boolean b = cardService.removeById(cardId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
94
src/main/java/com/dd/admin/business/card/domain/CardDto.java
Normal file
94
src/main/java/com/dd/admin/business/card/domain/CardDto.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.dd.admin.business.card.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="接收对象")
|
||||
public class CardDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
@NotBlank(message = "id不能为空",groups = UpdateGroup.class)
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "卡编号")
|
||||
private BigDecimal cardNo;
|
||||
|
||||
@ApiModelProperty(value = "预设开卡金")
|
||||
private BigDecimal cardAmount;
|
||||
|
||||
@ApiModelProperty(value = "预设赠送金")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "最低开卡金额")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "卡折扣")
|
||||
private BigDecimal cardDiscount;
|
||||
|
||||
@ApiModelProperty(value = "卡提成")
|
||||
private BigDecimal cardPushPercent;
|
||||
|
||||
@ApiModelProperty(value = "工本费用")
|
||||
private String todos;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "搜索关键字")
|
||||
private String keyword;
|
||||
}
|
89
src/main/java/com/dd/admin/business/card/domain/CardVo.java
Normal file
89
src/main/java/com/dd/admin/business/card/domain/CardVo.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package com.dd.admin.business.card.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="返回对象")
|
||||
public class CardVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "卡编号")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "预设开卡金")
|
||||
private BigDecimal cardAmount;
|
||||
|
||||
@ApiModelProperty(value = "预设赠送金")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "最低开卡金额")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "卡折扣")
|
||||
private BigDecimal cardDiscount;
|
||||
|
||||
@ApiModelProperty(value = "卡提成")
|
||||
private BigDecimal cardPushPercent;
|
||||
|
||||
@ApiModelProperty(value = "工本费用")
|
||||
private BigDecimal todos;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
|
||||
}
|
112
src/main/java/com/dd/admin/business/card/entity/Card.java
Normal file
112
src/main/java/com/dd/admin/business/card/entity/Card.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package com.dd.admin.business.card.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_card")
|
||||
@ApiModel(value="Card对象", description="")
|
||||
public class Card implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
@TableId(value = "CARD_ID", type = IdType.ASSIGN_UUID)
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
@TableField("CARD_NAME")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "卡编号")
|
||||
@TableField("CARD_NO")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "预设开卡金")
|
||||
@TableField("CARD_AMOUNT")
|
||||
private BigDecimal cardAmount;
|
||||
|
||||
@ApiModelProperty(value = "预设赠送金")
|
||||
@TableField("GIVE_AMOUNT")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "最低开卡金额")
|
||||
@TableField("BUILD_CARD_AMOUNT")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "卡折扣")
|
||||
@TableField("CARD_DISCOUNT")
|
||||
private BigDecimal cardDiscount;
|
||||
|
||||
@ApiModelProperty(value = "卡提成")
|
||||
@TableField("CARD_PUSH_PERCENT")
|
||||
private BigDecimal cardPushPercent;
|
||||
|
||||
@ApiModelProperty(value = "工本费用")
|
||||
@TableField("TODOS")
|
||||
private BigDecimal todos;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
@TableField("CARD_STATUS")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.card.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.card.domain.CardVo;
|
||||
import com.dd.admin.business.card.domain.CardDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Mapper
|
||||
public interface CardMapper extends BaseMapper<Card> {
|
||||
|
||||
IPage<CardVo> selectCardPage(Page<CardVo> page, @Param("cardDto") CardDto cardDto);
|
||||
|
||||
List<CardVo> selectCardList(@Param("cardDto") CardDto cardDto);
|
||||
}
|
@@ -0,0 +1,55 @@
|
||||
<?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.dd.admin.business.card.mapper.CardMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.card.entity.Card">
|
||||
<id column="CARD_ID" property="cardId" />
|
||||
<result column="CARD_NAME" property="cardName" />
|
||||
<result column="CARD_NO" property="cardNo" />
|
||||
<result column="CARD_AMOUNT" property="cardAmount" />
|
||||
<result column="GIVE_AMOUNT" property="giveAmount" />
|
||||
<result column="BUILD_CARD_AMOUNT" property="buildCardAmount" />
|
||||
<result column="CARD_DISCOUNT" property="cardDiscount" />
|
||||
<result column="CARD_PUSH_PERCENT" property="cardPushPercent" />
|
||||
<result column="TODOS" property="todos" />
|
||||
<result column="CARD_STATUS" property="cardStatus" />
|
||||
<result column="DELETED" property="deleted" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
CARD_ID, CARD_NAME, CARD_NO, CARD_AMOUNT, GIVE_AMOUNT, BUILD_CARD_AMOUNT, CARD_DISCOUNT, CARD_PUSH_PERCENT, TODOS, CARD_STATUS, DELETED, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID
|
||||
</sql>
|
||||
|
||||
<select id="selectCardPage" resultType="com.dd.admin.business.card.domain.CardVo">
|
||||
select
|
||||
*
|
||||
from business_card where DELETED = 0
|
||||
<if test="cardDto.shopId != null and cardDto.shopId != ''">
|
||||
and shop_id = #{cardDto.shopId}
|
||||
</if>
|
||||
<if test="cardDto.keyword != null and cardDto.keyword != ''">
|
||||
and CARD_NAME like CONCAT('%', #{cardDto.keyword}, '%')
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectCardList" resultType="com.dd.admin.business.card.domain.CardVo">
|
||||
select
|
||||
*
|
||||
from business_card where DELETED = 0
|
||||
<if test="cardDto.shopId != null and cardDto.shopId != ''">
|
||||
and shop_id = #{cardDto.shopId}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,26 @@
|
||||
package com.dd.admin.business.card.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.card.domain.CardVo;
|
||||
import com.dd.admin.business.card.domain.CardDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
public interface CardService extends IService<Card> {
|
||||
|
||||
//-分页列表
|
||||
IPage<CardVo> selectCardPage(CardDto cardDto);
|
||||
|
||||
//-列表
|
||||
List<CardVo> selectCardList(CardDto cardDto);
|
||||
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package com.dd.admin.business.card.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.dd.admin.business.card.mapper.CardMapper;
|
||||
import com.dd.admin.business.card.service.CardService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.card.domain.CardVo;
|
||||
import com.dd.admin.business.card.domain.CardDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-17
|
||||
*/
|
||||
@Service
|
||||
public class CardServiceImpl extends ServiceImpl<CardMapper, Card> implements CardService {
|
||||
|
||||
@Override
|
||||
public IPage<CardVo> selectCardPage(CardDto cardDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectCardPage(page,cardDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CardVo> selectCardList(CardDto cardDto) {
|
||||
return baseMapper.selectCardList(cardDto);
|
||||
}
|
||||
}
|
@@ -0,0 +1,95 @@
|
||||
package com.dd.admin.business.category.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.category.entity.Category;
|
||||
import com.dd.admin.business.category.domain.CategoryVo;
|
||||
import com.dd.admin.business.category.domain.CategoryDto;
|
||||
import com.dd.admin.business.category.service.CategoryService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Api(tags = "分类")
|
||||
@RestController
|
||||
public class CategoryController {
|
||||
|
||||
@Autowired
|
||||
CategoryService categoryService;
|
||||
|
||||
@ApiOperation(value = "分类-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/category/page")
|
||||
@OperLog(operModule = "获取分页列表",operType = OperType.QUERY,operDesc = "获取分页列表")
|
||||
public ResultBean<IPage<CategoryVo>> page(CategoryDto categoryDto) {
|
||||
categoryDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<CategoryVo> pageInfo = categoryService.selectCategoryPage(categoryDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分类-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/category/list")
|
||||
public ResultBean<List<CategoryVo>> list(CategoryDto categoryDto) {
|
||||
categoryDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<CategoryVo> list = categoryService.selectCategoryList(categoryDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分类-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/category/add")
|
||||
@OperLog(operModule = "添加分类",operType = OperType.ADD,operDesc = "添加分类")
|
||||
public ResultBean<Category> add(@RequestBody @Validated CategoryDto categoryDto) {
|
||||
Category category = BeanUtil.copyProperties(categoryDto, Category.class);
|
||||
categoryService.save(category);
|
||||
return ResultBean.success(category);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分类-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/category/{categoryId}")
|
||||
public ResultBean<CategoryVo> get(@PathVariable @NotBlank String categoryId) {
|
||||
Category category = categoryService.getById(categoryId);
|
||||
CategoryVo categoryVo = BeanUtil.copyProperties(category,CategoryVo.class);
|
||||
return ResultBean.success(categoryVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分类-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/category/update")
|
||||
public ResultBean<Category> update(@RequestBody @Validated(UpdateGroup.class) CategoryDto categoryDto) {
|
||||
Category category = BeanUtil.copyProperties(categoryDto, Category.class);
|
||||
categoryService.updateById(category);
|
||||
return ResultBean.success(category);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分类-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/category/delete/{categoryId}")
|
||||
public ResultBean<Category> delete(@PathVariable @NotBlank String categoryId) {
|
||||
Boolean b = categoryService.removeById(categoryId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,68 @@
|
||||
package com.dd.admin.business.category.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="分类接收对象")
|
||||
public class CategoryDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
@NotBlank(message = "分类id不能为空",groups = UpdateGroup.class)
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1禁用")
|
||||
private Integer categoryStatus;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "搜索关键字")
|
||||
private String keyword;
|
||||
}
|
@@ -0,0 +1,63 @@
|
||||
package com.dd.admin.business.category.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="分类返回对象")
|
||||
public class CategoryVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1禁用")
|
||||
private Integer categoryStatus;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,77 @@
|
||||
package com.dd.admin.business.category.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_category")
|
||||
@ApiModel(value="Category对象", description="分类")
|
||||
public class Category implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
@TableId(value = "CATEGORY_ID", type = IdType.ASSIGN_UUID)
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
@TableField("CATEGORY_NAME")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1禁用")
|
||||
@TableField("CATEGORY_STATUS")
|
||||
private Integer categoryStatus;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.category.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.category.entity.Category;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.category.domain.CategoryVo;
|
||||
import com.dd.admin.business.category.domain.CategoryDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface CategoryMapper extends BaseMapper<Category> {
|
||||
|
||||
IPage<CategoryVo> selectCategoryPage(Page<CategoryVo> page, @Param("categoryDto") CategoryDto categoryDto);
|
||||
|
||||
List<CategoryVo> selectCategoryList(@Param("categoryDto") CategoryDto categoryDto);
|
||||
}
|
@@ -0,0 +1,55 @@
|
||||
<?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.dd.admin.business.category.mapper.CategoryMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.category.entity.Category">
|
||||
<id column="CATEGORY_ID" property="categoryId" />
|
||||
<result column="CATEGORY_NAME" property="categoryName" />
|
||||
<result column="CATEGORY_STATUS" property="categoryStatus" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
CATEGORY_ID, CATEGORY_NAME, CATEGORY_STATUS, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID
|
||||
</sql>
|
||||
|
||||
<select id="selectCategoryPage" resultType="com.dd.admin.business.category.domain.CategoryVo">
|
||||
select
|
||||
*
|
||||
from business_category where 1 = 1
|
||||
<if test="categoryDto.keyword != null and categoryDto.keyword != ''">
|
||||
and CATEGORY_NAME like CONCAT('%', #{categoryDto.keyword}, '%')
|
||||
</if>
|
||||
|
||||
<if test="categoryDto.shopId != null and categoryDto.shopId != ''">
|
||||
and shop_id = #{categoryDto.shopId}
|
||||
</if>
|
||||
|
||||
<if test="categoryDto.categoryStatus != null ">
|
||||
and CATEGORY_STATUS = #{categoryDto.categoryStatus}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectCategoryList" resultType="com.dd.admin.business.category.domain.CategoryVo">
|
||||
select
|
||||
*
|
||||
from business_category where 1 = 1
|
||||
<if test="categoryDto.shopId != null and categoryDto.shopId != ''">
|
||||
and shop_id = #{categoryDto.shopId}
|
||||
</if>
|
||||
<if test="categoryDto.categoryStatus != null ">
|
||||
and CATEGORY_STATUS = #{categoryDto.categoryStatus}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,26 @@
|
||||
package com.dd.admin.business.category.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.category.entity.Category;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.category.domain.CategoryVo;
|
||||
import com.dd.admin.business.category.domain.CategoryDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
public interface CategoryService extends IService<Category> {
|
||||
|
||||
//分类-分页列表
|
||||
IPage<CategoryVo> selectCategoryPage(CategoryDto categoryDto);
|
||||
|
||||
//分类-列表
|
||||
List<CategoryVo> selectCategoryList(CategoryDto categoryDto);
|
||||
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package com.dd.admin.business.category.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.category.entity.Category;
|
||||
import com.dd.admin.business.category.mapper.CategoryMapper;
|
||||
import com.dd.admin.business.category.service.CategoryService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.category.domain.CategoryVo;
|
||||
import com.dd.admin.business.category.domain.CategoryDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分类 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Service
|
||||
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
|
||||
|
||||
@Override
|
||||
public IPage<CategoryVo> selectCategoryPage(CategoryDto categoryDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectCategoryPage(page,categoryDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CategoryVo> selectCategoryList(CategoryDto categoryDto) {
|
||||
return baseMapper.selectCategoryList(categoryDto);
|
||||
}
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
package com.dd.admin.business.detailServer.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerVo;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerDto;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Api(tags = "订单详单服务人员")
|
||||
@RestController
|
||||
public class SellDetailServerController {
|
||||
|
||||
@Autowired
|
||||
SellDetailServerService detailServerService;
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/detailServer/page")
|
||||
public ResultBean<IPage<SellDetailServerVo>> page(SellDetailServerDto detailServerDto) {
|
||||
IPage<SellDetailServerVo> pageInfo = detailServerService.selectSellDetailServerPage(detailServerDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/detailServer/list")
|
||||
public ResultBean<List<SellDetailServerVo>> list(SellDetailServerDto detailServerDto) {
|
||||
List<SellDetailServerVo> list = detailServerService.selectSellDetailServerList(detailServerDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/detailServer/add")
|
||||
public ResultBean<SellDetailServer> add(@RequestBody @Validated SellDetailServerDto detailServerDto) {
|
||||
SellDetailServer detailServer = BeanUtil.copyProperties(detailServerDto, SellDetailServer.class);
|
||||
detailServerService.save(detailServer);
|
||||
return ResultBean.success(detailServer);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/detailServer/{detailServerId}")
|
||||
public ResultBean<SellDetailServerVo> get(@PathVariable @NotBlank String detailServerId) {
|
||||
SellDetailServer detailServer = detailServerService.getById(detailServerId);
|
||||
SellDetailServerVo detailServerVo = BeanUtil.copyProperties(detailServer,SellDetailServerVo.class);
|
||||
return ResultBean.success(detailServerVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/detailServer/update")
|
||||
public ResultBean<SellDetailServer> update(@RequestBody @Validated(UpdateGroup.class) SellDetailServerDto detailServerDto) {
|
||||
SellDetailServer detailServer = BeanUtil.copyProperties(detailServerDto, SellDetailServer.class);
|
||||
detailServerService.updateById(detailServer);
|
||||
return ResultBean.success(detailServer);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详单服务人员-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/detailServer/delete/{detailServerId}")
|
||||
public ResultBean<SellDetailServer> delete(@PathVariable @NotBlank String detailServerId) {
|
||||
Boolean b = detailServerService.removeById(detailServerId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,83 @@
|
||||
package com.dd.admin.business.detailServer.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单详单服务人员接收对象")
|
||||
public class SellDetailServerDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "详单对应服务人员记录id")
|
||||
@NotBlank(message = "订单详单服务人员id不能为空",groups = UpdateGroup.class)
|
||||
private String detailServerId;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "详单id")
|
||||
private String sellDetailId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
private String serverId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
private String serverName;
|
||||
|
||||
@ApiModelProperty(value = "提成")
|
||||
private BigDecimal serverPushMoney;
|
||||
|
||||
@ApiModelProperty(value = "业绩")
|
||||
private BigDecimal serverGrade;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,79 @@
|
||||
package com.dd.admin.business.detailServer.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单详单服务人员返回对象")
|
||||
public class SellDetailServerVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "详单对应服务人员记录id")
|
||||
private String detailServerId;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "详单id")
|
||||
private String sellDetailId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
private String serverId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
private String serverName;
|
||||
|
||||
@ApiModelProperty(value = "提成")
|
||||
private BigDecimal serverPushMoney;
|
||||
|
||||
@ApiModelProperty(value = "业绩")
|
||||
private BigDecimal serverGrade;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,98 @@
|
||||
package com.dd.admin.business.detailServer.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_sell_detail_server")
|
||||
@ApiModel(value="SellDetailServer对象", description="订单详单服务人员")
|
||||
public class SellDetailServer implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "详单对应服务人员记录id")
|
||||
@TableId(value = "DETAIL_SERVER_ID", type = IdType.ASSIGN_UUID)
|
||||
private String detailServerId;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
@TableField("SELL_ID")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "详单id")
|
||||
@TableField("SELL_DETAIL_ID")
|
||||
private String sellDetailId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
@TableField("SERVER_ID")
|
||||
private String serverId;
|
||||
|
||||
@ApiModelProperty(value = "服务人员")
|
||||
@TableField("SERVER_NAME")
|
||||
private String serverName;
|
||||
|
||||
@ApiModelProperty(value = "提成")
|
||||
@TableField("SERVER_PUSH_MONEY")
|
||||
private BigDecimal serverPushMoney;
|
||||
|
||||
@ApiModelProperty(value = "业绩")
|
||||
@TableField("SERVER_GRADE")
|
||||
private BigDecimal serverGrade;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
@TableField("REMARK")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.detailServer.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerVo;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Mapper
|
||||
public interface SellDetailServerMapper extends BaseMapper<SellDetailServer> {
|
||||
|
||||
IPage<SellDetailServerVo> selectSellDetailServerPage(Page<SellDetailServerVo> page, @Param("detailServerDto") SellDetailServerDto detailServerDto);
|
||||
|
||||
List<SellDetailServerVo> selectSellDetailServerList(@Param("detailServerDto") SellDetailServerDto detailServerDto);
|
||||
}
|
@@ -0,0 +1,41 @@
|
||||
<?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.dd.admin.business.detailServer.mapper.SellDetailServerMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.detailServer.entity.SellDetailServer">
|
||||
<id column="DETAIL_SERVER_ID" property="detailServerId" />
|
||||
<result column="SELL_ID" property="sellId" />
|
||||
<result column="SELL_DETAIL_ID" property="sellDetailId" />
|
||||
<result column="SERVER_ID" property="serverId" />
|
||||
<result column="SERVER_NAME" property="serverName" />
|
||||
<result column="SERVER_PUSH_MONEY" property="serverPushMoney" />
|
||||
<result column="SERVER_GRADE" property="serverGrade" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
<result column="REMARK" property="remark" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
DETAIL_SERVER_ID, SELL_ID, SELL_DETAIL_ID, SERVER_ID, SERVER_NAME, SERVER_PUSH_MONEY, SERVER_GRADE, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID, REMARK
|
||||
</sql>
|
||||
|
||||
<select id="selectSellDetailServerPage" resultType="com.dd.admin.business.detailServer.domain.SellDetailServerVo">
|
||||
select
|
||||
*
|
||||
from business_sell_detail_server where 1 = 1
|
||||
</select>
|
||||
|
||||
<select id="selectSellDetailServerList" resultType="com.dd.admin.business.detailServer.domain.SellDetailServerVo">
|
||||
select
|
||||
*
|
||||
from business_sell_detail_server where 1 = 1
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,31 @@
|
||||
package com.dd.admin.business.detailServer.service;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerVo;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerDto;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
public interface SellDetailServerService extends IService<SellDetailServer> {
|
||||
|
||||
//订单详单服务人员-分页列表
|
||||
IPage<SellDetailServerVo> selectSellDetailServerPage(SellDetailServerDto detailServerDto);
|
||||
|
||||
//订单详单服务人员-列表
|
||||
List<SellDetailServerVo> selectSellDetailServerList(SellDetailServerDto detailServerDto);
|
||||
|
||||
List<SellDetailServer> selectSellDetailServerListBySellDetailIds(List<String> sellDetailIds);
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
package com.dd.admin.business.detailServer.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.mapper.SellDetailServerMapper;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerVo;
|
||||
import com.dd.admin.business.detailServer.domain.SellDetailServerDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详单服务人员 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-11-28
|
||||
*/
|
||||
@Service
|
||||
public class SellDetailServerServiceImpl extends ServiceImpl<SellDetailServerMapper, SellDetailServer> implements SellDetailServerService {
|
||||
|
||||
@Override
|
||||
public IPage<SellDetailServerVo> selectSellDetailServerPage(SellDetailServerDto detailServerDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectSellDetailServerPage(page,detailServerDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SellDetailServerVo> selectSellDetailServerList(SellDetailServerDto detailServerDto) {
|
||||
return baseMapper.selectSellDetailServerList(detailServerDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SellDetailServer> selectSellDetailServerListBySellDetailIds(List<String> sellDetailIds) {
|
||||
LambdaQueryWrapper<SellDetailServer> selldetailQueryWrapper = new LambdaQueryWrapper<>();
|
||||
if(CollectionUtil.isNotEmpty(sellDetailIds)){
|
||||
selldetailQueryWrapper.in(SellDetailServer::getSellDetailId, sellDetailIds);
|
||||
}
|
||||
List<SellDetailServer> sellDetailList = this.list(selldetailQueryWrapper);
|
||||
return sellDetailList;
|
||||
}
|
||||
}
|
@@ -0,0 +1,104 @@
|
||||
package com.dd.admin.business.file.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.file.entity.File;
|
||||
import com.dd.admin.business.file.domain.FileVo;
|
||||
import com.dd.admin.business.file.domain.FileDto;
|
||||
import com.dd.admin.business.file.service.FileService;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Api(tags = "文件")
|
||||
@RestController
|
||||
public class FileController {
|
||||
|
||||
@Autowired
|
||||
FileService fileService;
|
||||
|
||||
@ApiOperation(value = "文件-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/file/page")
|
||||
public ResultBean<IPage<FileVo>> page(FileDto fileDto) {
|
||||
IPage<FileVo> pageInfo = fileService.selectFilePage(fileDto);
|
||||
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/file/list")
|
||||
public ResultBean<List<FileVo>> list(FileDto fileDto) {
|
||||
List<FileVo> list = fileService.selectFileList(fileDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/file/add")
|
||||
public ResultBean<File> add(@RequestBody @Validated FileDto fileDto) {
|
||||
File file = BeanUtil.copyProperties(fileDto, File.class);
|
||||
fileService.save(file);
|
||||
return ResultBean.success(file);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/file/{fileId}")
|
||||
public ResultBean<FileVo> get(@PathVariable @NotBlank String fileId) {
|
||||
File file = fileService.getById(fileId);
|
||||
FileVo fileVo = BeanUtil.copyProperties(file,FileVo.class);
|
||||
return ResultBean.success(fileVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/file/update")
|
||||
public ResultBean<File> update(@RequestBody @Validated(UpdateGroup.class) FileDto fileDto) {
|
||||
File file = BeanUtil.copyProperties(fileDto, File.class);
|
||||
fileService.updateById(file);
|
||||
return ResultBean.success(file);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/file/delete/{fileId}")
|
||||
public ResultBean<File> delete(@PathVariable @NotBlank String fileId) {
|
||||
Boolean b = fileService.removeById(fileId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件-上传")
|
||||
@PostMapping("/upload")
|
||||
@ResponseBody
|
||||
public ResultBean layuiUpload(@RequestPart("file") MultipartFile file, String fileSavePath) {
|
||||
FileVo uploadResult = fileService.uploadFile(file,fileSavePath);
|
||||
String fileId = uploadResult.getFileId();
|
||||
String filePath = uploadResult.getFileSavePath();
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("fileId", fileId);
|
||||
map.put("filePath",filePath);
|
||||
return ResultBean.success(map);
|
||||
}
|
||||
}
|
67
src/main/java/com/dd/admin/business/file/domain/FileDto.java
Normal file
67
src/main/java/com/dd/admin/business/file/domain/FileDto.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package com.dd.admin.business.file.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="文件接收对象")
|
||||
public class FileDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "文件id")
|
||||
@NotBlank(message = "文件id不能为空",groups = UpdateGroup.class)
|
||||
private String fileId;
|
||||
|
||||
@ApiModelProperty(value = "上级id")
|
||||
private String parentId;
|
||||
|
||||
@ApiModelProperty(value = "文件仓库(oss仓库)")
|
||||
private String fileBucket;
|
||||
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty(value = "文件后缀")
|
||||
private String fileSuffix;
|
||||
|
||||
@ApiModelProperty(value = "文件大小kb")
|
||||
private Long fileSizeKb;
|
||||
|
||||
@ApiModelProperty(value = "文件唯一标识id")
|
||||
private String finalName;
|
||||
|
||||
@ApiModelProperty(value = "存储路径")
|
||||
private String filePath;
|
||||
|
||||
@ApiModelProperty(value = "0文件夹 1文件")
|
||||
private Integer fileType;
|
||||
|
||||
@ApiModelProperty(value = "存放的系统路径")
|
||||
private String fileSysPath;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
64
src/main/java/com/dd/admin/business/file/domain/FileVo.java
Normal file
64
src/main/java/com/dd/admin/business/file/domain/FileVo.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package com.dd.admin.business.file.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="文件返回对象")
|
||||
public class FileVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "文件id")
|
||||
private String fileId;
|
||||
|
||||
@ApiModelProperty(value = "上级id")
|
||||
private String parentId;
|
||||
|
||||
@ApiModelProperty(value = "文件仓库(oss仓库)")
|
||||
private String fileBucket;
|
||||
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty(value = "文件后缀")
|
||||
private String fileSuffix;
|
||||
|
||||
@ApiModelProperty(value = "文件大小kb")
|
||||
private Long fileSizeKb;
|
||||
|
||||
@ApiModelProperty(value = "文件唯一标识id")
|
||||
private String finalName;
|
||||
|
||||
@ApiModelProperty(value = "存储路径")
|
||||
private String filePath;
|
||||
|
||||
@ApiModelProperty(value = "0文件夹 1文件")
|
||||
private Integer fileType;
|
||||
|
||||
@ApiModelProperty(value = "存放的系统路径")
|
||||
private String fileSysPath;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
private String originalFilename;
|
||||
private String fileSavePath;
|
||||
}
|
77
src/main/java/com/dd/admin/business/file/entity/File.java
Normal file
77
src/main/java/com/dd/admin/business/file/entity/File.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package com.dd.admin.business.file.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_file")
|
||||
@ApiModel(value="File对象", description="文件")
|
||||
public class File implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "文件id")
|
||||
@TableId(value = "FILE_ID", type = IdType.ASSIGN_UUID)
|
||||
private String fileId;
|
||||
|
||||
@ApiModelProperty(value = "上级id")
|
||||
@TableField("PARENT_ID")
|
||||
private String parentId;
|
||||
|
||||
@ApiModelProperty(value = "文件仓库(oss仓库)")
|
||||
@TableField("FILE_BUCKET")
|
||||
private String fileBucket;
|
||||
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
@TableField("FILE_NAME")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty(value = "文件后缀")
|
||||
@TableField("FILE_SUFFIX")
|
||||
private String fileSuffix;
|
||||
|
||||
@ApiModelProperty(value = "文件大小kb")
|
||||
@TableField("FILE_SIZE_KB")
|
||||
private Long fileSizeKb;
|
||||
|
||||
@ApiModelProperty(value = "文件唯一标识id")
|
||||
@TableField("FINAL_NAME")
|
||||
private String finalName;
|
||||
|
||||
@ApiModelProperty(value = "存储路径")
|
||||
@TableField("FILE_PATH")
|
||||
private String filePath;
|
||||
|
||||
@ApiModelProperty(value = "0文件夹 1文件")
|
||||
@TableField("FILE_TYPE")
|
||||
private Integer fileType;
|
||||
|
||||
@ApiModelProperty(value = "存放的系统路径")
|
||||
@TableField("FILE_SYS_PATH")
|
||||
private String fileSysPath;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME")
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.file.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.file.entity.File;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.file.domain.FileVo;
|
||||
import com.dd.admin.business.file.domain.FileDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface FileMapper extends BaseMapper<File> {
|
||||
|
||||
IPage<FileVo> selectFilePage(Page<FileVo> page, @Param("fileDto") FileDto fileDto);
|
||||
|
||||
List<FileVo> selectFileList(@Param("fileDto") FileDto fileDto);
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
<?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.dd.admin.business.file.mapper.FileMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.file.entity.File">
|
||||
<id column="FILE_ID" property="fileId" />
|
||||
<result column="PARENT_ID" property="parentId" />
|
||||
<result column="FILE_BUCKET" property="fileBucket" />
|
||||
<result column="FILE_NAME" property="fileName" />
|
||||
<result column="FILE_SUFFIX" property="fileSuffix" />
|
||||
<result column="FILE_SIZE_KB" property="fileSizeKb" />
|
||||
<result column="FINAL_NAME" property="finalName" />
|
||||
<result column="FILE_PATH" property="filePath" />
|
||||
<result column="FILE_TYPE" property="fileType" />
|
||||
<result column="FILE_SYS_PATH" property="fileSysPath" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
FILE_ID, PARENT_ID, FILE_BUCKET, FILE_NAME, FILE_SUFFIX, FILE_SIZE_KB, FINAL_NAME, FILE_PATH, FILE_TYPE, FILE_SYS_PATH, CREATE_TIME
|
||||
</sql>
|
||||
|
||||
<select id="selectFilePage" resultType="com.dd.admin.business.file.domain.FileVo">
|
||||
select
|
||||
*
|
||||
from business_file where 1 = 1
|
||||
</select>
|
||||
|
||||
<select id="selectFileList" resultType="com.dd.admin.business.file.domain.FileVo">
|
||||
select
|
||||
*
|
||||
from business_file where 1 = 1
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,33 @@
|
||||
package com.dd.admin.business.file.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.file.entity.File;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.file.domain.FileVo;
|
||||
import com.dd.admin.business.file.domain.FileDto;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
public interface FileService extends IService<File> {
|
||||
|
||||
//文件-分页列表
|
||||
IPage<FileVo> selectFilePage(FileDto fileDto);
|
||||
|
||||
//文件-列表
|
||||
List<FileVo> selectFileList(FileDto fileDto);
|
||||
|
||||
//文件-上传
|
||||
public FileVo uploadFile(MultipartFile file, String fileSavePath);
|
||||
|
||||
//传入文件id获取文件真实地址
|
||||
public String getFileAuthUrl(String fileId);
|
||||
}
|
@@ -0,0 +1,139 @@
|
||||
package com.dd.admin.business.file.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.file.entity.File;
|
||||
import com.dd.admin.business.file.mapper.FileMapper;
|
||||
import com.dd.admin.business.file.service.FileService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.dd.admin.common.utils.ToolUtil;
|
||||
import org.apache.tomcat.jni.FileInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.file.domain.FileVo;
|
||||
import com.dd.admin.business.file.domain.FileDto;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Service
|
||||
public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements FileService {
|
||||
|
||||
@Value("${dd.uploadPath}")
|
||||
private String uploadPath;
|
||||
|
||||
@Override
|
||||
public IPage<FileVo> selectFilePage(FileDto fileDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectFilePage(page,fileDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FileVo> selectFileList(FileDto fileDto) {
|
||||
return baseMapper.selectFileList(fileDto);
|
||||
}
|
||||
|
||||
public String getSysUploadPath(){
|
||||
java.io.File filepath = new java.io.File(uploadPath);
|
||||
//该目录不存在 则创建
|
||||
if (!filepath.exists()) {
|
||||
boolean mkdirs = filepath.mkdirs();
|
||||
}
|
||||
return uploadPath;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FileVo uploadFile(MultipartFile file, String fileSavePath) {
|
||||
//需要返回的对象
|
||||
FileVo fileVo = new FileVo();
|
||||
|
||||
//生成文件的唯一id
|
||||
String fileId = IdWorker.get32UUID();
|
||||
fileVo.setFileId(fileId);
|
||||
|
||||
//获取文件后缀
|
||||
String fileSuffix = ToolUtil.getFileSuffix(file.getOriginalFilename());
|
||||
fileVo.setFileSuffix(fileSuffix);
|
||||
|
||||
//获取文件原始名称
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
fileVo.setOriginalFilename(originalFilename);
|
||||
|
||||
//生成文件的最终名称
|
||||
String finalName = fileId + "." + ToolUtil.getFileSuffix(originalFilename);
|
||||
fileVo.setFinalName(finalName);
|
||||
fileVo.setFileSavePath(fileSavePath + finalName);
|
||||
|
||||
String sysUploadPath = getSysUploadPath();
|
||||
|
||||
String newFileSavePath = "";
|
||||
|
||||
//判断有没有结尾符,没有得加上
|
||||
if (!fileSavePath.endsWith(java.io.File.separator)) {
|
||||
newFileSavePath = fileSavePath + java.io.File.separator;
|
||||
}
|
||||
|
||||
try {
|
||||
java.io.File filepath = new java.io.File(sysUploadPath + newFileSavePath );
|
||||
//该目录不存在 则创建
|
||||
if (!filepath.exists()) {
|
||||
boolean mkdirs = filepath.mkdirs();
|
||||
}
|
||||
System.out.println(filepath.getAbsolutePath());
|
||||
System.out.println(filepath.getPath());
|
||||
|
||||
//保存文件到指定目录
|
||||
java.io.File newFile = new java.io.File(sysUploadPath + newFileSavePath + finalName);
|
||||
file.transferTo(newFile);
|
||||
|
||||
File fileInfo = new File();
|
||||
//保存文件信息
|
||||
fileInfo.setFileId(fileId);
|
||||
fileInfo.setFileName(originalFilename);
|
||||
fileInfo.setFileSuffix(fileSuffix);
|
||||
|
||||
fileInfo.setFilePath("/upload/" + fileSavePath + "/" + finalName);
|
||||
|
||||
fileVo.setFileSavePath(fileInfo.getFilePath());
|
||||
fileInfo.setFinalName(finalName);
|
||||
|
||||
//计算文件大小kb
|
||||
long kb = new BigDecimal(file.getSize())
|
||||
.divide(BigDecimal.valueOf(1024))
|
||||
.setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
|
||||
fileInfo.setFileSizeKb(kb);
|
||||
fileInfo.setFileSysPath(newFile.getAbsolutePath());
|
||||
|
||||
save(fileInfo);
|
||||
} catch (Exception e) {
|
||||
log.error("上传文件错误!", e);
|
||||
throw new ApiException("上传文件错误!");
|
||||
}
|
||||
return fileVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFileAuthUrl(String fileId) {
|
||||
File file = getById(fileId);
|
||||
if(file!=null){
|
||||
return file.getFilePath();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,118 @@
|
||||
package com.dd.admin.business.member.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.member.domain.MemberDto;
|
||||
import com.dd.admin.business.member.service.MemberService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.MEMBER_ALREADY_BUILD;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Api(tags = "会员")
|
||||
@RestController
|
||||
public class MemberController {
|
||||
|
||||
@Autowired
|
||||
MemberService memberService;
|
||||
|
||||
@ApiOperation(value = "会员-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/member/page")
|
||||
public ResultBean<IPage<MemberVo>> page(MemberDto memberDto) {
|
||||
memberDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<MemberVo> pageInfo = memberService.selectMemberPage(memberDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/member/list")
|
||||
public ResultBean<List<MemberVo>> list(MemberDto memberDto) {
|
||||
memberDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<MemberVo> list = memberService.selectMemberList(memberDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/member/searchList")
|
||||
@OperLog(operModule = "会员查询",operType = OperType.QUERY,operDesc = "会员查询")
|
||||
public ResultBean<List<MemberVo>> searchList(MemberDto memberDto) {
|
||||
memberDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
memberDto.setLimit(10);
|
||||
List<MemberVo> list = memberService.selectMemberList(memberDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/member/add")
|
||||
@OperLog(operModule = "添加会员",operType = OperType.ADD,operDesc = "添加会员")
|
||||
public ResultBean<Member> add(@RequestBody @Validated MemberDto memberDto) {
|
||||
// 先根据手机号查询是否已存在会员
|
||||
LambdaQueryWrapper<Member> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Member::getMemberPhone, memberDto.getMemberPhone());
|
||||
Member existingMembers = memberService.getOne(queryWrapper);
|
||||
if (existingMembers != null) {
|
||||
// 如果存在,则返回错误信息,表示手机号已被注册
|
||||
throw new ApiException(MEMBER_ALREADY_BUILD);
|
||||
}
|
||||
Member member = BeanUtil.copyProperties(memberDto, Member.class);
|
||||
memberService.save(member);
|
||||
return ResultBean.success(member);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/member/{memberId}")
|
||||
public ResultBean<MemberVo> get(@PathVariable @NotBlank String memberId) {
|
||||
Member member = memberService.getById(memberId);
|
||||
MemberVo memberVo = BeanUtil.copyProperties(member,MemberVo.class);
|
||||
return ResultBean.success(memberVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/member/update")
|
||||
public ResultBean<Member> update(@RequestBody @Validated(UpdateGroup.class) MemberDto memberDto) {
|
||||
Member member = BeanUtil.copyProperties(memberDto, Member.class);
|
||||
memberService.updateById(member);
|
||||
return ResultBean.success(member);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/member/delete/{memberId}")
|
||||
public ResultBean<Member> delete(@PathVariable @NotBlank String memberId) {
|
||||
Boolean b = memberService.removeById(memberId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,67 @@
|
||||
package com.dd.admin.business.member.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="会员接收对象")
|
||||
public class MemberDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员表id")
|
||||
@NotBlank(message = "会员id不能为空",groups = UpdateGroup.class)
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员姓名")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "手机号")
|
||||
private String memberPhone;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "消费密码")
|
||||
private String payPassword;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "会员姓名")
|
||||
private String querySearch;
|
||||
|
||||
@ApiModelProperty(value = "条数")
|
||||
private Integer limit;
|
||||
|
||||
@ApiModelProperty(value = "搜索会员关键字")
|
||||
private String keyword;
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
package com.dd.admin.business.member.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="会员返回对象")
|
||||
public class MemberVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员表id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员姓名")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "手机号")
|
||||
private String memberPhone;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "消费密码")
|
||||
private String payPassword;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,67 @@
|
||||
package com.dd.admin.business.member.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_member")
|
||||
@ApiModel(value="Member对象", description="会员")
|
||||
public class Member implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "会员表id")
|
||||
@TableId(value = "MEMBER_ID", type = IdType.ASSIGN_UUID)
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员姓名")
|
||||
@TableField("MEMBER_NAME")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "手机号")
|
||||
@TableField("MEMBER_PHONE")
|
||||
private String memberPhone;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
@TableField("REMARK")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "消费密码")
|
||||
@TableField("PAY_PASSWORD")
|
||||
private String payPassword;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.member.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.member.domain.MemberDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface MemberMapper extends BaseMapper<Member> {
|
||||
|
||||
IPage<MemberVo> selectMemberPage(Page<MemberVo> page, @Param("memberDto") MemberDto memberDto);
|
||||
|
||||
List<MemberVo> selectMemberList(@Param("memberDto") MemberDto memberDto);
|
||||
}
|
@@ -0,0 +1,57 @@
|
||||
<?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.dd.admin.business.member.mapper.MemberMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.member.entity.Member">
|
||||
<id column="MEMBER_ID" property="memberId" />
|
||||
<result column="MEMBER_NAME" property="memberName" />
|
||||
<result column="MEMBER_PHONE" property="memberPhone" />
|
||||
<result column="REMARK" property="remark" />
|
||||
<result column="PAY_PASSWORD" property="payPassword" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
MEMBER_ID, MEMBER_NAME, MEMBER_PHONE, REMARK, PAY_PASSWORD, SHOP_NAME, SHOP_ID, CREATE_TIME
|
||||
</sql>
|
||||
|
||||
<select id="selectMemberPage" resultType="com.dd.admin.business.member.domain.MemberVo">
|
||||
select
|
||||
*
|
||||
from business_member where 1 = 1
|
||||
<if test="memberDto.keyword != null and memberDto.keyword != ''">
|
||||
and (member_name like CONCAT('%', #{memberDto.keyword}, '%')
|
||||
or member_phone like concat('%',#{memberDto.keyword},'%'))
|
||||
</if>
|
||||
|
||||
<if test="memberDto.shopId != null and memberDto.shopId != ''">
|
||||
and shop_id = #{memberDto.shopId}
|
||||
</if>
|
||||
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectMemberList" resultType="com.dd.admin.business.member.domain.MemberVo">
|
||||
select
|
||||
*
|
||||
from business_member where 1 = 1
|
||||
<if test="memberDto.querySearch != null and memberDto.querySearch != ''">
|
||||
and (member_name like CONCAT('%', #{memberDto.querySearch}, '%')
|
||||
or member_phone like concat('%',#{memberDto.querySearch},'%'))
|
||||
</if>
|
||||
|
||||
<if test="memberDto.shopId != null and memberDto.shopId != ''">
|
||||
and shop_id = #{memberDto.shopId}
|
||||
</if>
|
||||
|
||||
order by create_time desc
|
||||
|
||||
<if test="memberDto.limit != null">
|
||||
limit #{memberDto.limit}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,27 @@
|
||||
package com.dd.admin.business.member.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.member.domain.MemberDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
public interface MemberService extends IService<Member> {
|
||||
|
||||
//会员-分页列表
|
||||
IPage<MemberVo> selectMemberPage(MemberDto memberDto);
|
||||
|
||||
//会员-列表
|
||||
List<MemberVo> selectMemberList(MemberDto memberDto);
|
||||
|
||||
Integer selectMemberCount(String shopId);
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package com.dd.admin.business.member.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.dd.admin.business.member.mapper.MemberMapper;
|
||||
import com.dd.admin.business.member.service.MemberService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.member.domain.MemberDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-21
|
||||
*/
|
||||
@Service
|
||||
public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService {
|
||||
|
||||
@Override
|
||||
public IPage<MemberVo> selectMemberPage(MemberDto memberDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectMemberPage(page,memberDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MemberVo> selectMemberList(MemberDto memberDto) {
|
||||
return baseMapper.selectMemberList(memberDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectMemberCount(String shopId) {
|
||||
LambdaQueryWrapper<Member> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Member::getShopId, shopId);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
}
|
@@ -0,0 +1,112 @@
|
||||
package com.dd.admin.business.memberCard.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.dd.admin.business.member.service.MemberService;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardDto;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Api(tags = "会员卡")
|
||||
@RestController
|
||||
public class MemberCardController {
|
||||
|
||||
@Autowired
|
||||
MemberCardService memberCardService;
|
||||
|
||||
@Autowired
|
||||
MemberService memberService;
|
||||
|
||||
@ApiOperation(value = "会员卡-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/memberCard/page")
|
||||
public ResultBean<IPage<MemberCardVo>> page(MemberCardDto memberCardDto) {
|
||||
memberCardDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<MemberCardVo> pageInfo = memberCardService.selectMemberCardPage(memberCardDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/memberCard/list")
|
||||
public ResultBean<List<MemberCardVo>> list(MemberCardDto memberCardDto) {
|
||||
memberCardDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<MemberCardVo> list = memberCardService.selectMemberCardList(memberCardDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/memberCard/searchList")
|
||||
public ResultBean<List<MemberCardVo>> searchList(MemberCardDto memberCardDto) {
|
||||
memberCardDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
memberCardDto.setLimit(10);
|
||||
List<MemberCardVo> list = memberCardService.selectMemberCardList(memberCardDto);
|
||||
list.stream().forEach(memberCardVo -> {
|
||||
Member member = memberService.getById(memberCardVo.getMemberId());
|
||||
MemberVo memberVo = BeanUtil.copyProperties(member, MemberVo.class);
|
||||
memberCardVo.setMember(memberVo);
|
||||
});
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/memberCard/add")
|
||||
public ResultBean<MemberCard> add(@RequestBody @Validated MemberCardDto memberCardDto) {
|
||||
MemberCard memberCard = BeanUtil.copyProperties(memberCardDto, MemberCard.class);
|
||||
memberCardService.save(memberCard);
|
||||
return ResultBean.success(memberCard);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/memberCard/{memberCardId}")
|
||||
public ResultBean<MemberCardVo> get(@PathVariable @NotBlank String memberCardId) {
|
||||
MemberCard memberCard = memberCardService.getById(memberCardId);
|
||||
MemberCardVo memberCardVo = BeanUtil.copyProperties(memberCard,MemberCardVo.class);
|
||||
return ResultBean.success(memberCardVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/memberCard/update")
|
||||
public ResultBean<MemberCard> update(@RequestBody @Validated(UpdateGroup.class) MemberCardDto memberCardDto) {
|
||||
MemberCard memberCard = BeanUtil.copyProperties(memberCardDto, MemberCard.class);
|
||||
memberCardService.updateById(memberCard);
|
||||
return ResultBean.success(memberCard);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "会员卡-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/memberCard/delete/{memberCardId}")
|
||||
public ResultBean<MemberCard> delete(@PathVariable @NotBlank String memberCardId) {
|
||||
Boolean b = memberCardService.removeById(memberCardId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,103 @@
|
||||
package com.dd.admin.business.memberCard.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="会员卡接收对象")
|
||||
public class MemberCardDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
@NotBlank(message = "会员卡id不能为空",groups = UpdateGroup.class)
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "卡项ID")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "卡号")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "卡名称")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "余额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty(value = "赠送金额")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品折扣")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "开卡金额")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
private BigDecimal pushMoney;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "搜索会员卡关键字")
|
||||
private String querySearch;
|
||||
|
||||
@ApiModelProperty(value = "搜索会员卡关键字")
|
||||
private Integer limit;
|
||||
}
|
@@ -0,0 +1,100 @@
|
||||
package com.dd.admin.business.memberCard.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.dd.admin.business.member.domain.MemberVo;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="会员卡返回对象")
|
||||
public class MemberCardVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "卡项ID")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "卡号")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "卡名称")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "余额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty(value = "赠送金额")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品折扣")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "开卡金额")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
private BigDecimal pushMoney;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "会员信息")
|
||||
private MemberVo member;
|
||||
|
||||
}
|
@@ -0,0 +1,121 @@
|
||||
package com.dd.admin.business.memberCard.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_member_card")
|
||||
@ApiModel(value="MemberCard对象", description="会员卡")
|
||||
public class MemberCard implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
@TableId(value = "MEMBER_CARD_ID", type = IdType.ASSIGN_UUID)
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
@TableField("MEMBER_ID")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "卡项ID")
|
||||
@TableField("CARD_ID")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "卡号")
|
||||
@TableField("CARD_NO")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "卡名称")
|
||||
@TableField("CARD_NAME")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "余额")
|
||||
@TableField("AMOUNT")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty(value = "赠送金额")
|
||||
@TableField("GIVE_AMOUNT")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品折扣")
|
||||
@TableField("DISCOUNT")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "开卡金额")
|
||||
@TableField("BUILD_CARD_AMOUNT")
|
||||
private BigDecimal buildCardAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
@TableField("PUSH_MONEY")
|
||||
private BigDecimal pushMoney;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
@TableField("CARD_STATUS")
|
||||
private Integer cardStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
@TableField("VERSION")
|
||||
@Version
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package com.dd.admin.business.memberCard.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Mapper
|
||||
public interface MemberCardMapper extends BaseMapper<MemberCard> {
|
||||
|
||||
IPage<MemberCardVo> selectMemberCardPage(Page<MemberCardVo> page, @Param("memberCardDto") MemberCardDto memberCardDto);
|
||||
|
||||
List<MemberCardVo> selectMemberCardList(@Param("memberCardDto") MemberCardDto memberCardDto);
|
||||
|
||||
MemberCardVo selectOneByCardNo(@Param("cardNo")String cardNo,@Param("shopId")String shopId);
|
||||
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
<?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.dd.admin.business.memberCard.mapper.MemberCardMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.memberCard.entity.MemberCard">
|
||||
<id column="MEMBER_CARD_ID" property="memberCardId" />
|
||||
<result column="MEMBER_ID" property="memberId" />
|
||||
<result column="CARD_ID" property="cardId" />
|
||||
<result column="CARD_NO" property="cardNo" />
|
||||
<result column="CARD_NAME" property="cardName" />
|
||||
<result column="AMOUNT" property="amount" />
|
||||
<result column="GIVE_AMOUNT" property="giveAmount" />
|
||||
<result column="DISCOUNT" property="discount" />
|
||||
<result column="BUILD_CARD_AMOUNT" property="buildCardAmount" />
|
||||
<result column="PUSH_MONEY" property="pushMoney" />
|
||||
<result column="CARD_STATUS" property="cardStatus" />
|
||||
<result column="DELETED" property="deleted" />
|
||||
<result column="VERSION" property="version" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
MEMBER_CARD_ID, MEMBER_ID, CARD_ID, CARD_NO, CARD_NAME, AMOUNT, GIVE_AMOUNT, DISCOUNT, BUILD_CARD_AMOUNT, PUSH_MONEY, CARD_STATUS, DELETED, VERSION, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID
|
||||
</sql>
|
||||
|
||||
<select id="selectMemberCardPage" resultType="com.dd.admin.business.memberCard.domain.MemberCardVo">
|
||||
select
|
||||
*
|
||||
from business_member_card where 1 = 1
|
||||
<if test="memberCardDto.shopId != null and memberCardDto.shopId != ''">
|
||||
and shop_id = #{memberCardDto.shopId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMemberCardList" resultType="com.dd.admin.business.memberCard.domain.MemberCardVo">
|
||||
select
|
||||
*
|
||||
from business_member_card where deleted = 0
|
||||
<if test="memberCardDto.memberId != null and memberCardDto.memberId != ''">
|
||||
and member_id = #{memberCardDto.memberId}
|
||||
</if>
|
||||
<if test="memberCardDto.querySearch != null and memberCardDto.querySearch != ''">
|
||||
and CARD_NO like CONCAT('%', #{memberCardDto.querySearch}, '%')
|
||||
</if>
|
||||
<if test="memberCardDto.shopId != null and memberCardDto.shopId != ''">
|
||||
and shop_id = #{memberCardDto.shopId}
|
||||
</if>
|
||||
order by create_time desc
|
||||
<if test="memberCardDto.limit != null">
|
||||
limit #{memberCardDto.limit}
|
||||
</if>
|
||||
</select>
|
||||
<select id="selectOneByCardNo" resultType="com.dd.admin.business.memberCard.domain.MemberCardVo">
|
||||
select
|
||||
<include refid="Base_Column_List"/>
|
||||
from business_member_card
|
||||
where
|
||||
SHOP_ID = #{shopId} and
|
||||
CARD_NO = #{cardNo} limit 0,1
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,31 @@
|
||||
package com.dd.admin.business.memberCard.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardDto;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
public interface MemberCardService extends IService<MemberCard> {
|
||||
|
||||
//会员卡-分页列表
|
||||
IPage<MemberCardVo> selectMemberCardPage(MemberCardDto memberCardDto);
|
||||
|
||||
//会员卡-列表
|
||||
List<MemberCardVo> selectMemberCardList(MemberCardDto memberCardDto);
|
||||
|
||||
MemberCardVo selectOneByCardNo(String cardNo);
|
||||
|
||||
Integer selectMemberCardCount(String shopId);
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
package com.dd.admin.business.memberCard.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.mapper.MemberCardMapper;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员卡 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Service
|
||||
public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberCard> implements MemberCardService {
|
||||
|
||||
@Override
|
||||
public IPage<MemberCardVo> selectMemberCardPage(MemberCardDto memberCardDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectMemberCardPage(page,memberCardDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MemberCardVo> selectMemberCardList(MemberCardDto memberCardDto) {
|
||||
return baseMapper.selectMemberCardList(memberCardDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemberCardVo selectOneByCardNo(String cardNo) {
|
||||
String deptId = SecurityUtil.getLoginUser().getDeptId();
|
||||
return baseMapper.selectOneByCardNo(cardNo,deptId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectMemberCardCount(String shopId) {
|
||||
LambdaQueryWrapper<MemberCard> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MemberCard::getShopId, shopId);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,88 @@
|
||||
package com.dd.admin.business.operationLog.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.operationLog.entity.OperationLog;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogVo;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogDto;
|
||||
import com.dd.admin.business.operationLog.service.OperationLogService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Api(tags = "操作日志")
|
||||
@RestController
|
||||
public class OperationLogController {
|
||||
|
||||
@Autowired
|
||||
OperationLogService operationLogService;
|
||||
|
||||
@ApiOperation(value = "操作日志-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/operationLog/page")
|
||||
public ResultBean<IPage<OperationLogVo>> page(OperationLogDto operationLogDto) {
|
||||
IPage<OperationLogVo> pageInfo = operationLogService.selectOperationLogPage(operationLogDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作日志-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/operationLog/list")
|
||||
public ResultBean<List<OperationLogVo>> list(OperationLogDto operationLogDto) {
|
||||
List<OperationLogVo> list = operationLogService.selectOperationLogList(operationLogDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作日志-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/operationLog/add")
|
||||
public ResultBean<OperationLog> add(@RequestBody @Validated OperationLogDto operationLogDto) {
|
||||
OperationLog operationLog = BeanUtil.copyProperties(operationLogDto, OperationLog.class);
|
||||
operationLogService.save(operationLog);
|
||||
return ResultBean.success(operationLog);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作日志-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/operationLog/{operationLogId}")
|
||||
public ResultBean<OperationLogVo> get(@PathVariable @NotBlank String operationLogId) {
|
||||
OperationLog operationLog = operationLogService.getById(operationLogId);
|
||||
OperationLogVo operationLogVo = BeanUtil.copyProperties(operationLog,OperationLogVo.class);
|
||||
return ResultBean.success(operationLogVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作日志-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/operationLog/update")
|
||||
public ResultBean<OperationLog> update(@RequestBody @Validated(UpdateGroup.class) OperationLogDto operationLogDto) {
|
||||
OperationLog operationLog = BeanUtil.copyProperties(operationLogDto, OperationLog.class);
|
||||
operationLogService.updateById(operationLog);
|
||||
return ResultBean.success(operationLog);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作日志-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/operationLog/delete/{operationLogId}")
|
||||
public ResultBean<OperationLog> delete(@PathVariable @NotBlank String operationLogId) {
|
||||
Boolean b = operationLogService.removeById(operationLogId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,78 @@
|
||||
package com.dd.admin.business.operationLog.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="操作日志接收对象")
|
||||
public class OperationLogDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "日志id")
|
||||
private String operId;
|
||||
|
||||
@ApiModelProperty(value = "请求模块")
|
||||
private String operModule;
|
||||
|
||||
@ApiModelProperty(value = "操作类型")
|
||||
private String operType;
|
||||
|
||||
@ApiModelProperty(value = "操作描述")
|
||||
private String operDesc;
|
||||
|
||||
@ApiModelProperty(value = "操作方法")
|
||||
private String operMethod;
|
||||
|
||||
@ApiModelProperty(value = "请求参数")
|
||||
private String oprrRequestParam;
|
||||
|
||||
@ApiModelProperty(value = "响应参数")
|
||||
private String operResponseParam;
|
||||
|
||||
@ApiModelProperty(value = "操作人姓名")
|
||||
private String operUserId;
|
||||
|
||||
@ApiModelProperty(value = "操作人ID")
|
||||
private String operUserName;
|
||||
|
||||
@ApiModelProperty(value = "操作ip")
|
||||
private String operIp;
|
||||
|
||||
@ApiModelProperty(value = "请求url")
|
||||
private String operUrl;
|
||||
|
||||
@ApiModelProperty(value = "操作机构id")
|
||||
private String operDeptId;
|
||||
|
||||
@ApiModelProperty(value = "机构名")
|
||||
private String operDeptName;
|
||||
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员名")
|
||||
private String memberName;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,75 @@
|
||||
package com.dd.admin.business.operationLog.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="操作日志返回对象")
|
||||
public class OperationLogVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "日志id")
|
||||
private String operId;
|
||||
|
||||
@ApiModelProperty(value = "请求模块")
|
||||
private String operModule;
|
||||
|
||||
@ApiModelProperty(value = "操作类型")
|
||||
private String operType;
|
||||
|
||||
@ApiModelProperty(value = "操作描述")
|
||||
private String operDesc;
|
||||
|
||||
@ApiModelProperty(value = "操作方法")
|
||||
private String operMethod;
|
||||
|
||||
@ApiModelProperty(value = "请求参数")
|
||||
private String oprrRequestParam;
|
||||
|
||||
@ApiModelProperty(value = "响应参数")
|
||||
private String operResponseParam;
|
||||
|
||||
@ApiModelProperty(value = "操作人姓名")
|
||||
private String operUserId;
|
||||
|
||||
@ApiModelProperty(value = "操作人ID")
|
||||
private String operUserName;
|
||||
|
||||
@ApiModelProperty(value = "操作ip")
|
||||
private String operIp;
|
||||
|
||||
@ApiModelProperty(value = "请求url")
|
||||
private String operUrl;
|
||||
|
||||
@ApiModelProperty(value = "操作机构id")
|
||||
private String operDeptId;
|
||||
|
||||
@ApiModelProperty(value = "机构名")
|
||||
private String operDeptName;
|
||||
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员名")
|
||||
private String memberName;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,92 @@
|
||||
package com.dd.admin.business.operationLog.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_operation_log")
|
||||
@ApiModel(value="OperationLog对象", description="操作日志")
|
||||
public class OperationLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "日志id")
|
||||
@TableId(value = "OPER_ID", type = IdType.ASSIGN_UUID)
|
||||
private String operId;
|
||||
|
||||
@ApiModelProperty(value = "请求模块")
|
||||
@TableField("OPER_MODULE")
|
||||
private String operModule;
|
||||
|
||||
@ApiModelProperty(value = "操作类型")
|
||||
@TableField("OPER_TYPE")
|
||||
private String operType;
|
||||
|
||||
@ApiModelProperty(value = "操作描述")
|
||||
@TableField("OPER_DESC")
|
||||
private String operDesc;
|
||||
|
||||
@ApiModelProperty(value = "操作方法")
|
||||
@TableField("OPER_METHOD")
|
||||
private String operMethod;
|
||||
|
||||
@ApiModelProperty(value = "请求参数")
|
||||
@TableField("OPRR_REQUEST_PARAM")
|
||||
private String oprrRequestParam;
|
||||
|
||||
@ApiModelProperty(value = "响应参数")
|
||||
@TableField("OPER_RESPONSE_PARAM")
|
||||
private String operResponseParam;
|
||||
|
||||
@ApiModelProperty(value = "操作人姓名")
|
||||
@TableField("OPER_USER_ID")
|
||||
private String operUserId;
|
||||
|
||||
@ApiModelProperty(value = "操作人ID")
|
||||
@TableField("OPER_USER_NAME")
|
||||
private String operUserName;
|
||||
|
||||
@ApiModelProperty(value = "操作ip")
|
||||
@TableField("OPER_IP")
|
||||
private String operIp;
|
||||
|
||||
@ApiModelProperty(value = "请求url")
|
||||
@TableField("OPER_URL")
|
||||
private String operUrl;
|
||||
|
||||
@ApiModelProperty(value = "操作机构id")
|
||||
@TableField("OPER_DEPT_ID")
|
||||
private String operDeptId;
|
||||
|
||||
@ApiModelProperty(value = "机构名")
|
||||
@TableField("OPER_DEPT_NAME")
|
||||
private String operDeptName;
|
||||
|
||||
@TableField(value = "CREATE_TIME")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
@TableField("MEMBER_ID")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员名")
|
||||
@TableField("MEMBER_NAME")
|
||||
private String memberName;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.operationLog.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.operationLog.entity.OperationLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogVo;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Mapper
|
||||
public interface OperationLogMapper extends BaseMapper<OperationLog> {
|
||||
|
||||
IPage<OperationLogVo> selectOperationLogPage(Page<OperationLogVo> page, @Param("operationLogDto") OperationLogDto operationLogDto);
|
||||
|
||||
List<OperationLogVo> selectOperationLogList(@Param("operationLogDto") OperationLogDto operationLogDto);
|
||||
}
|
@@ -0,0 +1,42 @@
|
||||
<?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.dd.admin.business.operationLog.mapper.OperationLogMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.operationLog.entity.OperationLog">
|
||||
<result column="OPER_ID" property="operId" />
|
||||
<result column="OPER_MODULE" property="operModule" />
|
||||
<result column="OPER_TYPE" property="operType" />
|
||||
<result column="OPER_DESC" property="operDesc" />
|
||||
<result column="OPER_METHOD" property="operMethod" />
|
||||
<result column="OPRR_REQUEST_PARAM" property="oprrRequestParam" />
|
||||
<result column="OPER_RESPONSE_PARAM" property="operResponseParam" />
|
||||
<result column="OPER_USER_ID" property="operUserId" />
|
||||
<result column="OPER_USER_NAME" property="operUserName" />
|
||||
<result column="OPER_IP" property="operIp" />
|
||||
<result column="OPER_URL" property="operUrl" />
|
||||
<result column="OPER_DEPT_ID" property="operDeptId" />
|
||||
<result column="OPER_DEPT_NAME" property="operDeptName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="MEMBER_ID" property="memberId" />
|
||||
<result column="MEMBER_NAME" property="memberName" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
OPER_ID, OPER_MODULE, OPER_TYPE, OPER_DESC, OPER_METHOD, OPRR_REQUEST_PARAM, OPER_RESPONSE_PARAM, OPER_USER_ID, OPER_USER_NAME, OPER_IP, OPER_URL, OPER_DEPT_ID, OPER_DEPT_NAME, CREATE_TIME, MEMBER_ID, MEMBER_NAME
|
||||
</sql>
|
||||
|
||||
<select id="selectOperationLogPage" resultType="com.dd.admin.business.operationLog.domain.OperationLogVo">
|
||||
select
|
||||
*
|
||||
from business_operation_log where 1 = 1
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectOperationLogList" resultType="com.dd.admin.business.operationLog.domain.OperationLogVo">
|
||||
select
|
||||
*
|
||||
from business_operation_log where 1 = 1
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,26 @@
|
||||
package com.dd.admin.business.operationLog.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.operationLog.entity.OperationLog;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogVo;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
public interface OperationLogService extends IService<OperationLog> {
|
||||
|
||||
//操作日志-分页列表
|
||||
IPage<OperationLogVo> selectOperationLogPage(OperationLogDto operationLogDto);
|
||||
|
||||
//操作日志-列表
|
||||
List<OperationLogVo> selectOperationLogList(OperationLogDto operationLogDto);
|
||||
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package com.dd.admin.business.operationLog.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.operationLog.entity.OperationLog;
|
||||
import com.dd.admin.business.operationLog.mapper.OperationLogMapper;
|
||||
import com.dd.admin.business.operationLog.service.OperationLogService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogVo;
|
||||
import com.dd.admin.business.operationLog.domain.OperationLogDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 操作日志 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-07
|
||||
*/
|
||||
@Service
|
||||
public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, OperationLog> implements OperationLogService {
|
||||
|
||||
@Override
|
||||
public IPage<OperationLogVo> selectOperationLogPage(OperationLogDto operationLogDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectOperationLogPage(page,operationLogDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OperationLogVo> selectOperationLogList(OperationLogDto operationLogDto) {
|
||||
return baseMapper.selectOperationLogList(operationLogDto);
|
||||
}
|
||||
}
|
64
src/main/java/com/dd/admin/business/pay/PayController.java
Normal file
64
src/main/java/com/dd/admin/business/pay/PayController.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package com.dd.admin.business.pay;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.business.member.domain.MemberDto;
|
||||
import com.dd.admin.business.member.entity.Member;
|
||||
import com.dd.admin.business.pay.domain.BuildCardSell;
|
||||
import com.dd.admin.business.pay.domain.ChargedCardSell;
|
||||
import com.dd.admin.business.pay.domain.MemberProductSell;
|
||||
import com.dd.admin.business.pay.service.PayService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Api(tags = "结算控制器")
|
||||
@RestController
|
||||
public class PayController {
|
||||
|
||||
@Autowired
|
||||
PayService payService;
|
||||
|
||||
@ApiOperation(value = "开卡结算")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/pay/buildCard")
|
||||
@Transactional
|
||||
@OperLog(operModule = "开卡结算",operType = OperType.ADD,operDesc = "开卡结算")
|
||||
public ResultBean<Sell> buildCard(@RequestBody @Validated BuildCardSell buildCardSell) {
|
||||
Sell sell = payService.executeBuildCard(buildCardSell);
|
||||
return ResultBean.success(sell);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "续卡结算")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/pay/chargedCard")
|
||||
@Transactional
|
||||
@OperLog(operModule = "续卡结算",operType = OperType.ADD,operDesc = "续卡结算")
|
||||
public ResultBean<Sell> chargedCard(@RequestBody @Validated ChargedCardSell chargedCardSell) {
|
||||
Sell sell = payService.executeChargedCard(chargedCardSell);
|
||||
return ResultBean.success(sell);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品结算")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/pay/productPay")
|
||||
@Transactional
|
||||
@OperLog(operModule = "商品结算",operType = OperType.ADD,operDesc = "商品结算")
|
||||
public ResultBean<Sell> buildCard(@RequestBody @Validated MemberProductSell productSell) {
|
||||
Sell sell = payService.executeProduct(productSell);
|
||||
return ResultBean.success(sell);
|
||||
}
|
||||
|
||||
|
||||
}
|
34
src/main/java/com/dd/admin/business/pay/domain/BaseSell.java
Normal file
34
src/main/java/com/dd/admin/business/pay/domain/BaseSell.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BaseSell {
|
||||
@ApiModelProperty(value = "订单号 可不填 不填将自动生成")
|
||||
private String sellNo;
|
||||
|
||||
@ApiModelProperty(value = "支付列表")
|
||||
@NotNull(message = "支付信息不能为空")
|
||||
private List<Sellpay> sellPayList;
|
||||
|
||||
@ApiModelProperty(value = "订单金额")
|
||||
@NotNull(message = "订单金额不能为空")
|
||||
@Max(value = 1000000,message = "订单金额最大为1000000")
|
||||
@Min(value = 0,message = "订单金额最小为0")
|
||||
private BigDecimal sellAmount;
|
||||
|
||||
@ApiModelProperty(value = "json")
|
||||
private String sellJson;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "jsonId")
|
||||
private String jsonId;
|
||||
}
|
@@ -0,0 +1,40 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BuildCardForm {
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
@TableField("CARD_NAME")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "卡编号")
|
||||
@TableField("CARD_NO")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "预设开卡金")
|
||||
@TableField("CARD_AMOUNT")
|
||||
private BigDecimal cardAmount = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty(value = "预设赠送金")
|
||||
@TableField("GIVE_AMOUNT")
|
||||
private BigDecimal giveAmount = BigDecimal.ZERO;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "商品实际金额")
|
||||
private BigDecimal totalRealAmount;
|
||||
|
||||
@ApiModelProperty(value = "服务人员列表")
|
||||
private List<ServerVo> serverList;
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@ApiModel(value="开卡接收对象")
|
||||
public class BuildCardSell extends MemberBaseSell {
|
||||
@ApiModelProperty(value = "开卡对象")
|
||||
@NotNull(message = "开卡对象不能为空")
|
||||
@Valid
|
||||
BuildCardForm buildCardForm;
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ChargedCardForm {
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
@TableField("CARD_NAME")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "修改后卡编号")
|
||||
@TableField("CARD_NO")
|
||||
private String cardNo;
|
||||
|
||||
@ApiModelProperty(value = "充值开卡金")
|
||||
private BigDecimal chargedCardAmount = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty(value = "充值赠送金")
|
||||
private BigDecimal chargedGiveAmount = BigDecimal.ZERO;
|
||||
|
||||
@ApiModelProperty(value = "商品实际金额")
|
||||
private BigDecimal totalRealAmount;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "服务人员列表")
|
||||
private List<ServerVo> serverList;
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@ApiModel(value="续卡接收对象")
|
||||
public class ChargedCardSell extends MemberBaseSell {
|
||||
@ApiModelProperty(value = "续卡对象")
|
||||
@NotNull(message = "续卡对象不能为空")
|
||||
@Valid
|
||||
ChargedCardForm chargedCardForm;
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MemberBaseSell extends BaseSell{
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员名")
|
||||
private String memberName;
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(value="会员商品消费")
|
||||
public class MemberProductSell extends MemberBaseSell {
|
||||
|
||||
@ApiModelProperty(value = "商品对象")
|
||||
@NotNull(message = "商品对不能为空")
|
||||
@Valid
|
||||
private List<ProductForm> productFormList;
|
||||
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
package com.dd.admin.business.pay.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ProductForm {
|
||||
@ApiModelProperty(value = "商品id")
|
||||
@NotBlank(message = "商品id不能为空",groups = UpdateGroup.class)
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品金额")
|
||||
private BigDecimal productAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品会员金额")
|
||||
private BigDecimal productMemberAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品折扣")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "商品数量")
|
||||
private Long count;
|
||||
|
||||
@ApiModelProperty(value = "商品实际金额")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品实际金额")
|
||||
private BigDecimal totalRealAmount;
|
||||
|
||||
@ApiModelProperty(value = "服务人员列表")
|
||||
private List<ServerVo> serverList;
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
package com.dd.admin.business.pay.enmus;
|
||||
|
||||
import com.dd.admin.common.exception.enums.AbstractBaseExceptionEnum;
|
||||
|
||||
public enum CashierExceptionEnum implements AbstractBaseExceptionEnum {
|
||||
CARD_AMOUNT_CHANGE(500,"余额已变动,为保证数据安全,操作中断,请重试!"),
|
||||
MEMBER_CARD_NOT_SUFFICIENT_FUNDS(500,"会员卡余额不足,请重新操作!"),
|
||||
MEMBER_CARD_GIVE_NOT_SUFFICIENT_FUNDS(500,"会员卡赠送余额不足,请重新操作!"),
|
||||
MEMBER_CARD_ALREADY_BUILD(500,"该会员已经有充值账户,禁止重复创建!"),
|
||||
MEMBER_ALREADY_BUILD(500,"该手机号已注册过,禁止重复创建!"),
|
||||
MEMBER_DIFFERENT(500,"会员卡与会员信息不一致,请核实~"),
|
||||
DEPT_DIFFERENT(500,"结算信息与当前门店信息不一致,请刷新后重试~"),
|
||||
LKLPAY_NOT_AUTHCODE(500,"没有扫描或者扫描了错误的付款码,请核实!"),
|
||||
LKLPAYINFO_IS_EXIST(500,"该组织的拉卡拉拓展信息已经配置过啦!"),
|
||||
LKLPAYINFO_AUTHCODE_ERROR(500,"扫描用户付款码有误!"),
|
||||
SELL_TYPE_ERROR(500,"传入的支付方式有误!"),
|
||||
LKLPAYINFO_UNKONW_ERROR(500,"付款码支付有误!"),
|
||||
LKLPAYINFO_COMPLETE_ERROR(500,"该订单已经完成了哦!"),
|
||||
PRODUCT_ALREADY_EXIST(500,"该商品号已被占用!"),
|
||||
CARDNO_ALREADY_EXIST(500,"该卡号已被占用!"),
|
||||
CARD_ALREADY_EXIST(500,"该卡项编号已被占用!"),
|
||||
PRODUCT_CARD_ALREADY_EXIST(500,"卡级价已存在,请更换其他卡项设置!"),
|
||||
AUTHCODE_PAY_NOTZREO(500,"条码支付金额不能为0!"),
|
||||
COMBO_EXPIRED(500,"该套餐活动已过期!"),
|
||||
COMBO_MONTH_COUNT_NONE(500,"套餐过期月数未设置!"),
|
||||
MEMBER_COMBO_EXPIRED(500,"会员套餐截止期已过!"),
|
||||
MEMBER_COMBO_NOT_SUFFICIENT_FUNDS(500,"套餐剩余项目次数不足!"),
|
||||
MEMBER_COMBO_IS_USED(500,"该套餐已使用禁止销单!"),
|
||||
MEMBER_COMBO_IS_DEL(500,"该套餐已删除!"),
|
||||
PAY_MONEY_EMPTY(500,"付款码有误!"),
|
||||
PAY_MONEY_ERROR(500,"付款金额有误!"),
|
||||
PAY_ERROR(500,"条码付款发生了错误!"),
|
||||
PAY_SELL_ERROR(500,"该订单状态已取消!"),
|
||||
PAY_SELL_ALREADY(500,"该订单状态已结算!"),
|
||||
PAY_SELL_CANCEL_ERROR(500,"该订单状态无法销单!"),
|
||||
PAY_SELL_CARD_AMOUNT_CHANGE(500,"该卡已经生成消费记录,无法销单!"),
|
||||
PAY_SELL_CARD_AMOUNT_NOT_SUFFICIENT_FUNDS(500,"销单后会员卡赠送余额不足,无法销单!"),
|
||||
;
|
||||
|
||||
CashierExceptionEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
private Integer code;
|
||||
|
||||
private String message;
|
||||
|
||||
|
||||
@Override
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
package com.dd.admin.business.pay.enmus;
|
||||
|
||||
public enum DetailServiceEnum {
|
||||
BUILD_CARD("sellDetailBuildCard"),
|
||||
CHARGED_CARD("sellDetailChargedCard"),
|
||||
MEMBER_PRODUCT("sellDetailMemberProduct"),
|
||||
PEOPLE("sellDetailPeople");
|
||||
|
||||
private String serviceName;
|
||||
|
||||
DetailServiceEnum(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
public void setServiceName(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
}
|
60
src/main/java/com/dd/admin/business/pay/enmus/PayConst.java
Normal file
60
src/main/java/com/dd/admin/business/pay/enmus/PayConst.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package com.dd.admin.business.pay.enmus;
|
||||
|
||||
public class PayConst {
|
||||
|
||||
/**
|
||||
* 订单状态销单
|
||||
*/
|
||||
public static final Integer SELL_STATUS_REVOCATION = 1;
|
||||
|
||||
/**
|
||||
* 开卡
|
||||
*/
|
||||
public static final Integer SELL_TYPE_BUILD_CARD = 2;
|
||||
|
||||
/**
|
||||
* 续卡
|
||||
*/
|
||||
public static final Integer SELL_TYPE_CHARGED_CARD = 3;
|
||||
|
||||
/**
|
||||
* 商品服务
|
||||
*/
|
||||
public static final Integer SELL_TYPE_PRODUCT = 1;
|
||||
|
||||
/**
|
||||
* 卡金支付
|
||||
*/
|
||||
public static final Integer PAY_TYPE_CARD = 1;
|
||||
/**
|
||||
* 赠送金支付
|
||||
*/
|
||||
public static final Integer PAY_TYPE_CARD_GIVE = 0;
|
||||
|
||||
public static final String PAY_TYPE_CARD_GIVE_NAME = "赠送金支付";
|
||||
|
||||
/**
|
||||
* 优惠
|
||||
*/
|
||||
public static final Integer PAY_TYPE_DISCOUNT = 888;
|
||||
|
||||
|
||||
/**
|
||||
* 商品类型
|
||||
*/
|
||||
public static final Integer PRODUCT_TYPE_PRODUCT = 1;
|
||||
/**
|
||||
* 商品类型 卡项
|
||||
*/
|
||||
public static final Integer PRODUCT_TYPE_CARD = 2;
|
||||
/**
|
||||
* 商品类型 卡项
|
||||
*/
|
||||
public static final Integer PRODUCT_TYPE_CHARGED_CARD = 3;
|
||||
|
||||
/**
|
||||
*待结算订单结算完毕
|
||||
*/
|
||||
public static final Integer PENDING_SELL_COMPLETE = 1;
|
||||
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
package com.dd.admin.business.pay.service;
|
||||
|
||||
import com.dd.admin.business.pay.domain.BaseSell;
|
||||
import com.dd.admin.business.sell.domain.SellDto;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
|
||||
/**
|
||||
|
||||
* Description:创建销售细单接口 所有细单的操作 实现此接口
|
||||
|
||||
* date: 2021/7/12
|
||||
* @author: wxl
|
||||
*/
|
||||
|
||||
public interface AddSellDetailService {
|
||||
|
||||
void addSellDetail(Sell sell, BaseSell sellDto);
|
||||
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
package com.dd.admin.business.pay.service;
|
||||
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.pay.domain.BuildCardSell;
|
||||
import com.dd.admin.business.pay.domain.ChargedCardSell;
|
||||
import com.dd.admin.business.pay.domain.MemberProductSell;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface PayService {
|
||||
public Sell createSell(Sell sell);
|
||||
|
||||
public Sell setSellExtraInfo(String sellId, MemberCard memberCard, BigDecimal memberBeforeAmount,BigDecimal memberBeforeGiveAmount);
|
||||
|
||||
public Sell executeBuildCard(BuildCardSell buildCardSell);
|
||||
|
||||
public Sell executeChargedCard(ChargedCardSell chargedCardSell);
|
||||
|
||||
public Sell executeProduct(MemberProductSell productSell);
|
||||
|
||||
}
|
@@ -0,0 +1,140 @@
|
||||
package com.dd.admin.business.pay.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.pay.domain.BuildCardSell;
|
||||
import com.dd.admin.business.pay.domain.ChargedCardSell;
|
||||
import com.dd.admin.business.pay.domain.MemberProductSell;
|
||||
import com.dd.admin.business.pay.service.AddSellDetailService;
|
||||
import com.dd.admin.business.pay.service.PayService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellJson.entity.Selljson;
|
||||
import com.dd.admin.business.sellJson.service.SelljsonService;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.dd.admin.common.utils.StringUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.DetailServiceEnum.*;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.*;
|
||||
|
||||
@Service
|
||||
public class PayServiceImpl implements PayService {
|
||||
|
||||
@Autowired
|
||||
private SellService sellService;
|
||||
|
||||
@Autowired
|
||||
private Map<String, AddSellDetailService> detailServiceMap;
|
||||
|
||||
@Autowired
|
||||
private SellpayService sellpayService;
|
||||
|
||||
@Autowired
|
||||
private SelljsonService selljsonService;
|
||||
|
||||
@Override
|
||||
public Sell createSell(Sell sell) {
|
||||
String shopId = SecurityUtil.getLoginUser().getDeptId();
|
||||
//直接执行save即可
|
||||
if(StringUtil.isEmpty(sell.getSellNo())){
|
||||
String sellNo = (StringUtil.getDateStringNow() + StringUtil.createCode(4));
|
||||
sell.setSellNo(sellNo);
|
||||
}
|
||||
|
||||
//插入时查看该门店今天数量为流水号
|
||||
Integer count = sellService.selectTodayCount(shopId);
|
||||
sell.setSerialNo(String.valueOf(count + 1));
|
||||
sellService.save(sell);
|
||||
return sell;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sell setSellExtraInfo(String sellId, MemberCard memberCard, BigDecimal memberBeforeAmount, BigDecimal memberBeforeGiveAmount) {
|
||||
Sell extraSellInfo = new Sell();
|
||||
extraSellInfo.setSellId(sellId);
|
||||
if(memberCard!=null){
|
||||
//设置订单的卡信息
|
||||
extraSellInfo.setMemberCardId(memberCard.getMemberCardId());
|
||||
extraSellInfo.setMemberCardName(memberCard.getCardName());
|
||||
extraSellInfo.setMemberCardNo(memberCard.getCardNo());
|
||||
//设置订单的卡余额
|
||||
extraSellInfo.setMemberCardBeforeAmount(memberBeforeAmount);
|
||||
extraSellInfo.setMemberCardBeforeGiveAmount(memberBeforeGiveAmount);
|
||||
|
||||
extraSellInfo.setMemberCardAfterAmount(memberCard.getAmount());
|
||||
extraSellInfo.setMemberCardAfterGiveAmount(memberCard.getGiveAmount());
|
||||
}
|
||||
sellService.updateById(extraSellInfo);
|
||||
return extraSellInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sell executeBuildCard(BuildCardSell buildCardSell) {
|
||||
if(StringUtil.isNotEmpty(buildCardSell.getJsonId())){
|
||||
selljsonService.completePendingSell(buildCardSell.getJsonId());
|
||||
}
|
||||
|
||||
Integer sellType = SELL_TYPE_BUILD_CARD;
|
||||
//第一步创建订单
|
||||
Sell sell = BeanUtil.copyProperties(buildCardSell,Sell.class);
|
||||
sell.setSellType(sellType);
|
||||
|
||||
BigDecimal realAmount = sellpayService.getRealAmount(buildCardSell.getSellPayList(), buildCardSell.getSellAmount());
|
||||
sell.setRealAmount(realAmount);
|
||||
createSell(sell);
|
||||
// selljsonService.save(new Selljson().setSellId(sell.getSellId()).setSellJson(buildCardSell.getSellJson()));
|
||||
//创建销售细单
|
||||
detailServiceMap.get(BUILD_CARD.getServiceName()).addSellDetail(sell,buildCardSell);
|
||||
return sell;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sell executeChargedCard(ChargedCardSell chargedCardSell) {
|
||||
if(StringUtil.isNotEmpty(chargedCardSell.getJsonId())){
|
||||
selljsonService.completePendingSell(chargedCardSell.getJsonId());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Integer sellType = SELL_TYPE_CHARGED_CARD;
|
||||
//chargedCardSell
|
||||
Sell sell = BeanUtil.copyProperties(chargedCardSell,Sell.class);
|
||||
sell.setSellType(sellType);
|
||||
|
||||
BigDecimal realAmount = sellpayService.getRealAmount(chargedCardSell.getSellPayList(), chargedCardSell.getSellAmount());
|
||||
sell.setRealAmount(realAmount);
|
||||
createSell(sell);
|
||||
// selljsonService.save(new Selljson().setSellId(sell.getSellId()).setSellJson(chargedCardSell.getSellJson()));
|
||||
//创建销售细单
|
||||
detailServiceMap.get(CHARGED_CARD.getServiceName()).addSellDetail(sell,chargedCardSell);
|
||||
return sell;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sell executeProduct(MemberProductSell productSell) {
|
||||
if(StringUtil.isNotEmpty(productSell.getJsonId())){
|
||||
selljsonService.completePendingSell(productSell.getJsonId());
|
||||
}
|
||||
|
||||
|
||||
Integer sellType = SELL_TYPE_PRODUCT;
|
||||
//第一步创建订单
|
||||
Sell sell = BeanUtil.copyProperties(productSell,Sell.class);
|
||||
sell.setSellType(sellType);
|
||||
|
||||
BigDecimal realAmount = sellpayService.getRealAmount(productSell.getSellPayList(), productSell.getSellAmount());
|
||||
sell.setRealAmount(realAmount);
|
||||
createSell(sell);
|
||||
//创建销售细单
|
||||
detailServiceMap.get(MEMBER_PRODUCT.getServiceName()).addSellDetail(sell,productSell);
|
||||
return sell;
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,162 @@
|
||||
package com.dd.admin.business.pay.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.dd.admin.business.card.service.CardService;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.pay.domain.BaseSell;
|
||||
import com.dd.admin.business.pay.domain.BuildCardForm;
|
||||
import com.dd.admin.business.pay.domain.BuildCardSell;
|
||||
import com.dd.admin.business.pay.service.AddSellDetailService;
|
||||
import com.dd.admin.business.pay.service.PayService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.utils.BigDecimalUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.CARDNO_ALREADY_EXIST;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.PRODUCT_TYPE_CARD;
|
||||
import static com.dd.admin.common.consts.MemberShopConst.PUSH_FIXED;
|
||||
import static com.dd.admin.common.consts.MemberShopConst.PUSH_SCALE;
|
||||
|
||||
@Service
|
||||
public class SellDetailBuildCard implements AddSellDetailService {
|
||||
|
||||
@Autowired
|
||||
private CardService cardService;
|
||||
@Autowired
|
||||
private MemberCardService memberCardService;
|
||||
@Autowired
|
||||
private SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
private SellpayService sellpayService;
|
||||
@Autowired
|
||||
private PayService payService;
|
||||
@Autowired
|
||||
private SellDetailServerService sellDetailServerService;
|
||||
|
||||
@Override
|
||||
public void addSellDetail(Sell sell, BaseSell sellDto) {
|
||||
//转换数据
|
||||
BuildCardSell buildCardSell = (BuildCardSell) sellDto;
|
||||
// 1 获取开卡金额 等信息 先开卡
|
||||
String cardId = buildCardSell.getBuildCardForm().getCardId();
|
||||
//获取需要的开卡信息
|
||||
Card card = cardService.getById(cardId);
|
||||
//开卡
|
||||
MemberCard memberCard = buildMemberCard(sell, buildCardSell.getBuildCardForm(), card);
|
||||
//2生成销售细单
|
||||
SellDetail sellDetail = addSellDetail(sell, buildCardSell, memberCard, card);
|
||||
//添加支付方式
|
||||
sellpayService.addSellPayList(buildCardSell.getSellPayList(), sell.getSellId());
|
||||
|
||||
//4因为是开卡还要设置额外信息
|
||||
payService.setSellExtraInfo(sell.getSellId(), memberCard, BigDecimal.ZERO, BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
MemberCard buildMemberCard(Sell sell, BuildCardForm buildCardForm, Card card) {
|
||||
//设置卡的基本和余额信息
|
||||
MemberCard memberCard = new MemberCard();
|
||||
memberCard.setMemberId(sell.getMemberId());
|
||||
memberCard.setCardId(card.getCardId());
|
||||
memberCard.setCardName(card.getCardName());
|
||||
|
||||
String cardNo = buildCardForm.getCardNo();
|
||||
MemberCardVo membercardVo = memberCardService.selectOneByCardNo(cardNo);
|
||||
if (membercardVo != null) {
|
||||
throw new ApiException(CARDNO_ALREADY_EXIST);
|
||||
}
|
||||
memberCard.setCardNo(buildCardForm.getCardNo());
|
||||
memberCard.setAmount(buildCardForm.getCardAmount());
|
||||
memberCard.setBuildCardAmount(buildCardForm.getCardAmount());
|
||||
memberCard.setGiveAmount(buildCardForm.getGiveAmount());
|
||||
|
||||
//获取订单的卡折扣信息 设置进会员卡中
|
||||
memberCard.setDiscount(card.getCardDiscount());
|
||||
|
||||
//设置该卡的提成金额
|
||||
memberCard.setPushMoney(card.getCardPushPercent());
|
||||
|
||||
memberCardService.save(memberCard);
|
||||
return memberCard;
|
||||
}
|
||||
|
||||
SellDetail addSellDetail(Sell sell, BuildCardSell buildCardSell, MemberCard membercard, Card card) {
|
||||
BuildCardForm buildCardForm = buildCardSell.getBuildCardForm();
|
||||
SellDetail sellDetail = new SellDetail();
|
||||
//3设置订单id 订单类型 订单状态
|
||||
sellDetail.setSellId(sell.getSellId());
|
||||
sellDetail.setSellType(sell.getSellType());
|
||||
sellDetail.setMemberId(sell.getMemberId());
|
||||
//设置商品信息
|
||||
sellDetail.setProductType(PRODUCT_TYPE_CARD);
|
||||
sellDetail.setCardId(buildCardForm.getCardId());
|
||||
sellDetail.setCardName(buildCardForm.getCardName());
|
||||
sellDetail.setAmount(buildCardForm.getCardAmount());
|
||||
sellDetail.setGiveAmount(buildCardForm.getGiveAmount());
|
||||
sellDetail.setRealAmount(sell.getRealAmount());
|
||||
sellDetail.setTotalRealAmount(buildCardForm.getTotalRealAmount());
|
||||
//设置会员信息
|
||||
sellDetail.setMemberCardId(membercard.getMemberCardId());
|
||||
|
||||
//开卡后卡金和赠送金
|
||||
sellDetail.setAmount(membercard.getAmount());
|
||||
sellDetail.setGiveAmount(membercard.getGiveAmount());
|
||||
|
||||
//保存销售细单
|
||||
sellDetailService.save(sellDetail);
|
||||
|
||||
//该条目有服务人员
|
||||
List<ServerVo> serverList = buildCardForm.getServerList();
|
||||
if (CollectionUtil.isNotEmpty(serverList)) {
|
||||
//如果是固定金额 固定金额除以人数 获取固定金额
|
||||
//如果是比例 计算出比例后提成 获取固定金额
|
||||
//业绩和提成均平均分
|
||||
//总提成
|
||||
BigDecimal totalPushMoney = BigDecimal.ZERO;
|
||||
//总业绩 为订单实付金额
|
||||
BigDecimal totalGradeMoney = sellDetail.getTotalRealAmount();
|
||||
//固定金额的话
|
||||
//按比例
|
||||
if (card.getCardPushPercent() != null) {
|
||||
//提成额 先转换为百分数
|
||||
BigDecimal pushPercent = BigDecimalUtil.div(card.getCardPushPercent(), new BigDecimal("100"));
|
||||
//折后价*百分数
|
||||
totalPushMoney = BigDecimalUtil.mul(totalGradeMoney, pushPercent);
|
||||
}
|
||||
|
||||
|
||||
//平均分
|
||||
BigDecimal pushMoney = BigDecimalUtil.div(totalPushMoney, new BigDecimal(serverList.size()));
|
||||
BigDecimal gradeMoney = BigDecimalUtil.div(totalGradeMoney, new BigDecimal(serverList.size()));
|
||||
|
||||
|
||||
//设置服务人员
|
||||
serverList.stream().forEach(server -> {
|
||||
SellDetailServer sellDetailServer = new SellDetailServer();
|
||||
sellDetailServer.setSellId(sell.getSellId());
|
||||
sellDetailServer.setSellDetailId(sellDetail.getSellDetailId());
|
||||
sellDetailServer.setServerId(server.getServerId());
|
||||
sellDetailServer.setServerName(server.getServerName());
|
||||
sellDetailServer.setServerPushMoney(pushMoney);
|
||||
sellDetailServer.setServerGrade(gradeMoney);
|
||||
sellDetailServerService.save(sellDetailServer);
|
||||
});
|
||||
}
|
||||
return sellDetail;
|
||||
}
|
||||
}
|
@@ -0,0 +1,192 @@
|
||||
package com.dd.admin.business.pay.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.dd.admin.business.card.service.CardService;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.pay.domain.*;
|
||||
import com.dd.admin.business.pay.service.AddSellDetailService;
|
||||
import com.dd.admin.business.pay.service.PayService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.utils.BigDecimalUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.CARD_AMOUNT_CHANGE;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.PRODUCT_TYPE_CHARGED_CARD;
|
||||
|
||||
/**
|
||||
* MemberCardRenewServiceImpl 类,实现了 AddSellDetailService 接口,用于处理会员卡续卡的业务逻辑
|
||||
*/
|
||||
@Service
|
||||
public class SellDetailChargedCard implements AddSellDetailService {
|
||||
|
||||
@Autowired
|
||||
private MemberCardService memberCardService; // 用于操作会员卡相关业务
|
||||
@Autowired
|
||||
private SellDetailService sellDetailService; // 处理销售详情的服务
|
||||
@Autowired
|
||||
private PayService payService; // 支付相关的服务
|
||||
@Autowired
|
||||
private SellpayService sellpayService; // 销售支付的服务
|
||||
@Autowired
|
||||
private SellDetailServerService sellDetailServerService;
|
||||
@Autowired
|
||||
private CardService cardService;
|
||||
/**
|
||||
* 处理添加销售详情的方法
|
||||
*
|
||||
* @param sell 销售实体
|
||||
* @param baseSell 基础销售数据
|
||||
*/
|
||||
@Override
|
||||
public void addSellDetail(Sell sell, BaseSell baseSell) {
|
||||
// 将基础销售数据转换为 ChargedCardSell 类型
|
||||
ChargedCardSell chargedCardSell = (ChargedCardSell) baseSell;
|
||||
// 通过会员卡服务根据会员卡号获取会员信息
|
||||
MemberCard memberHistoryCard = memberCardService.getById(chargedCardSell.getMemberCardId());
|
||||
// 执行会员卡续卡的核心逻辑,并获取续卡后的会员信息
|
||||
MemberCard chargedMemberCard = chargedMemberCard(chargedCardSell, memberHistoryCard);
|
||||
|
||||
// 生成销售细单
|
||||
SellDetail sellDetail = createSellDetail(chargedCardSell, sell, chargedMemberCard);
|
||||
|
||||
// 通过销售支付服务添加销售支付列表
|
||||
sellpayService.addSellPayList(chargedCardSell.getSellPayList(), sell.getSellId());
|
||||
|
||||
// 通过支付服务设置销售的额外信息
|
||||
payService.setSellExtraInfo(sell.getSellId(), chargedMemberCard, BigDecimal.ZERO, BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行会员卡续卡的核心逻辑
|
||||
*
|
||||
* @param chargedCardSell 构建卡销售数据
|
||||
* @param memberHistoryCard 原会员卡信息
|
||||
* @return 续卡后的会员卡信息
|
||||
*/
|
||||
MemberCard chargedMemberCard(ChargedCardSell chargedCardSell, MemberCard memberHistoryCard) {
|
||||
// 获取原会员卡卡内金额
|
||||
BigDecimal memberBeforeAmount = memberHistoryCard.getAmount();
|
||||
// 获取原会员卡赠送金额
|
||||
BigDecimal memberBeforeGiveAmount = memberHistoryCard.getGiveAmount();
|
||||
|
||||
// 从构建卡销售数据中获取续卡表单
|
||||
ChargedCardForm chargedCardForm = chargedCardSell.getChargedCardForm();
|
||||
// 获取续卡充值金额
|
||||
BigDecimal chargedAmount = chargedCardForm.getChargedCardAmount();
|
||||
// 获取续卡赠送金额
|
||||
BigDecimal chargedGiveAmount = chargedCardForm.getChargedGiveAmount();
|
||||
|
||||
// 计算并设置续卡后的卡内金额
|
||||
memberHistoryCard.setAmount(BigDecimalUtil.add(memberBeforeAmount, chargedAmount));
|
||||
// 计算并设置续卡后的赠送金额
|
||||
memberHistoryCard.setGiveAmount(BigDecimalUtil.add(memberBeforeGiveAmount, chargedGiveAmount));
|
||||
|
||||
// 更新会员卡信息
|
||||
Boolean updated = memberCardService.updateById(memberHistoryCard);
|
||||
// 如果更新失败,抛出异常
|
||||
if (!updated) {
|
||||
throw new ApiException(CARD_AMOUNT_CHANGE);
|
||||
}
|
||||
|
||||
return memberHistoryCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建销售细单
|
||||
*
|
||||
* @param chargedCardSell 构建卡销售数据
|
||||
* @param sell 销售实体
|
||||
* @param memberCard 会员卡信息
|
||||
* @return 生成的销售细单
|
||||
*/
|
||||
SellDetail createSellDetail(ChargedCardSell chargedCardSell, Sell sell, MemberCard memberCard) {
|
||||
// 从构建卡销售数据中获取续卡表单
|
||||
ChargedCardForm chargedCardForm = chargedCardSell.getChargedCardForm();
|
||||
// 创建新的销售细单对象
|
||||
SellDetail sellDetail = new SellDetail();
|
||||
// 设置销售细单的销售 ID
|
||||
sellDetail.setSellId(sell.getSellId());
|
||||
// 设置销售细单的销售类型
|
||||
sellDetail.setSellType(sell.getSellType());
|
||||
// 设置销售细单的会员 ID
|
||||
sellDetail.setMemberId(sell.getMemberId());
|
||||
|
||||
// 设置销售细单的产品类型为续卡
|
||||
sellDetail.setProductType(PRODUCT_TYPE_CHARGED_CARD);
|
||||
// 设置销售细单的卡 ID
|
||||
sellDetail.setCardId(chargedCardForm.getCardId());
|
||||
// 设置销售细单的卡名称
|
||||
sellDetail.setCardName(chargedCardForm.getCardName());
|
||||
// 设置销售细单的续卡金额
|
||||
sellDetail.setAmount(chargedCardForm.getChargedCardAmount());
|
||||
// 设置销售细单的续卡赠送金额
|
||||
sellDetail.setGiveAmount(chargedCardForm.getChargedGiveAmount());
|
||||
// 设置销售细单的实际金额
|
||||
sellDetail.setRealAmount(chargedCardForm.getChargedCardAmount());
|
||||
sellDetail.setTotalRealAmount(chargedCardForm.getTotalRealAmount());
|
||||
// 设置销售细单的会员卡号
|
||||
sellDetail.setMemberCardId(memberCard.getMemberCardId());
|
||||
|
||||
// 保存销售细单
|
||||
sellDetailService.save(sellDetail);
|
||||
|
||||
|
||||
Card card = cardService.getById(chargedCardForm.getCardId());
|
||||
|
||||
|
||||
//该条目有服务人员
|
||||
List<ServerVo> serverList = chargedCardForm.getServerList();
|
||||
if (CollectionUtil.isNotEmpty(serverList)) {
|
||||
//如果是固定金额 固定金额除以人数 获取固定金额
|
||||
//如果是比例 计算出比例后提成 获取固定金额
|
||||
//业绩和提成均平均分
|
||||
//总提成
|
||||
BigDecimal totalPushMoney = BigDecimal.ZERO;
|
||||
//总业绩 为订单实付金额
|
||||
BigDecimal totalGradeMoney = sellDetail.getTotalRealAmount();
|
||||
//固定金额的话
|
||||
//按比例
|
||||
if (card.getCardPushPercent() != null) {
|
||||
//提成额 先转换为百分数
|
||||
BigDecimal pushPercent = BigDecimalUtil.div(card.getCardPushPercent(), new BigDecimal("100"));
|
||||
//折后价*百分数
|
||||
totalPushMoney = BigDecimalUtil.mul(totalGradeMoney, pushPercent);
|
||||
}
|
||||
|
||||
|
||||
//平均分
|
||||
BigDecimal pushMoney = BigDecimalUtil.div(totalPushMoney, new BigDecimal(serverList.size()));
|
||||
BigDecimal gradeMoney = BigDecimalUtil.div(totalGradeMoney, new BigDecimal(serverList.size()));
|
||||
|
||||
|
||||
//设置服务人员
|
||||
serverList.stream().forEach(server -> {
|
||||
SellDetailServer sellDetailServer = new SellDetailServer();
|
||||
sellDetailServer.setSellId(sell.getSellId());
|
||||
sellDetailServer.setSellDetailId(sellDetail.getSellDetailId());
|
||||
sellDetailServer.setServerId(server.getServerId());
|
||||
sellDetailServer.setServerName(server.getServerName());
|
||||
sellDetailServer.setServerPushMoney(pushMoney);
|
||||
sellDetailServer.setServerGrade(gradeMoney);
|
||||
sellDetailServerService.save(sellDetailServer);
|
||||
});
|
||||
}
|
||||
return sellDetail;
|
||||
}
|
||||
}
|
@@ -0,0 +1,261 @@
|
||||
package com.dd.admin.business.pay.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.dd.admin.business.card.entity.Card;
|
||||
import com.dd.admin.business.card.service.CardService;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
import com.dd.admin.business.memberCard.domain.MemberCardVo;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.pay.domain.*;
|
||||
import com.dd.admin.business.pay.service.AddSellDetailService;
|
||||
import com.dd.admin.business.pay.service.PayService;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.dd.admin.business.product.service.ProductService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.business.server.domain.ServerVo;
|
||||
import com.dd.admin.business.stock.entity.Stock;
|
||||
import com.dd.admin.business.stock.service.StockService;
|
||||
import com.dd.admin.business.stockDetail.entity.StockDetail;
|
||||
import com.dd.admin.business.stockDetail.service.StockDetailService;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.dd.admin.common.utils.BigDecimalUtil;
|
||||
import com.dd.admin.common.utils.StringUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.*;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.*;
|
||||
import static com.dd.admin.common.consts.MemberShopConst.*;
|
||||
|
||||
@Service
|
||||
public class SellDetailMemberProduct implements AddSellDetailService {
|
||||
|
||||
@Autowired
|
||||
private MemberCardService memberCardService;
|
||||
@Autowired
|
||||
private SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
private SellpayService sellpayService;
|
||||
@Autowired
|
||||
private PayService payService;
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
@Autowired
|
||||
private StockService stockService;
|
||||
@Autowired
|
||||
private StockDetailService stockDetailService;
|
||||
@Autowired
|
||||
private SellDetailServerService sellDetailServerService;
|
||||
@Override
|
||||
public void addSellDetail(Sell sell, BaseSell sellDto) {
|
||||
MemberProductSell memberProductSell = (MemberProductSell) sellDto;
|
||||
String memberCardId = memberProductSell.getMemberCardId();
|
||||
MemberCard memberCard = null;
|
||||
BigDecimal memberBeforeAmount = null;
|
||||
BigDecimal memberBeforeGiveAmount = null;
|
||||
|
||||
//如果有会员卡
|
||||
if(StringUtil.isNotEmpty(memberCardId)){
|
||||
//先获取消费前前金额
|
||||
MemberCard memberHistoryCard = memberCardService.getById(memberCardId);
|
||||
memberBeforeAmount = memberHistoryCard.getAmount();
|
||||
memberBeforeGiveAmount = memberHistoryCard.getGiveAmount();
|
||||
|
||||
//扣款
|
||||
memberCard = deductMemberCard(memberHistoryCard,memberProductSell.getSellPayList());
|
||||
}
|
||||
|
||||
//添加支付方式
|
||||
sellpayService.addSellPayList(memberProductSell.getSellPayList(),sell.getSellId());
|
||||
|
||||
//订单详情
|
||||
List<SellDetail> selldetailList = new ArrayList<>();
|
||||
|
||||
//获取订单详情
|
||||
List<ProductForm> productDetailFormList = memberProductSell.getProductFormList();
|
||||
MemberCard finalMemberCard = memberCard;
|
||||
//设置细单会员余额
|
||||
BigDecimal finalMemberBeforeAmount = memberBeforeAmount;
|
||||
BigDecimal finalMemberBeforeGiveAmount = memberBeforeGiveAmount;
|
||||
productDetailFormList.stream().forEach(productSellDetail -> {
|
||||
SellDetail selldetail = addSellDetail(productSellDetail,sell, finalMemberCard, finalMemberBeforeAmount, finalMemberBeforeGiveAmount);
|
||||
selldetailList.add(selldetail);
|
||||
});
|
||||
|
||||
payService.setSellExtraInfo(sell.getSellId(),memberCard,memberBeforeAmount,memberBeforeGiveAmount);
|
||||
}
|
||||
|
||||
//添加详情
|
||||
SellDetail addSellDetail(ProductForm productDetail , Sell sell, MemberCard memberCard,BigDecimal memberBeforeAmount,BigDecimal memberBeforeGiveAmount ){
|
||||
SellDetail sellDetail = new SellDetail();
|
||||
//3设置订单id 订单类型 订单状态
|
||||
sellDetail.setSellId(sell.getSellId());
|
||||
sellDetail.setSellType(sell.getSellType());
|
||||
sellDetail.setSellStatus(sell.getSellStatus());
|
||||
sellDetail.setMemberId(sell.getMemberId());
|
||||
|
||||
|
||||
//设置商品信息
|
||||
sellDetail.setProductType(PRODUCT_TYPE_PRODUCT);
|
||||
sellDetail.setProductId(productDetail.getProductId());
|
||||
sellDetail.setProductName(productDetail.getProductName());
|
||||
sellDetail.setAmount(productDetail.getProductAmount());
|
||||
sellDetail.setDiscount(productDetail.getDiscount());
|
||||
sellDetail.setCount(productDetail.getCount());
|
||||
sellDetail.setRealAmount(productDetail.getRealAmount());
|
||||
sellDetail.setTotalRealAmount(productDetail.getTotalRealAmount());
|
||||
//设置会员信息
|
||||
if(memberCard!=null){
|
||||
sellDetail.setCardId(memberCard.getCardId());
|
||||
sellDetail.setMemberCardId(memberCard.getMemberCardId());
|
||||
}
|
||||
|
||||
|
||||
Product product = productService.getById(productDetail.getProductId());
|
||||
|
||||
//减去库存信息
|
||||
if(product.getStockControl().equals(STOCK_CONTROL_YES)) {
|
||||
//创建入库总单
|
||||
Stock stock = new Stock();
|
||||
stock.setStockOutType(STOCK_OUT_TYPE_USE);
|
||||
stock.setStockTitle(DateUtil.formatChineseDate(new Date(), false, true) + SecurityUtil.getLoginUser().getDeptName() + "出库单");
|
||||
stock.setStockNo(StringUtil.getDateStringNow() + StringUtil.createCode(4));
|
||||
stock.setStockType(STOCK_OUT);
|
||||
stockService.save(stock);
|
||||
|
||||
StockDetail stockDetail = new StockDetail();
|
||||
stockDetail.setStockId(stock.getStockId());
|
||||
stockDetail.setProductId(product.getProductId());
|
||||
stockDetail.setProductName(product.getProductName());
|
||||
stockDetail.setCount(productDetail.getCount());
|
||||
|
||||
productService.subProductCount(product.getProductId(), productDetail.getCount());
|
||||
|
||||
stockDetailService.save(stockDetail);
|
||||
}
|
||||
|
||||
sellDetailService.save(sellDetail);
|
||||
|
||||
//该条目有服务人员
|
||||
List<ServerVo> serverList = productDetail.getServerList();
|
||||
if(CollectionUtil.isNotEmpty(serverList)) {
|
||||
//如果是固定金额 固定金额除以人数 获取固定金额
|
||||
//如果是比例 计算出比例后提成 获取固定金额
|
||||
//业绩和提成均平均分
|
||||
//总提成
|
||||
BigDecimal totalPushMoney = BigDecimal.ZERO;
|
||||
//总业绩 为订单实付金额
|
||||
BigDecimal totalGradeMoney = sellDetail.getTotalRealAmount();
|
||||
//固定金额的话
|
||||
if (product.getPushType().equals(PUSH_FIXED)) {
|
||||
totalPushMoney = BigDecimalUtil.mul(product.getPushAmount(),new BigDecimal(sellDetail.getCount()));
|
||||
|
||||
}
|
||||
//按比例
|
||||
if (product.getPushType().equals(PUSH_SCALE)) {
|
||||
//提成额 先转换为百分数
|
||||
BigDecimal pushPercent = BigDecimalUtil.div(product.getPushPercent(), new BigDecimal("100"));
|
||||
//折后价*百分数
|
||||
totalPushMoney = BigDecimalUtil.mul(totalGradeMoney, pushPercent);
|
||||
}
|
||||
|
||||
|
||||
//平均分
|
||||
BigDecimal pushMoney = BigDecimalUtil.div(totalPushMoney, new BigDecimal(serverList.size()));
|
||||
BigDecimal gradeMoney = BigDecimalUtil.div(totalGradeMoney, new BigDecimal(serverList.size()));
|
||||
|
||||
|
||||
//设置服务人员
|
||||
serverList.stream().forEach(server -> {
|
||||
SellDetailServer sellDetailServer = new SellDetailServer();
|
||||
sellDetailServer.setSellId(sell.getSellId());
|
||||
sellDetailServer.setSellDetailId(sellDetail.getSellDetailId());
|
||||
sellDetailServer.setServerId(server.getServerId());
|
||||
sellDetailServer.setServerName(server.getServerName());
|
||||
sellDetailServer.setServerPushMoney(pushMoney);
|
||||
sellDetailServer.setServerGrade(gradeMoney);
|
||||
sellDetailServerService.save(sellDetailServer);
|
||||
});
|
||||
|
||||
}
|
||||
return sellDetail;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//减去卡金
|
||||
MemberCard deductMemberCard(MemberCard memberHistoryCard, List<Sellpay> sellPayList){
|
||||
//消费前会员卡余额
|
||||
BigDecimal memberBeforeAmount = memberHistoryCard.getAmount();
|
||||
BigDecimal memberBeforeGiveAmount = memberHistoryCard.getGiveAmount();
|
||||
BigDecimal memberBeforeTotalAmount = BigDecimalUtil.add(memberBeforeAmount,memberBeforeGiveAmount);
|
||||
//订单需要支付的卡金
|
||||
BigDecimal memberCardCost = sellPayList.stream()
|
||||
.filter(p -> p.getPayType().equals(PAY_TYPE_CARD))
|
||||
.map(Sellpay::getAmount)
|
||||
.findFirst().orElse(BigDecimal.ZERO);
|
||||
//订单需要支付的金额 先扣卡金 退款仅退卡金
|
||||
//如果卡金足够支付
|
||||
try {
|
||||
if(memberBeforeAmount.compareTo(memberCardCost) > -1){
|
||||
BigDecimal memberAfterAmount = BigDecimalUtil.sub(memberBeforeAmount, memberCardCost);
|
||||
memberHistoryCard.setAmount(memberAfterAmount);
|
||||
//卡总金额是否够支付
|
||||
}else if(memberBeforeTotalAmount.compareTo(memberCardCost) > -1){
|
||||
//这里已经出现了卡金不够支付的情况了 所以置为0 减去的金额是赠送金需要支付的
|
||||
BigDecimal memberCardGiveCost = BigDecimalUtil.sub(memberCardCost, memberBeforeAmount);
|
||||
|
||||
sellPayList.stream().forEach(sellpay -> {
|
||||
if(sellpay.getPayType().equals(PAY_TYPE_CARD)){
|
||||
sellpay.setAmount(memberBeforeAmount);
|
||||
}
|
||||
});
|
||||
|
||||
memberHistoryCard.setAmount(BigDecimal.ZERO);
|
||||
|
||||
if(memberBeforeGiveAmount.compareTo(memberCardGiveCost) > -1){
|
||||
Sellpay sellpay = new Sellpay();
|
||||
sellpay.setPayType(PAY_TYPE_CARD_GIVE);
|
||||
sellpay.setAmount(memberCardGiveCost);
|
||||
sellpay.setPayName(PAY_TYPE_CARD_GIVE_NAME);
|
||||
sellPayList.add(sellpay);
|
||||
|
||||
BigDecimal memAfterGiveAmount = BigDecimalUtil.sub(memberBeforeGiveAmount, memberCardGiveCost);
|
||||
memberHistoryCard.setGiveAmount(memAfterGiveAmount);
|
||||
}
|
||||
}else{
|
||||
throw new ApiException(MEMBER_CARD_NOT_SUFFICIENT_FUNDS);
|
||||
}
|
||||
|
||||
Boolean b = memberCardService.updateById(memberHistoryCard);
|
||||
//监听数据 乐观锁改变
|
||||
if(!b){
|
||||
throw new ApiException(CARD_AMOUNT_CHANGE);
|
||||
}
|
||||
}catch (ArithmeticException e) {
|
||||
// 处理数值计算异常,并提供更详细的错误信息
|
||||
throw new RuntimeException("数值计算出现异常:" + e.getMessage(), e);
|
||||
}
|
||||
|
||||
return memberHistoryCard;
|
||||
}
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
package com.dd.admin.business.product.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.business.file.service.FileService;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.dd.admin.business.product.domain.ProductVo;
|
||||
import com.dd.admin.business.product.domain.ProductDto;
|
||||
import com.dd.admin.business.product.service.ProductService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Api(tags = "商品")
|
||||
@RestController
|
||||
public class ProductController {
|
||||
|
||||
@Autowired
|
||||
ProductService productService;
|
||||
|
||||
@Autowired
|
||||
FileService fileService;
|
||||
|
||||
@ApiOperation(value = "商品-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/product/page")
|
||||
@OperLog(operModule = "获取商品列表",operType = OperType.QUERY,operDesc = "获取商品列表")
|
||||
public ResultBean<IPage<ProductVo>> page(ProductDto productDto) {
|
||||
productDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<ProductVo> pageInfo = productService.selectProductPage(productDto);
|
||||
pageInfo.getRecords().stream().forEach(productVo -> {
|
||||
String fileAuthUrl = fileService.getFileAuthUrl(productVo.getProductImage());
|
||||
productVo.setProductImageUrl(fileAuthUrl);
|
||||
});
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/product/list")
|
||||
public ResultBean<List<ProductVo>> list(ProductDto productDto) {
|
||||
productDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<ProductVo> list = productService.selectProductList(productDto);
|
||||
list.stream().forEach(productVo -> {
|
||||
String fileAuthUrl = fileService.getFileAuthUrl(productVo.getProductImage());
|
||||
productVo.setProductImageUrl(fileAuthUrl);
|
||||
});
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/product/add")
|
||||
@OperLog(operModule = "商品-添加",operType = OperType.ADD,operDesc = "商品-添加")
|
||||
public ResultBean<Product> add(@RequestBody @Validated ProductDto productDto) {
|
||||
Product product = BeanUtil.copyProperties(productDto, Product.class);
|
||||
productService.save(product);
|
||||
return ResultBean.success(product);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/product/{productId}")
|
||||
public ResultBean<ProductVo> get(@PathVariable @NotBlank String productId) {
|
||||
Product product = productService.getById(productId);
|
||||
ProductVo productVo = BeanUtil.copyProperties(product,ProductVo.class);
|
||||
return ResultBean.success(productVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/product/update")
|
||||
public ResultBean<Product> update(@RequestBody @Validated(UpdateGroup.class) ProductDto productDto) {
|
||||
Product product = BeanUtil.copyProperties(productDto, Product.class);
|
||||
productService.updateById(product);
|
||||
return ResultBean.success(product);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "商品-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/product/delete/{productId}")
|
||||
public ResultBean<Product> delete(@PathVariable @NotBlank String productId) {
|
||||
Boolean b = productService.removeById(productId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,114 @@
|
||||
package com.dd.admin.business.product.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="商品接收对象")
|
||||
public class ProductDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "商品id")
|
||||
@NotBlank(message = "商品id不能为空",groups = UpdateGroup.class)
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
@NotBlank(message = "分类不能为空")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
@NotBlank(message = "分类不能为空")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
@NotBlank(message = "商品名不能为空")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品金额")
|
||||
private BigDecimal productAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品会员金额")
|
||||
private BigDecimal productMemberAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品图片")
|
||||
private String productImage;
|
||||
|
||||
@ApiModelProperty(value = "库存数量")
|
||||
private Long productCount;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "提成金额")
|
||||
private BigDecimal pushAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
private BigDecimal pushPercent;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
private Integer productStatus;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "0不开启 1开启")
|
||||
@NotNull(message = "库存管理不能为空")
|
||||
private Integer stockControl;
|
||||
|
||||
@ApiModelProperty(value = "0固定金额 1比例")
|
||||
@NotNull(message = "提成规则不能为空")
|
||||
private Integer pushType;
|
||||
|
||||
@ApiModelProperty(value = "搜索关键字")
|
||||
private String keyword;
|
||||
}
|
@@ -0,0 +1,105 @@
|
||||
package com.dd.admin.business.product.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="商品返回对象")
|
||||
public class ProductVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "商品id")
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品金额")
|
||||
private BigDecimal productAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品会员金额")
|
||||
private BigDecimal productMemberAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品图片")
|
||||
private String productImage;
|
||||
|
||||
@ApiModelProperty(value = "商品图片")
|
||||
private String productImageUrl;
|
||||
|
||||
@ApiModelProperty(value = "库存数量")
|
||||
private Long productCount;
|
||||
|
||||
@ApiModelProperty(value = "提成金额")
|
||||
private BigDecimal pushAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
private BigDecimal pushPercent;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
private Integer productStatus;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "0不开启 1开启")
|
||||
private Integer stockControl;
|
||||
|
||||
@ApiModelProperty(value = "0固定金额 1比例")
|
||||
private Integer pushType;
|
||||
|
||||
}
|
132
src/main/java/com/dd/admin/business/product/entity/Product.java
Normal file
132
src/main/java/com/dd/admin/business/product/entity/Product.java
Normal file
@@ -0,0 +1,132 @@
|
||||
package com.dd.admin.business.product.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_product")
|
||||
@ApiModel(value="Product对象", description="商品")
|
||||
public class Product implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "商品id")
|
||||
@TableId(value = "PRODUCT_ID", type = IdType.ASSIGN_UUID)
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
@TableField("CATEGORY_ID")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "分类名")
|
||||
@TableField("CATEGORY_NAME")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
@TableField("PRODUCT_NAME")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品金额")
|
||||
@TableField("PRODUCT_AMOUNT")
|
||||
private BigDecimal productAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品会员金额")
|
||||
@TableField("PRODUCT_MEMBER_AMOUNT")
|
||||
private BigDecimal productMemberAmount;
|
||||
|
||||
@ApiModelProperty(value = "商品图片")
|
||||
@TableField("PRODUCT_IMAGE")
|
||||
private String productImage;
|
||||
|
||||
@ApiModelProperty(value = "库存数量")
|
||||
@TableField("PRODUCT_COUNT")
|
||||
private Long productCount;
|
||||
|
||||
@ApiModelProperty(value = "库存数量")
|
||||
@TableField(exist = false)
|
||||
private Long count;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "提成金额")
|
||||
@TableField("PUSH_AMOUNT")
|
||||
private BigDecimal pushAmount;
|
||||
|
||||
@ApiModelProperty(value = "提成比例")
|
||||
@TableField("PUSH_PERCENT")
|
||||
private BigDecimal pushPercent;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1下架")
|
||||
@TableField("PRODUCT_STATUS")
|
||||
private Integer productStatus;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
@TableField("VERSION")
|
||||
@Version
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "0不开启 1开启")
|
||||
@TableField("STOCK_CONTROL")
|
||||
private Integer stockControl;
|
||||
|
||||
@ApiModelProperty(value = "0固定金额 1比例")
|
||||
@TableField("PUSH_TYPE")
|
||||
private Integer pushType;
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.dd.admin.business.product.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.product.domain.ProductVo;
|
||||
import com.dd.admin.business.product.domain.ProductDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface ProductMapper extends BaseMapper<Product> {
|
||||
|
||||
IPage<ProductVo> selectProductPage(Page<ProductVo> page, @Param("productDto") ProductDto productDto);
|
||||
|
||||
List<ProductVo> selectProductList(@Param("productDto") ProductDto productDto);
|
||||
}
|
@@ -0,0 +1,81 @@
|
||||
<?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.dd.admin.business.product.mapper.ProductMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.product.entity.Product">
|
||||
<id column="PRODUCT_ID" property="productId" />
|
||||
<result column="CATEGORY_ID" property="categoryId" />
|
||||
<result column="CATEGORY_NAME" property="categoryName" />
|
||||
<result column="PRODUCT_NAME" property="productName" />
|
||||
<result column="PRODUCT_AMOUNT" property="productAmount" />
|
||||
<result column="PRODUCT_MEMBER_AMOUNT" property="productMemberAmount" />
|
||||
<result column="PRODUCT_IMAGE" property="productImage" />
|
||||
<result column="PRODUCT_COUNT" property="productCount" />
|
||||
<result column="PUSH_AMOUNT" property="pushAmount" />
|
||||
<result column="PUSH_PERCENT" property="pushPercent" />
|
||||
<result column="PRODUCT_STATUS" property="productStatus" />
|
||||
<result column="VERSION" property="version" />
|
||||
<result column="DELETED" property="deleted" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
PRODUCT_ID, CATEGORY_ID, CATEGORY_NAME, PRODUCT_NAME, PRODUCT_AMOUNT, PRODUCT_MEMBER_AMOUNT, PRODUCT_IMAGE, PRODUCT_COUNT, PUSH_AMOUNT, PUSH_PERCENT, PRODUCT_STATUS, VERSION, DELETED, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID
|
||||
</sql>
|
||||
|
||||
<select id="selectProductPage" resultType="com.dd.admin.business.product.domain.ProductVo">
|
||||
select
|
||||
*
|
||||
from business_product where 1 = 1
|
||||
<if test="productDto.keyword != null and productDto.keyword != ''">
|
||||
and PRODUCT_NAME like CONCAT('%', #{productDto.keyword}, '%')
|
||||
</if>
|
||||
<if test="productDto.categoryId != null and productDto.categoryId != ''">
|
||||
and CATEGORY_ID = #{productDto.categoryId}
|
||||
</if>
|
||||
<if test="productDto.deleted != null">
|
||||
and DELETED = #{productDto.deleted}
|
||||
</if>
|
||||
<if test="productDto.stockControl != null">
|
||||
and STOCK_CONTROL = #{productDto.stockControl}
|
||||
</if>
|
||||
<if test="productDto.productStatus != null">
|
||||
and PRODUCT_STATUS = #{productDto.productStatus}
|
||||
</if>
|
||||
<if test="productDto.shopId != null and productDto.shopId != ''">
|
||||
and shop_id = #{productDto.shopId}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectProductList" resultType="com.dd.admin.business.product.domain.ProductVo">
|
||||
select
|
||||
*
|
||||
from business_product where 1 = 1
|
||||
<if test="productDto.categoryId != null and productDto.categoryId != ''">
|
||||
and category_id = #{productDto.categoryId}
|
||||
</if>
|
||||
<if test="productDto.deleted != null">
|
||||
and DELETED = #{productDto.deleted}
|
||||
</if>
|
||||
<if test="productDto.stockControl != null">
|
||||
and STOCK_CONTROL = #{productDto.stockControl}
|
||||
</if>
|
||||
<if test="productDto.shopId != null and productDto.shopId != ''">
|
||||
and shop_id = #{productDto.shopId}
|
||||
</if>
|
||||
<if test="productDto.productStatus != null">
|
||||
and PRODUCT_STATUS = #{productDto.productStatus}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,34 @@
|
||||
package com.dd.admin.business.product.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.product.domain.ProductVo;
|
||||
import com.dd.admin.business.product.domain.ProductDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
public interface ProductService extends IService<Product> {
|
||||
|
||||
//商品-分页列表
|
||||
IPage<ProductVo> selectProductPage(ProductDto productDto);
|
||||
|
||||
//商品-列表
|
||||
List<ProductVo> selectProductList(ProductDto productDto);
|
||||
|
||||
Product addProductCount(String productId,Long count);
|
||||
|
||||
Product subProductCount(String productId,Long count);
|
||||
|
||||
//根据机构shopId查询商品库存数量排行(可指定返回数量)
|
||||
List<Product> getProductStockRankByShopId(String shopId, Integer limit);
|
||||
|
||||
Integer selectProductCount(String shopId);
|
||||
}
|
@@ -0,0 +1,89 @@
|
||||
package com.dd.admin.business.product.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.dd.admin.business.product.mapper.ProductMapper;
|
||||
import com.dd.admin.business.product.service.ProductService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.product.domain.ProductVo;
|
||||
import com.dd.admin.business.product.domain.ProductDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-05-23
|
||||
*/
|
||||
@Service
|
||||
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
|
||||
|
||||
@Override
|
||||
public IPage<ProductVo> selectProductPage(ProductDto productDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectProductPage(page,productDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductVo> selectProductList(ProductDto productDto) {
|
||||
return baseMapper.selectProductList(productDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Product addProductCount(String productId, Long count) {
|
||||
Product product = this.getById(productId);
|
||||
product.setProductCount(product.getProductCount() + count);
|
||||
updateById(product);
|
||||
return product;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Product subProductCount(String productId, Long count) {
|
||||
Product product = this.getById(productId);
|
||||
product.setProductCount(product.getProductCount() - count);
|
||||
if(product.getProductCount() < 0){
|
||||
throw new ApiException("商品库存不足");
|
||||
}
|
||||
updateById(product);
|
||||
return product;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据机构shopId查询商品库存数量排行(可指定返回数量)
|
||||
*
|
||||
* @param shopId 机构id
|
||||
* @param limit 返回的排行数量限制(例如取前几名),如果为null则查询全部符合条件的商品排行
|
||||
* @return 按库存数量排序后的商品列表(库存数量从大到小排序)
|
||||
*/
|
||||
@Override
|
||||
public List<Product> getProductStockRankByShopId(String shopId, Integer limit) {
|
||||
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 根据shopId添加筛选条件,只查询指定机构下的商品
|
||||
queryWrapper.eq(Product::getShopId, shopId);
|
||||
// 按照库存数量字段(PRODUCT_COUNT)进行降序排序(从大到小)
|
||||
queryWrapper.orderByDesc(Product::getProductCount);
|
||||
|
||||
if (limit!= null) {
|
||||
// 如果传入了数量限制,则添加限制条件,只取前limit条记录
|
||||
queryWrapper.last("LIMIT " + limit);
|
||||
}
|
||||
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectProductCount(String shopId) {
|
||||
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Product::getShopId, shopId);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
}
|
@@ -0,0 +1,132 @@
|
||||
package com.dd.admin.business.sell.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.dd.admin.business.sell.domain.CancelSellDto;
|
||||
import com.dd.admin.business.sell.enums.CancelSellServiceEnum;
|
||||
import com.dd.admin.business.sell.service.CancelSellService;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperLog;
|
||||
import com.dd.admin.common.aop.operationLog.aop.OperType;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.domain.SellVo;
|
||||
import com.dd.admin.business.sell.domain.SellDto;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.PAY_SELL_CANCEL_ERROR;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.SELL_STATUS_REVOCATION;
|
||||
import static com.dd.admin.common.consts.MemberShopConst.SELL_STATUS_CANCEL;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Api(tags = "订单")
|
||||
@RestController
|
||||
public class SellController {
|
||||
|
||||
@Autowired
|
||||
SellService sellService;
|
||||
|
||||
@Autowired
|
||||
Map<String, CancelSellService> cancelSellServiceMap;
|
||||
|
||||
@Autowired
|
||||
SellDetailService sellDetailService;
|
||||
|
||||
@ApiOperation(value = "订单-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/sell/page")
|
||||
@OperLog(operModule = "获取订单列表",operType = OperType.QUERY,operDesc = "获取订单列表")
|
||||
public ResultBean<IPage<SellVo>> page(SellDto sellDto) {
|
||||
sellDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
IPage<SellVo> pageInfo = sellService.selectSellPage(sellDto);
|
||||
sellService.setSellDetail(pageInfo.getRecords());
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/sell/list")
|
||||
public ResultBean<List<SellVo>> list(SellDto sellDto) {
|
||||
sellDto.setShopId(SecurityUtil.getLoginUser().getDeptId());
|
||||
List<SellVo> list = sellService.selectSellList(sellDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/sell/add")
|
||||
public ResultBean<Sell> add(@RequestBody @Validated SellDto sellDto) {
|
||||
Sell sell = BeanUtil.copyProperties(sellDto, Sell.class);
|
||||
sellService.save(sell);
|
||||
return ResultBean.success(sell);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/sell/{sellId}")
|
||||
public ResultBean<SellVo> get(@PathVariable @NotBlank String sellId) {
|
||||
Sell sell = sellService.getById(sellId);
|
||||
SellVo sellVo = BeanUtil.copyProperties(sell,SellVo.class);
|
||||
return ResultBean.success(sellVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/sell/update")
|
||||
public ResultBean<Sell> update(@RequestBody @Validated(UpdateGroup.class) SellDto sellDto) {
|
||||
Sell sell = BeanUtil.copyProperties(sellDto, Sell.class);
|
||||
sellService.updateById(sell);
|
||||
return ResultBean.success(sell);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/sell/delete/{sellId}")
|
||||
public ResultBean<Sell> delete(@PathVariable @NotBlank String sellId) {
|
||||
Boolean b = sellService.removeById(sellId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单-销单")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@PostMapping("/admin/sell/cancel")
|
||||
@Transactional
|
||||
public ResultBean<Sell> cancel(@RequestBody @Validated CancelSellDto cancelSellDto) {
|
||||
Sell sell = sellService.getById(cancelSellDto.getSellId());
|
||||
if(sell.getSellStatus().equals(SELL_STATUS_CANCEL)){
|
||||
throw new ApiException(PAY_SELL_CANCEL_ERROR);
|
||||
}
|
||||
//销单
|
||||
cancelSellServiceMap.get(CancelSellServiceEnum.getEnumBySellType(sell.getSellType()).getServiceName()).cancel(sell);
|
||||
sell.setSellStatus(SELL_STATUS_REVOCATION);
|
||||
sell.setRemark(cancelSellDto.getRemark());
|
||||
sellService.updateById(sell);
|
||||
sellDetailService.updateSellDetailStatus(sell.getSellId());
|
||||
return ResultBean.success();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package com.dd.admin.business.sell.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@ApiModel(value="销售表接收对象")
|
||||
public class CancelSellDto {
|
||||
@NotBlank(message = "订单id不能为空")
|
||||
private String sellId;
|
||||
|
||||
@NotBlank(message = "撤销原因不能为空")
|
||||
private String remark;
|
||||
}
|
117
src/main/java/com/dd/admin/business/sell/domain/SellDto.java
Normal file
117
src/main/java/com/dd/admin/business/sell/domain/SellDto.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package com.dd.admin.business.sell.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单接收对象")
|
||||
public class SellDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
@NotBlank(message = "订单id不能为空",groups = UpdateGroup.class)
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
private String sellNo;
|
||||
|
||||
@ApiModelProperty(value = "流水号")
|
||||
private String serialNo;
|
||||
|
||||
@ApiModelProperty(value = "会员ID")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡ID")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
private String memberCardName;
|
||||
|
||||
@ApiModelProperty(value = "会员卡编号")
|
||||
private String memberCardNo;
|
||||
|
||||
@ApiModelProperty(value = "会员名称")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "消费金额")
|
||||
private BigDecimal sellAmount;
|
||||
|
||||
@ApiModelProperty(value = "实际入账")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "1商品 2开卡 ")
|
||||
@TableField("SELL_TYPE")
|
||||
private Integer sellType;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer sellStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
private BigDecimal memberCardAfterAmount;
|
||||
|
||||
private BigDecimal memberCardBeforeAmount;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
private BigDecimal memberCardAfterGiveAmount;
|
||||
|
||||
private BigDecimal memberCardBeforeGiveAmount;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "搜索关键字")
|
||||
private String keyword;
|
||||
}
|
122
src/main/java/com/dd/admin/business/sell/domain/SellVo.java
Normal file
122
src/main/java/com/dd/admin/business/sell/domain/SellVo.java
Normal file
@@ -0,0 +1,122 @@
|
||||
package com.dd.admin.business.sell.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import com.dd.admin.business.sellDetail.domain.SellDetailVo;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellPay.domain.SellpayVo;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单返回对象")
|
||||
public class SellVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
private String sellNo;
|
||||
|
||||
@ApiModelProperty(value = "流水号")
|
||||
private String serialNo;
|
||||
|
||||
@ApiModelProperty(value = "会员ID")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡ID")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
private String memberCardName;
|
||||
|
||||
@ApiModelProperty(value = "会员卡编号")
|
||||
private String memberCardNo;
|
||||
|
||||
@ApiModelProperty(value = "会员名称")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "消费金额")
|
||||
private BigDecimal sellAmount;
|
||||
|
||||
@ApiModelProperty(value = "实际入账")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "1商品 2开卡 ")
|
||||
@TableField("SELL_TYPE")
|
||||
private Integer sellType;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer sellStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
private BigDecimal memberCardAfterAmount;
|
||||
|
||||
private BigDecimal memberCardBeforeAmount;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
private BigDecimal memberCardAfterGiveAmount;
|
||||
|
||||
private BigDecimal memberCardBeforeGiveAmount;
|
||||
|
||||
@ApiModelProperty("订单详情")
|
||||
private List<SellDetail> sellDetailList;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
private List<Sellpay> sellPayList;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
140
src/main/java/com/dd/admin/business/sell/entity/Sell.java
Normal file
140
src/main/java/com/dd/admin/business/sell/entity/Sell.java
Normal file
@@ -0,0 +1,140 @@
|
||||
package com.dd.admin.business.sell.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("business_sell")
|
||||
@ApiModel(value="Sell对象", description="订单")
|
||||
public class Sell implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
@TableId(value = "SELL_ID", type = IdType.ASSIGN_UUID)
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
@TableField("SELL_NO")
|
||||
private String sellNo;
|
||||
|
||||
@ApiModelProperty(value = "流水号")
|
||||
@TableField("SERIAL_NO")
|
||||
private String serialNo;
|
||||
|
||||
@ApiModelProperty(value = "会员ID")
|
||||
@TableField("MEMBER_ID")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡ID")
|
||||
@TableField("MEMBER_CARD_ID")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "会员卡名")
|
||||
@TableField("MEMBER_CARD_NAME")
|
||||
private String memberCardName;
|
||||
|
||||
@ApiModelProperty(value = "会员卡编号")
|
||||
@TableField("MEMBER_CARD_NO")
|
||||
private String memberCardNo;
|
||||
|
||||
@ApiModelProperty(value = "会员名称")
|
||||
@TableField("MEMBER_NAME")
|
||||
private String memberName;
|
||||
|
||||
@ApiModelProperty(value = "消费金额")
|
||||
@TableField("SELL_AMOUNT")
|
||||
private BigDecimal sellAmount;
|
||||
|
||||
@ApiModelProperty(value = "实际入账")
|
||||
@TableField("REAL_AMOUNT")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "1商品 2开卡 ")
|
||||
@TableField("SELL_TYPE")
|
||||
private Integer sellType;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
@TableField("SELL_STATUS")
|
||||
private Integer sellStatus;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
|
||||
@ApiModelProperty(value = "乐观锁字段")
|
||||
@TableField("VERSION")
|
||||
@Version
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
@TableField(value = "SHOP_ID", fill = FieldFill.INSERT)
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
@TableField(value = "SHOP_NAME", fill = FieldFill.INSERT)
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
@TableField(value = "CREATE_NAME", fill = FieldFill.INSERT)
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@TableField(value = "CREATE_ID", fill = FieldFill.INSERT)
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
@TableField(value = "UPDATE_NAME", fill = FieldFill.UPDATE)
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
@TableField(value = "UPDATE_ID", fill = FieldFill.UPDATE)
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
@TableField("MEMBER_CARD_AFTER_AMOUNT")
|
||||
private BigDecimal memberCardAfterAmount;
|
||||
|
||||
@TableField("MEMBER_CARD_BEFORE_AMOUNT")
|
||||
private BigDecimal memberCardBeforeAmount;
|
||||
|
||||
@ApiModelProperty(value = "消费后金额")
|
||||
@TableField("MEMBER_CARD_AFTER_GIVE_AMOUNT")
|
||||
private BigDecimal memberCardAfterGiveAmount;
|
||||
|
||||
@TableField("MEMBER_CARD_BEFORE_GIVE_AMOUNT")
|
||||
private BigDecimal memberCardBeforeGiveAmount;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
package com.dd.admin.business.sell.enums;
|
||||
|
||||
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.PAY_SELL_CANCEL_ERROR;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.*;
|
||||
|
||||
|
||||
public enum CancelSellServiceEnum {
|
||||
CANCEL_MEMBER_BUILD_CARD(SELL_TYPE_BUILD_CARD,"cancelMemberBuildCard"),
|
||||
CANCEL_MEMBER_CHARGED_CARD(SELL_TYPE_CHARGED_CARD,"cancelMemberChargedCard"),
|
||||
CANCEL_MEMBER_PRODUCT(SELL_TYPE_PRODUCT,"cancelMemberProduct"),
|
||||
;
|
||||
|
||||
private Integer sellType;
|
||||
private String serviceName;
|
||||
|
||||
CancelSellServiceEnum(Integer sellType, String serviceName) {
|
||||
this.sellType = sellType;
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public Integer getSellType() {
|
||||
return sellType;
|
||||
}
|
||||
|
||||
public void setSellType(Integer sellType) {
|
||||
this.sellType = sellType;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
public void setServiceName(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public static CancelSellServiceEnum getEnumBySellType(Integer sellType) {
|
||||
CancelSellServiceEnum[] cancelSellServiceEnums = CancelSellServiceEnum.values();
|
||||
return Arrays.stream(cancelSellServiceEnums)
|
||||
.filter(cancelSellServiceEnum -> cancelSellServiceEnum.getSellType().equals(sellType))
|
||||
.findFirst().orElseThrow(() -> new ApiException(PAY_SELL_CANCEL_ERROR));
|
||||
}
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
package com.dd.admin.business.sell.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.dd.admin.business.sell.domain.SellVo;
|
||||
import com.dd.admin.business.sell.domain.SellDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Mapper
|
||||
public interface SellMapper extends BaseMapper<Sell> {
|
||||
|
||||
IPage<SellVo> selectSellPage(Page<SellVo> page, @Param("sellDto") SellDto sellDto);
|
||||
|
||||
List<SellVo> selectSellList(@Param("sellDto") SellDto sellDto);
|
||||
|
||||
Integer selectTodayCount(@Param("shopId") String shopId);
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
<?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.dd.admin.business.sell.mapper.SellMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.dd.admin.business.sell.entity.Sell">
|
||||
<id column="SELL_ID" property="sellId" />
|
||||
<result column="SELL_NO" property="sellNo" />
|
||||
<result column="SERIAL_NO" property="serialNo" />
|
||||
<result column="MEMBER_ID" property="memberId" />
|
||||
<result column="MEMBER_NAME" property="memberName" />
|
||||
<result column="SELL_AMOUNT" property="sellAmount" />
|
||||
<result column="REAL_AMOUNT" property="realAmount" />
|
||||
<result column="SELL_TYPE" property="sellType" />
|
||||
<result column="SELL_STATUS" property="sellStatus" />
|
||||
<result column="DELETED" property="deleted" />
|
||||
<result column="VERSION" property="version" />
|
||||
<result column="SHOP_ID" property="shopId" />
|
||||
<result column="SHOP_NAME" property="shopName" />
|
||||
<result column="CREATE_NAME" property="createName" />
|
||||
<result column="CREATE_TIME" property="createTime" />
|
||||
<result column="CREATE_ID" property="createId" />
|
||||
<result column="UPDATE_TIME" property="updateTime" />
|
||||
<result column="UPDATE_NAME" property="updateName" />
|
||||
<result column="UPDATE_ID" property="updateId" />
|
||||
<result column="MEMBER_CARD_AFTER_AMOUNT" property="memberCardAfterAmount" />
|
||||
<result column="MEMBER_CARD_BEFORE_AMOUNT" property="memberCardBeforeAmount" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
SELL_ID, SELL_NO, SERIAL_NO, MEMBER_ID, MEMBER_CARD_ID,MEMBER_NAME, SELL_AMOUNT, REAL_AMOUNT, SELL_TYPE, SELL_STATUS, DELETED, VERSION, SHOP_ID, SHOP_NAME, CREATE_NAME, CREATE_TIME, CREATE_ID, UPDATE_TIME, UPDATE_NAME, UPDATE_ID, MEMBER_CARD_AFTER_AMOUNT, MEMBER_CARD_BEFORE_AMOUNT,MEMBER_CARD_AFTER_GIVE_AMOUNT, MEMBER_CARD_BEFORE_GIVE_AMOUNT
|
||||
</sql>
|
||||
|
||||
<select id="selectSellPage" resultType="com.dd.admin.business.sell.domain.SellVo">
|
||||
select
|
||||
*
|
||||
from business_sell where 1 = 1
|
||||
<if test="sellDto.shopId != null and sellDto.shopId != ''">
|
||||
and shop_id = #{sellDto.shopId}
|
||||
</if>
|
||||
<if test="sellDto.keyword != null and sellDto.keyword != ''">
|
||||
and (SELL_NO like CONCAT('%', #{sellDto.keyword}, '%')
|
||||
or MEMBER_NAME like concat('%',#{sellDto.keyword},'%'))
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectSellList" resultType="com.dd.admin.business.sell.domain.SellVo">
|
||||
select
|
||||
*
|
||||
from business_sell where 1 = 1
|
||||
<if test="sellDto.shopId != null and sellDto.shopId != ''">
|
||||
and shop_id = #{sellDto.shopId}
|
||||
</if>
|
||||
order by create_time desc
|
||||
</select>
|
||||
<select id="selectTodayCount" resultType="java.lang.Integer">
|
||||
select count(*) from business_sell where shop_id = #{shopId} and DATE(create_time) = CURDATE()
|
||||
</select>
|
||||
</mapper>
|
@@ -0,0 +1,9 @@
|
||||
package com.dd.admin.business.sell.service;
|
||||
|
||||
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
|
||||
public interface CancelSellService {
|
||||
|
||||
void cancel(Sell sell);
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package com.dd.admin.business.sell.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dd.admin.business.sell.domain.SellVo;
|
||||
import com.dd.admin.business.sell.domain.SellDto;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
public interface SellService extends IService<Sell> {
|
||||
|
||||
//订单-分页列表
|
||||
IPage<SellVo> selectSellPage(SellDto sellDto);
|
||||
|
||||
//订单-列表
|
||||
List<SellVo> selectSellList(SellDto sellDto);
|
||||
|
||||
Integer selectTodayCount(String shopId);
|
||||
|
||||
//填充销售详情
|
||||
public void setSellDetail(List<SellVo> sellVoList);
|
||||
|
||||
Integer selectSellCount(String shopId);
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
package com.dd.admin.business.sell.service.impl;
|
||||
|
||||
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.CancelSellService;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.PAY_SELL_CARD_AMOUNT_CHANGE;
|
||||
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CancelMemberBuildCard implements CancelSellService {
|
||||
@Autowired
|
||||
MemberCardService memberCardService;
|
||||
@Autowired
|
||||
SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
SellService sellService;
|
||||
@Override
|
||||
public void cancel(Sell sell) {
|
||||
Sell extraSellInfo = sellService.getById(sell.getSellId());
|
||||
|
||||
//消费时用的哪张会员卡
|
||||
MemberCard membercard = memberCardService.getById(extraSellInfo.getMemberCardId());
|
||||
BigDecimal sellCardAmount = extraSellInfo.getMemberCardAfterAmount();
|
||||
BigDecimal sellCardGiveAmount = extraSellInfo.getMemberCardAfterGiveAmount();
|
||||
log.info("订单显示的卡余额:"+sellCardAmount);
|
||||
BigDecimal cardAmount = membercard.getAmount();
|
||||
BigDecimal cardGiveAmount = membercard.getGiveAmount();
|
||||
log.info("当前卡余额:"+cardAmount);
|
||||
//当前余额和订单充值余额比较
|
||||
if(sellCardAmount.compareTo(cardAmount) != 0 || cardGiveAmount.compareTo(sellCardGiveAmount) != 0){
|
||||
throw new ApiException(PAY_SELL_CARD_AMOUNT_CHANGE);
|
||||
}
|
||||
//删除卡
|
||||
memberCardService.removeById(membercard);
|
||||
}
|
||||
}
|
@@ -0,0 +1,65 @@
|
||||
package com.dd.admin.business.sell.service.impl;
|
||||
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.CancelSellService;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.utils.BigDecimalUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.CARD_AMOUNT_CHANGE;
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.PAY_SELL_CARD_AMOUNT_NOT_SUFFICIENT_FUNDS;
|
||||
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CancelMemberChargedCard implements CancelSellService {
|
||||
@Autowired
|
||||
MemberCardService memberCardService;
|
||||
@Autowired
|
||||
SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
SellService sellService;
|
||||
@Override
|
||||
public void cancel(Sell sell) {
|
||||
Sell extraSellInfo = sellService.getById(sell.getSellId());
|
||||
//消费时用的哪张会员卡
|
||||
MemberCard memberCard = memberCardService.getById(extraSellInfo.getMemberCardId());
|
||||
|
||||
List<SellDetail> sellDetailList = sellDetailService.selectSellDetailList(sell.getSellId());
|
||||
SellDetail sellDetail = sellDetailList.get(0);
|
||||
|
||||
BigDecimal sellCardAmount = sellDetail.getAmount();
|
||||
BigDecimal sellCardGiveAmount = sellDetail.getGiveAmount();
|
||||
|
||||
BigDecimal cardAmount = memberCard.getAmount();
|
||||
log.info("当前卡余额:"+cardAmount);
|
||||
BigDecimal cardGiveAmount = memberCard.getGiveAmount();
|
||||
log.info("当前卡余额:"+cardAmount);
|
||||
|
||||
//消费后余额
|
||||
BigDecimal nowCardAmount = BigDecimalUtil.sub(cardAmount,sellCardAmount);
|
||||
BigDecimal nowGiveAmount = BigDecimalUtil.sub(cardGiveAmount,sellCardGiveAmount);
|
||||
|
||||
if (nowCardAmount.signum() == -1|nowGiveAmount.signum() == -1) {
|
||||
throw new ApiException(PAY_SELL_CARD_AMOUNT_NOT_SUFFICIENT_FUNDS);
|
||||
}
|
||||
|
||||
//修改当前卡金赠送金
|
||||
memberCard.setAmount(nowCardAmount);
|
||||
memberCard.setGiveAmount(nowGiveAmount);
|
||||
Boolean b = memberCardService.updateById(memberCard);
|
||||
if(!b){
|
||||
throw new ApiException(CARD_AMOUNT_CHANGE);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,131 @@
|
||||
package com.dd.admin.business.sell.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.dd.admin.business.memberCard.entity.MemberCard;
|
||||
import com.dd.admin.business.memberCard.service.MemberCardService;
|
||||
import com.dd.admin.business.product.entity.Product;
|
||||
import com.dd.admin.business.product.service.ProductService;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.service.CancelSellService;
|
||||
import com.dd.admin.business.sellDetail.domain.SellDetailDto;
|
||||
import com.dd.admin.business.sellDetail.domain.SellDetailVo;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.business.sellPay.domain.SellpayVo;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.business.stock.entity.Stock;
|
||||
import com.dd.admin.business.stock.service.StockService;
|
||||
import com.dd.admin.business.stockDetail.domain.StockDetailDto;
|
||||
import com.dd.admin.business.stockDetail.entity.StockDetail;
|
||||
import com.dd.admin.business.stockDetail.service.StockDetailService;
|
||||
import com.dd.admin.common.exception.ApiException;
|
||||
import com.dd.admin.common.security.SecurityUtil;
|
||||
import com.dd.admin.common.utils.BigDecimalUtil;
|
||||
import com.dd.admin.common.utils.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.dd.admin.business.pay.enmus.CashierExceptionEnum.CARD_AMOUNT_CHANGE;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.PAY_TYPE_CARD;
|
||||
import static com.dd.admin.business.pay.enmus.PayConst.PAY_TYPE_CARD_GIVE;
|
||||
import static com.dd.admin.common.consts.MemberShopConst.*;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CancelMemberProduct implements CancelSellService {
|
||||
|
||||
@Autowired
|
||||
MemberCardService memberCardService;
|
||||
@Autowired
|
||||
SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
ProductService productService;
|
||||
@Autowired
|
||||
StockService stockService;
|
||||
@Autowired
|
||||
StockDetailService stockDetailService;
|
||||
@Autowired
|
||||
SellpayService sellpayService;
|
||||
|
||||
@Override
|
||||
public void cancel(Sell sell) {
|
||||
List<SellDetail> sellDetailList = sellDetailService.selectSellDetailList(sell.getSellId());
|
||||
//增加库存
|
||||
addInventory(sellDetailList);
|
||||
|
||||
MemberCard memberCard = memberCardService.getById(sell.getMemberCardId());
|
||||
|
||||
if(memberCard!=null){
|
||||
BigDecimal cardAmount = memberCard.getAmount();
|
||||
log.info("当前卡余额:"+cardAmount);
|
||||
BigDecimal cardGiveAmount = memberCard.getGiveAmount();
|
||||
log.info("当前卡赠送金余额:"+cardAmount);
|
||||
|
||||
|
||||
List<Sellpay> sellPayVoList = sellpayService.selectSellPayList(sell.getSellId());
|
||||
|
||||
//计算订单卡金支付的金额
|
||||
Sellpay memberCardPay = sellPayVoList.stream().filter(p->
|
||||
p.getPayType().equals(PAY_TYPE_CARD)
|
||||
).findFirst().orElse(null);
|
||||
Sellpay memberGivePay= sellPayVoList.stream().filter(p->
|
||||
p.getPayType().equals(PAY_TYPE_CARD_GIVE)
|
||||
).findFirst().orElse(null);
|
||||
|
||||
if(memberCardPay!=null){
|
||||
memberCard.setAmount(BigDecimalUtil.add(cardAmount,memberCardPay.getAmount()));
|
||||
}
|
||||
if(memberGivePay!=null){
|
||||
memberCard.setGiveAmount(BigDecimalUtil.add(cardGiveAmount,memberGivePay.getAmount()));
|
||||
}
|
||||
Boolean b = memberCardService.updateById(memberCard);
|
||||
if(!b){
|
||||
throw new ApiException(CARD_AMOUNT_CHANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void addInventory(List<SellDetail> productDetailList){
|
||||
|
||||
List<StockDetail> stockDetailList = new ArrayList<>();
|
||||
//模拟入库
|
||||
productDetailList.stream().forEach(sellDetail -> {
|
||||
String productId = sellDetail.getProductId();
|
||||
Product product = productService.getById(productId);
|
||||
if(product.getStockControl().equals(STOCK_CONTROL_YES)){
|
||||
StockDetail stockDetail = new StockDetail();
|
||||
stockDetail.setProductId(product.getProductId());
|
||||
stockDetail.setProductName(product.getProductName());
|
||||
stockDetail.setCount(sellDetail.getCount());
|
||||
productService.addProductCount(product.getProductId(),sellDetail.getCount());
|
||||
stockDetailList.add(stockDetail);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if(CollectionUtil.isNotEmpty(stockDetailList)){
|
||||
//创建入库总单
|
||||
Stock stock = new Stock();
|
||||
stock.setStockInType(STOCK_IN_TYPE_CANCEL);
|
||||
stock.setStockTitle(DateUtil.formatChineseDate(new Date(),false,true) + SecurityUtil.getLoginUser().getDeptName() + "入库单");
|
||||
stock.setStockNo(StringUtil.getDateStringNow() + StringUtil.createCode(4));
|
||||
stock.setStockType(STOCK_IN);
|
||||
stockService.save(stock);
|
||||
|
||||
stockDetailList.stream().forEach(stockDetail -> {stockDetail.setStockId(stock.getStockId());});
|
||||
stockDetailService.saveBatch(stockDetailList);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,97 @@
|
||||
package com.dd.admin.business.sell.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.dd.admin.business.detailServer.entity.SellDetailServer;
|
||||
import com.dd.admin.business.detailServer.service.SellDetailServerService;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
import com.dd.admin.business.sellPay.domain.SellpayVo;
|
||||
import com.dd.admin.business.sellPay.entity.Sellpay;
|
||||
import com.dd.admin.business.sellPay.service.SellpayService;
|
||||
import com.dd.admin.business.sellPay.service.impl.SellpayServiceImpl;
|
||||
import com.dd.admin.common.model.PageFactory;
|
||||
import com.dd.admin.business.sell.entity.Sell;
|
||||
import com.dd.admin.business.sell.mapper.SellMapper;
|
||||
import com.dd.admin.business.sell.service.SellService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.dd.admin.common.utils.ColumnUtil;
|
||||
import com.dd.admin.common.utils.CommonUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.dd.admin.business.sell.domain.SellVo;
|
||||
import com.dd.admin.business.sell.domain.SellDto;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Service
|
||||
public class SellServiceImpl extends ServiceImpl<SellMapper, Sell> implements SellService {
|
||||
|
||||
@Autowired
|
||||
private SellDetailService sellDetailService;
|
||||
@Autowired
|
||||
private SellpayService sellpayService;
|
||||
@Autowired
|
||||
private SellDetailServerService sellDetailServerService;
|
||||
|
||||
@Override
|
||||
public IPage<SellVo> selectSellPage(SellDto sellDto) {
|
||||
Page page = PageFactory.defaultPage();
|
||||
return baseMapper.selectSellPage(page,sellDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SellVo> selectSellList(SellDto sellDto) {
|
||||
return baseMapper.selectSellList(sellDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectTodayCount(String shopId) {
|
||||
return baseMapper.selectTodayCount(shopId);
|
||||
}
|
||||
|
||||
@Override//TODO
|
||||
public void setSellDetail(List<SellVo> sellVoList) {
|
||||
List<String> sellIds = sellVoList.stream().map(SellVo::getSellId).collect(Collectors.toList());
|
||||
// 使用 MyBatis Plus 的条件构造器查询 SelldetailVo 列表
|
||||
|
||||
List<SellDetail> sellDetailList = sellDetailService.selectSellDetailList(sellIds);
|
||||
List<Sellpay> sellpayList = sellpayService.selectSellPayList(sellIds);
|
||||
|
||||
List<String> sellDetailIds = sellDetailList.stream().map(sellDetail -> sellDetail.getSellDetailId()).collect(Collectors.toList());
|
||||
List<SellDetailServer> sellDetailServers = sellDetailServerService.selectSellDetailServerListBySellDetailIds(sellDetailIds);
|
||||
// 获得所有的消费总单
|
||||
sellVoList.forEach(sellVo -> {
|
||||
List<SellDetail> selldetails = sellDetailList.stream()
|
||||
.filter(selldetail -> sellVo.getSellId().equals(selldetail.getSellId()))
|
||||
.collect(Collectors.toList());
|
||||
selldetails.stream().forEach(sellDetail -> {
|
||||
List<SellDetailServer> detailServerList = sellDetailServers.stream().filter(sellDetailServer -> sellDetail.getSellDetailId().equals(sellDetailServer.getSellDetailId())).collect(Collectors.toList());
|
||||
sellDetail.setDetailServerList(detailServerList);
|
||||
});
|
||||
sellVo.setSellDetailList(selldetails);
|
||||
|
||||
List<Sellpay> sellpays = sellpayList.stream()
|
||||
.filter(sellpay -> sellVo.getSellId().equals(sellpay.getSellId()))
|
||||
.collect(Collectors.toList());
|
||||
sellVo.setSellPayList(sellpays);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectSellCount(String shopId) {
|
||||
LambdaQueryWrapper<Sell> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Sell::getShopId, shopId);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
package com.dd.admin.business.sellDetail.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
import com.dd.admin.common.model.result.ResultBean;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.business.sellDetail.entity.SellDetail;
|
||||
import com.dd.admin.business.sellDetail.domain.SellDetailVo;
|
||||
import com.dd.admin.business.sellDetail.domain.SellDetailDto;
|
||||
import com.dd.admin.business.sellDetail.service.SellDetailService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详情 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Api(tags = "订单详情")
|
||||
@RestController
|
||||
public class SellDetailController {
|
||||
|
||||
@Autowired
|
||||
SellDetailService sellDetailService;
|
||||
|
||||
@ApiOperation(value = "订单详情-分页列表")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@GetMapping("/admin/sellDetail/page")
|
||||
public ResultBean<IPage<SellDetailVo>> page(SellDetailDto sellDetailDto) {
|
||||
IPage<SellDetailVo> pageInfo = sellDetailService.selectSellDetailPage(sellDetailDto);
|
||||
return ResultBean.success(pageInfo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详情-列表")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@GetMapping("/admin/sellDetail/list")
|
||||
public ResultBean<List<SellDetailVo>> list(SellDetailDto sellDetailDto) {
|
||||
List<SellDetailVo> list = sellDetailService.selectSellDetailList(sellDetailDto);
|
||||
return ResultBean.success(list);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详情-添加")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@PostMapping("/admin/sellDetail/add")
|
||||
public ResultBean<SellDetail> add(@RequestBody @Validated SellDetailDto sellDetailDto) {
|
||||
SellDetail sellDetail = BeanUtil.copyProperties(sellDetailDto, SellDetail.class);
|
||||
sellDetailService.save(sellDetail);
|
||||
return ResultBean.success(sellDetail);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详情-查询")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@GetMapping("/admin/sellDetail/{sellDetailId}")
|
||||
public ResultBean<SellDetailVo> get(@PathVariable @NotBlank String sellDetailId) {
|
||||
SellDetail sellDetail = sellDetailService.getById(sellDetailId);
|
||||
SellDetailVo sellDetailVo = BeanUtil.copyProperties(sellDetail,SellDetailVo.class);
|
||||
return ResultBean.success(sellDetailVo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详情-修改")
|
||||
@ApiOperationSupport(order = 5)
|
||||
@PostMapping("/admin/sellDetail/update")
|
||||
public ResultBean<SellDetail> update(@RequestBody @Validated(UpdateGroup.class) SellDetailDto sellDetailDto) {
|
||||
SellDetail sellDetail = BeanUtil.copyProperties(sellDetailDto, SellDetail.class);
|
||||
sellDetailService.updateById(sellDetail);
|
||||
return ResultBean.success(sellDetail);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单详情-删除")
|
||||
@ApiOperationSupport(order = 6)
|
||||
@GetMapping("/admin/sellDetail/delete/{sellDetailId}")
|
||||
public ResultBean<SellDetail> delete(@PathVariable @NotBlank String sellDetailId) {
|
||||
Boolean b = sellDetailService.removeById(sellDetailId);
|
||||
return ResultBean.success(b);
|
||||
}
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
package com.dd.admin.business.sellDetail.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import com.dd.admin.common.model.UpdateGroup;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详情返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单详情接收对象")
|
||||
public class SellDetailDto {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "销售细单id")
|
||||
@NotBlank(message = "订单详情id不能为空",groups = UpdateGroup.class)
|
||||
private String sellDetailId;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "1开卡 2续卡 3项目 4商品")
|
||||
private Integer sellType;
|
||||
|
||||
@ApiModelProperty(value = "商品类型")
|
||||
private Integer productType;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "商品ID")
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品数量")
|
||||
private Long count;
|
||||
|
||||
@ApiModelProperty(value = "折扣")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty(value = "实际金额")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "卡项ID")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "卡名")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "赠送金额")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer sellStatus;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,105 @@
|
||||
package com.dd.admin.business.sellDetail.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.Version;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单详情返回对象
|
||||
* </p>
|
||||
*
|
||||
* @author 727869402@qq.com
|
||||
* @since 2024-06-19
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value="订单详情返回对象")
|
||||
public class SellDetailVo {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "销售细单id")
|
||||
private String sellDetailId;
|
||||
|
||||
@ApiModelProperty(value = "会员id")
|
||||
private String memberId;
|
||||
|
||||
@ApiModelProperty(value = "订单id")
|
||||
private String sellId;
|
||||
|
||||
@ApiModelProperty(value = "1开卡 2续卡 3项目 4商品")
|
||||
private Integer sellType;
|
||||
|
||||
@ApiModelProperty(value = "商品类型")
|
||||
private Integer productType;
|
||||
|
||||
@ApiModelProperty(value = "会员卡id")
|
||||
private String memberCardId;
|
||||
|
||||
@ApiModelProperty(value = "商品ID")
|
||||
private String productId;
|
||||
|
||||
@ApiModelProperty(value = "商品名")
|
||||
private String productName;
|
||||
|
||||
@ApiModelProperty(value = "商品数量")
|
||||
private Long count;
|
||||
|
||||
@ApiModelProperty(value = "折扣")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty(value = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty(value = "实际金额")
|
||||
private BigDecimal realAmount;
|
||||
|
||||
@ApiModelProperty(value = "卡项ID")
|
||||
private String cardId;
|
||||
|
||||
@ApiModelProperty(value = "卡名")
|
||||
private String cardName;
|
||||
|
||||
@ApiModelProperty(value = "赠送金额")
|
||||
private BigDecimal giveAmount;
|
||||
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String shopId;
|
||||
|
||||
@ApiModelProperty(value = "门店名")
|
||||
private String shopName;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String createName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private String createId;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String updateName;
|
||||
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private String updateId;
|
||||
|
||||
@ApiModelProperty(value = "0正常 1取消")
|
||||
private Integer sellStatus;
|
||||
|
||||
@ApiModelProperty(value = "百份比值")
|
||||
private String percentage;
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user