deb
This commit is contained in:
parent
63bacfbc0e
commit
fda497925e
|
|
@ -0,0 +1,90 @@
|
|||
package com.syjiaer.clinic.server.controller.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.common.vo.Result;
|
||||
import com.syjiaer.clinic.server.controller.BaseController;
|
||||
import com.syjiaer.clinic.server.entity.vip.Vip;
|
||||
import com.syjiaer.clinic.server.service.vip.VipLevelConfigService;
|
||||
import com.syjiaer.clinic.server.service.vip.VipService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-02-21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/vip/vip")
|
||||
public class VipController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private VipService vipService;
|
||||
@Autowired
|
||||
private VipLevelConfigService vipLevelConfigService;
|
||||
|
||||
@RequestMapping("/create")
|
||||
public Result<Object> create() {
|
||||
Vip vip = parmsUtil.getObject("vipInfo", Vip.class);
|
||||
vipService.create(vip);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/update")
|
||||
public Result<Object> update() {
|
||||
Vip vip = parmsUtil.getObject("vip", Vip.class);
|
||||
|
||||
vipService.update(vip);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/delete")
|
||||
public Result<Integer> delete() {
|
||||
int vipId = parmsUtil.getInteger("id", "ID不能为空");
|
||||
return success(vipService.removeById(vipId));
|
||||
}
|
||||
|
||||
@RequestMapping("/list")
|
||||
public Result<Page<Vip>> selectList() {
|
||||
String keyword = parmsUtil.getString("keyword");
|
||||
int page = parmsUtil.getInteger("page", "请输入页码");
|
||||
int pageSize = parmsUtil.getInteger("pageSize", "请输入每页条数");
|
||||
Page<Vip> list = vipService.pageList(keyword, page, pageSize);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
@RequestMapping("/get")
|
||||
public Result<Vip> get() {
|
||||
int id = parmsUtil.getInteger("id", "ID不能为空");
|
||||
Vip vip = vipService.getById(id);
|
||||
return success(vip);
|
||||
}
|
||||
|
||||
@RequestMapping("/search")
|
||||
public Result<List<Vip>> search() {
|
||||
String keyword = parmsUtil.getString("keyword", "关键字不能为空");
|
||||
List<Vip> list = vipService.search(keyword);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
@RequestMapping("/changeLevel")
|
||||
public Result changeLevel() {
|
||||
int vipId = parmsUtil.getInteger("vipId", "会员ID不能为空");
|
||||
int levelId = parmsUtil.getInteger("levelId", "等级id不能为空");
|
||||
vipService.changeLevel(vipId, levelId);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.syjiaer.clinic.server.controller.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.common.vo.Result;
|
||||
import com.syjiaer.clinic.server.controller.BaseController;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
|
||||
import com.syjiaer.clinic.server.entity.vip.dto.VipIntegralLogQuery;
|
||||
import com.syjiaer.clinic.server.service.vip.VipIntegralLogService;
|
||||
import com.syjiaer.clinic.server.service.vip.VipService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/vip/integral")
|
||||
public class VipIntegralController extends BaseController {
|
||||
@Autowired
|
||||
private VipService vipService;
|
||||
@Autowired
|
||||
private VipIntegralLogService vipIntegralLogService;
|
||||
|
||||
@RequestMapping("/add")
|
||||
public Result add(){
|
||||
Integer vipId = parmsUtil.getInteger("vipId","请输入会员id");
|
||||
Integer Integral = parmsUtil.getInteger("integral","请输入积分");
|
||||
String remark = parmsUtil.getString("remark","请输入备注");
|
||||
vipService.changeIntegral(vipId,Integral,remark);
|
||||
return success();
|
||||
}
|
||||
@RequestMapping("/list")
|
||||
public Result<Page<VipIntegralLog>> listByVipId(){
|
||||
VipIntegralLogQuery query = parmsUtil.getObject("query", VipIntegralLogQuery.class);
|
||||
Page<VipIntegralLog> page = vipIntegralLogService.pageList(query);
|
||||
return success(page);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
package com.syjiaer.clinic.server.controller.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.syjiaer.clinic.server.common.vo.Result;
|
||||
import com.syjiaer.clinic.server.controller.BaseController;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
|
||||
import com.syjiaer.clinic.server.service.vip.VipLevelConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商品 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-02-21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/vip/vipLevel")
|
||||
public class VipLevelConfigController extends BaseController {
|
||||
@Autowired
|
||||
private VipLevelConfigService vipLevelConfigService;
|
||||
|
||||
@RequestMapping("/create")
|
||||
public Result<Object> create() {
|
||||
VipLevelConfig levelConfig = parmsUtil.getObject("vipLevelConfig", VipLevelConfig.class);
|
||||
vipLevelConfigService.create(levelConfig);
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/edit")
|
||||
public Result<Object> edit() {
|
||||
VipLevelConfig levelConfig = parmsUtil.getObject("vipLevelConfig", VipLevelConfig.class);
|
||||
|
||||
vipLevelConfigService.update(levelConfig);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/save")
|
||||
@Transactional
|
||||
public Result<Object> save() {
|
||||
List<VipLevelConfig> levelConfigList = parmsUtil.getList("vipLevelConfig", VipLevelConfig.class);
|
||||
vipLevelConfigService.save(levelConfigList);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/delete")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result<Object> delete() {
|
||||
int id = parmsUtil.getInteger("id", "ID不能为空");
|
||||
vipLevelConfigService.delete(id);
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/list")
|
||||
public Result<List<VipLevelConfig>> selectList() {
|
||||
|
||||
List<VipLevelConfig> list = vipLevelConfigService.list();
|
||||
return success(list);
|
||||
}
|
||||
|
||||
@RequestMapping("/get")
|
||||
public Result<VipLevelConfig> get() {
|
||||
int levelId = parmsUtil.getInteger("levelId", "ID不能为空");
|
||||
|
||||
VipLevelConfig level = vipLevelConfigService.getByLevelId(levelId);
|
||||
return success(level);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package com.syjiaer.clinic.server.entity.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "Vip对象", description = "")
|
||||
public class Vip implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("姓名")
|
||||
private String realName;
|
||||
|
||||
@ApiModelProperty("性别")
|
||||
private String sex;
|
||||
|
||||
@ApiModelProperty("手机号")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("生日")
|
||||
private LocalDate birthday;
|
||||
|
||||
@ApiModelProperty("年龄")
|
||||
private Integer age;
|
||||
|
||||
@ApiModelProperty("身份证号")
|
||||
private String idCode;
|
||||
|
||||
@ApiModelProperty("来源")
|
||||
private String source;
|
||||
|
||||
@ApiModelProperty("民族")
|
||||
private String nation;
|
||||
|
||||
@ApiModelProperty("地区")
|
||||
private String area;
|
||||
|
||||
@ApiModelProperty("地址")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("创建日期")
|
||||
private LocalDate createDatetime;
|
||||
|
||||
@ApiModelProperty("会员等级 0表示没有等级")
|
||||
private Integer levelId;
|
||||
|
||||
@ApiModelProperty("会员经验值")
|
||||
private Integer exp;
|
||||
|
||||
@ApiModelProperty("积分余额")
|
||||
private Integer integralBalance;
|
||||
|
||||
@ApiModelProperty("0没绑医保 1已绑定")
|
||||
private Integer isBindSocial;
|
||||
|
||||
@ApiModelProperty("余额")
|
||||
private BigDecimal balance;
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.syjiaer.clinic.server.entity.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("vip_exp_log")
|
||||
@ApiModel(value = "VipExpLog对象", description = "")
|
||||
public class VipExpLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("开始经验值")
|
||||
private Integer startExp;
|
||||
|
||||
@ApiModelProperty("变化经验值")
|
||||
private Integer changeExp;
|
||||
|
||||
@ApiModelProperty("结束经验值")
|
||||
private Integer endExp;
|
||||
|
||||
@ApiModelProperty("vip表外键")
|
||||
private Integer vipId;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createDatetime;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.syjiaer.clinic.server.entity.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("vip_integral_log")
|
||||
@ApiModel(value = "VipIntegralLog对象", description = "")
|
||||
public class VipIntegralLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(" 自增id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("变化前值")
|
||||
private Integer beforeIntegral;
|
||||
|
||||
@ApiModelProperty("变化后值")
|
||||
private Integer afterIntegral;
|
||||
|
||||
@ApiModelProperty("变化量")
|
||||
private Integer changeIntegral;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("记录时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("会员id")
|
||||
private Integer vipId;
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package com.syjiaer.clinic.server.entity.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("vip_level_config")
|
||||
@ApiModel(value = "VipLevelConfig对象", description = "")
|
||||
public class VipLevelConfig implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("等级名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("等级起始经验值")
|
||||
private Integer startExp;
|
||||
|
||||
@ApiModelProperty("折扣比例 为1-100整数")
|
||||
private Integer discountRate;
|
||||
|
||||
private Integer levelId;
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package com.syjiaer.clinic.server.entity.vip.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class VipIntegralLogQuery {
|
||||
private Integer vipId;
|
||||
private Integer pageNum;
|
||||
private Integer pageSize;
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.vip;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.vip.VipExpLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
public interface VipExpLogMapper extends BaseMapper<VipExpLog> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.vip;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
public interface VipIntegralLogMapper extends BaseMapper<VipIntegralLog> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.syjiaer.clinic.server.mapper.vip;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
public interface VipLevelConfigMapper extends BaseMapper<VipLevelConfig> {
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.vip;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.vip.Vip;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-27
|
||||
*/
|
||||
public interface VipMapper extends BaseMapper<Vip> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
package com.syjiaer.clinic.server.service.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.syjiaer.clinic.server.common.constants.Constants;
|
||||
import com.syjiaer.clinic.server.common.exception.MessageException;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.entity.vip.Vip;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
|
||||
import com.syjiaer.clinic.server.entity.vip.dto.VipIntegralLogQuery;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class VipIntegralLogService extends BaseService {
|
||||
@Autowired
|
||||
private VipMapper vipMapper;
|
||||
@Autowired
|
||||
private VipLevelConfigMapper vipLevelConfigMapper;
|
||||
@Autowired
|
||||
private VipIntegralLogMapper vipIntegralLogMapper;
|
||||
|
||||
public Page<VipIntegralLog> pageList(VipIntegralLogQuery query) {
|
||||
if (query == null){
|
||||
throw new MessageException("没有带查询条件");
|
||||
}
|
||||
if (query.getPageNum() == null|| query.getPageNum() == 0){
|
||||
query.setPageNum(1);
|
||||
}
|
||||
if (query.getPageSize() == null || query.getPageSize() == 0){
|
||||
query.setPageSize(Constants.DetailPageSize);
|
||||
}
|
||||
Vip vip = null;
|
||||
if (query.getVipId() != null){
|
||||
vip = vipMapper.selectById(query.getVipId());
|
||||
}
|
||||
if (vip == null){
|
||||
throw new MessageException("会员不存在");
|
||||
}
|
||||
|
||||
QueryWrapper<VipIntegralLog> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("vip_id",query.getVipId());
|
||||
return pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, vipIntegralLogMapper, "create_time", false);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
package com.syjiaer.clinic.server.service.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class VipLevelConfigService extends BaseService {
|
||||
@Autowired
|
||||
private VipLevelConfigMapper vipLevelConfigMapper;
|
||||
@Autowired
|
||||
private VipService vipService;
|
||||
|
||||
/**
|
||||
* 根据经验值获取会员等级
|
||||
* @param exp
|
||||
* @return
|
||||
*/
|
||||
public VipLevelConfig getByExp(Integer exp) {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.le("start_exp",exp);
|
||||
queryWrapper.orderByDesc("start_exp");
|
||||
List<VipLevelConfig> vipLevelConfig = vipLevelConfigMapper.selectList(queryWrapper);
|
||||
if (!vipLevelConfig.isEmpty()){
|
||||
return vipLevelConfig.get(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建会员等级
|
||||
* @param levelConfig
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(VipLevelConfig levelConfig) {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByDesc("id");
|
||||
queryWrapper.last("limit 1");
|
||||
VipLevelConfig lastLevel = vipLevelConfigMapper.selectOne(queryWrapper);
|
||||
if(lastLevel==null){
|
||||
levelConfig.setStartExp(0);
|
||||
}
|
||||
vipLevelConfigMapper.insert(levelConfig);
|
||||
List<VipLevelConfig> list =vipLevelConfigMapper.selectList(null);
|
||||
for (int i=0;i<list.size();i++){
|
||||
VipLevelConfig vipLevelConfig = list.get(i);
|
||||
UpdateWrapper<VipLevelConfig> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("id",vipLevelConfig.getId());
|
||||
updateWrapper.set("level_id",i+1);
|
||||
vipLevelConfigMapper.update(updateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新等级信息
|
||||
* @param levelConfig
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(VipLevelConfig levelConfig) {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByDesc("id");
|
||||
queryWrapper.last("limit 1");
|
||||
VipLevelConfig lastLevel = vipLevelConfigMapper.selectOne(queryWrapper);
|
||||
if(lastLevel==null){
|
||||
levelConfig.setStartExp(0);
|
||||
}
|
||||
vipLevelConfigMapper.updateById(levelConfig);
|
||||
List<VipLevelConfig> list =vipLevelConfigMapper.selectList(null);
|
||||
for (int i=0;i<list.size();i++){
|
||||
VipLevelConfig vipLevelConfig = list.get(i);
|
||||
UpdateWrapper<VipLevelConfig> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("id",vipLevelConfig.getId());
|
||||
updateWrapper.set("level_id",i+1);
|
||||
vipLevelConfigMapper.update(updateWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存vip等级列表
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save( List<VipLevelConfig> levelConfigList) {
|
||||
List<VipLevelConfig> insertList = new ArrayList<>();
|
||||
for (int i =0 ; i <levelConfigList.size() ; i++){
|
||||
VipLevelConfig levelConfig = levelConfigList.get(i);
|
||||
levelConfig.setLevelId(i+1);
|
||||
if (levelConfig.getId() == null){
|
||||
insertList.add(levelConfig);
|
||||
}else {
|
||||
vipLevelConfigMapper.updateById(levelConfig);
|
||||
}
|
||||
}
|
||||
for (VipLevelConfig levelConfig : insertList){
|
||||
vipLevelConfigMapper.insert(levelConfig);
|
||||
}
|
||||
vipService.reFreshAllVipLevel();
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer delete(int id) {
|
||||
Integer count = vipLevelConfigMapper.deleteById(id);
|
||||
vipService.reFreshAllVipLevel();
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* 所有vip等级配置的列表
|
||||
* @return
|
||||
*/
|
||||
public List<VipLevelConfig> list() {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByAsc("level_id");
|
||||
return vipLevelConfigMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据levelId获取等级配置
|
||||
* @param levelId
|
||||
* @return
|
||||
*/
|
||||
public VipLevelConfig getByLevelId(Integer levelId) {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("level_id", levelId);
|
||||
return vipLevelConfigMapper.selectOne(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,233 @@
|
|||
package com.syjiaer.clinic.server.service.vip;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.syjiaer.clinic.server.common.exception.MessageException;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.entity.vip.Vip;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipExpLog;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipIntegralLog;
|
||||
import com.syjiaer.clinic.server.entity.vip.VipLevelConfig;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipExpLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper;
|
||||
import com.syjiaer.clinic.server.mapper.vip.VipMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class VipService extends BaseService {
|
||||
@Autowired
|
||||
@Lazy
|
||||
private VipLevelConfigService vipLevelConfigService;
|
||||
@Autowired
|
||||
private VipLevelConfigMapper vipLevelConfigMapper;
|
||||
@Autowired
|
||||
private VipExpLogMapper vipExpLogMapper;
|
||||
@Autowired
|
||||
private VipIntegralLogMapper vipIntegralLogMapper;
|
||||
@Autowired
|
||||
private VipMapper vipMapper;
|
||||
@Autowired
|
||||
@Lazy
|
||||
private VipService vipService;
|
||||
|
||||
/**
|
||||
* 新建vip
|
||||
* @param vip
|
||||
*/
|
||||
public void create(Vip vip) {
|
||||
vip.setCreateDatetime(LocalDate.now());
|
||||
Integer exp = vip.getExp();
|
||||
if (vip.getBirthday() != null) {
|
||||
int currentYear = LocalDate.now().getYear();
|
||||
int birthYear = vip.getBirthday().getYear();
|
||||
vip.setAge(currentYear - birthYear);
|
||||
}
|
||||
vip.setExp(0);
|
||||
VipLevelConfig level = vipLevelConfigService.getByExp(vip.getExp());
|
||||
if (level != null){
|
||||
vip.setLevelId(level.getLevelId());
|
||||
}else {
|
||||
vip.setLevelId(0);
|
||||
}
|
||||
|
||||
vipMapper.insert(vip);
|
||||
if (exp != null && exp > 0){
|
||||
vipService.changeExp(vip.getId(), exp, "会员创建");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变会员经验值
|
||||
* @param vipId
|
||||
* @param changeExp
|
||||
* @param remark
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void changeExp(int vipId, int changeExp, String remark){
|
||||
Vip vip = vipMapper.selectById(vipId);
|
||||
if(vip==null){
|
||||
throw new MessageException("会员不存在");
|
||||
}
|
||||
int start_exp = vip.getExp();
|
||||
int end_exp = start_exp + changeExp;
|
||||
if(end_exp<0){
|
||||
end_exp=0;
|
||||
changeExp = -start_exp;
|
||||
}
|
||||
vip.setExp(end_exp);
|
||||
// 记录日志
|
||||
VipExpLog vipExpLog = new VipExpLog();
|
||||
vipExpLog.setStartExp(start_exp);
|
||||
vipExpLog.setChangeExp(changeExp);
|
||||
vipExpLog.setEndExp(end_exp);
|
||||
vipExpLog.setVipId(vipId);
|
||||
vipExpLog.setCreateDatetime(LocalDateTime.now());
|
||||
vipExpLog.setRemark(remark);
|
||||
//更新VIP等级
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByDesc("start_exp");
|
||||
List<VipLevelConfig> vipLevelConfigs = vipLevelConfigMapper.selectList(queryWrapper);
|
||||
for (VipLevelConfig vipLevelConfig : vipLevelConfigs) {
|
||||
if(end_exp>=vipLevelConfig.getStartExp()){
|
||||
vip.setLevelId(vipLevelConfig.getLevelId());
|
||||
System.out.println(vipLevelConfig.getLevelId());
|
||||
System.out.println(end_exp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
UpdateWrapper<Vip> updateWrapper = new UpdateWrapper();
|
||||
updateWrapper.eq("id",vipId);
|
||||
updateWrapper.set("level_id",vip.getLevelId());
|
||||
updateWrapper.set("exp",vip.getExp());
|
||||
// 保存
|
||||
vipMapper.update(updateWrapper);
|
||||
vipExpLogMapper.insert(vipExpLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新vip基本信息 经验值和积分不更新
|
||||
* @param vip
|
||||
*/
|
||||
public void update(Vip vip) {
|
||||
vip.setExp(null);
|
||||
vip.setLevelId(null);
|
||||
vipMapper.updateById(vip);
|
||||
}
|
||||
|
||||
public int removeById(int vipId) {
|
||||
return vipMapper.deleteById(vipId);
|
||||
}
|
||||
|
||||
/**
|
||||
* vip分页查询
|
||||
* @param keyword
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
public Page<Vip> pageList(String keyword, int pageNum, int pageSize) {
|
||||
QueryWrapper<Vip> queryWrapper = new QueryWrapper<>();
|
||||
if (keyword != null && !keyword.isEmpty()){
|
||||
queryWrapper.like("real_name",keyword);
|
||||
queryWrapper.or().like("phone",keyword);
|
||||
queryWrapper.or().like("id_code",keyword);
|
||||
}
|
||||
return pageHelper(pageNum, pageSize, queryWrapper, vipMapper, "create_datetime", false);
|
||||
}
|
||||
|
||||
public Vip getById(int id) {
|
||||
return vipMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名称 手机号 身份证搜索vip
|
||||
* @param keyword
|
||||
* @return
|
||||
*/
|
||||
public List<Vip> search(String keyword) {
|
||||
QueryWrapper<Vip> query = new QueryWrapper<>();
|
||||
query.like("real_name", keyword);
|
||||
query.or().like("phone", keyword);
|
||||
query.or().like("id_code", keyword);
|
||||
return vipMapper.selectList(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变vip等级
|
||||
* @param vipId
|
||||
* @param levelId
|
||||
*/
|
||||
public void changeLevel(int vipId, int levelId) {
|
||||
QueryWrapper<VipLevelConfig> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("level_id", levelId);
|
||||
VipLevelConfig levelConfig = vipLevelConfigMapper.selectOne(queryWrapper);
|
||||
if (levelConfig == null) {
|
||||
throw new MessageException("等级不存在");
|
||||
}
|
||||
Vip vip = vipMapper.selectById(vipId);
|
||||
int changeExp = levelConfig.getStartExp() - vip.getExp();
|
||||
vipService.changeExp(vipId, changeExp, "会员等级修改");
|
||||
}
|
||||
|
||||
/**
|
||||
* 改变vip积分
|
||||
* @param vipId
|
||||
* @param addIntegral
|
||||
* @param remark
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void changeIntegral(int vipId, int addIntegral, String remark) {
|
||||
Vip vip = vipMapper.selectById(vipId);
|
||||
if(vip==null){
|
||||
throw new MessageException("会员不存在");
|
||||
}
|
||||
Integer beforeIntegral = vip.getIntegralBalance();
|
||||
Integer finalIntegral = beforeIntegral + addIntegral;
|
||||
Vip updateVip = new Vip();
|
||||
updateVip.setId(vipId);
|
||||
updateVip.setIntegralBalance(finalIntegral);
|
||||
vipMapper.updateById(updateVip);
|
||||
//记录日志
|
||||
VipIntegralLog vipIntegralLog = new VipIntegralLog();
|
||||
vipIntegralLog.setBeforeIntegral(beforeIntegral);
|
||||
vipIntegralLog.setAfterIntegral(finalIntegral);
|
||||
vipIntegralLog.setChangeIntegral(addIntegral);
|
||||
vipIntegralLog.setRemark(remark);
|
||||
vipIntegralLog.setCreateTime(LocalDateTime.now());
|
||||
vipIntegralLog.setVipId(vipId);
|
||||
vipIntegralLogMapper.insert(vipIntegralLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新所有vip等级信息
|
||||
*/
|
||||
public void reFreshAllVipLevel() {
|
||||
//更新所有vip的等级
|
||||
QueryWrapper<Vip> vipQuery = new QueryWrapper<>();
|
||||
vipQuery.select("id,exp");
|
||||
List<Vip> vipList = vipMapper.selectList(vipQuery);
|
||||
Iterator<Vip> iterator = vipList.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Vip vip = iterator.next();
|
||||
VipLevelConfig levelConfig = vipLevelConfigService.getByExp(vip.getExp());
|
||||
if (levelConfig != null) {
|
||||
vip.setLevelId(levelConfig.getLevelId());
|
||||
} else {
|
||||
vip.setLevelId(0);
|
||||
}
|
||||
vip.setExp(null);
|
||||
|
||||
}
|
||||
vipMapper.updateById(vipList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?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.syjiaer.clinic.server.mapper.vip.VipExpLogMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?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.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?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.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?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.syjiaer.clinic.server.mapper.vip.VipMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue