From 57d65f3fd98e908509defa9fd0fc965a55a8811b Mon Sep 17 00:00:00 2001 From: lifenlong Date: Sun, 16 May 2021 23:41:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E7=AD=89=E7=BA=A7V0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/impl/MemberExperienceExecute.java | 50 +++++++++++++ .../lili/event/impl/MemberPointExecute.java | 4 +- .../java/cn/lili/common/enums/ResultCode.java | 3 +- .../modules/member/entity/dos/Member.java | 8 +++ .../member/entity/dos/MemberGrade.java | 40 +++++++++++ .../member/mapper/MemberGradeMapper.java | 14 ++++ .../member/service/MemberGradeService.java | 15 ++++ .../modules/member/service/MemberService.java | 11 +++ .../serviceimpl/MemberGradeServiceImpl.java | 18 +++++ .../member/serviceimpl/MemberServiceImpl.java | 18 +++++ .../order/service/OrderPriceService.java | 8 +-- .../serviceimpl/OrderPriceServiceImpl.java | 8 +-- .../system/entity/dto/ExperienceSetting.java | 33 +++++++++ .../system/entity/enums/SettingEnum.java | 2 + .../member/MemberGradeManagerController.java | 70 +++++++++++++++++++ 15 files changed, 290 insertions(+), 12 deletions(-) create mode 100644 consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java create mode 100644 framework/src/main/java/cn/lili/modules/member/entity/dos/MemberGrade.java create mode 100644 framework/src/main/java/cn/lili/modules/member/mapper/MemberGradeMapper.java create mode 100644 framework/src/main/java/cn/lili/modules/member/service/MemberGradeService.java create mode 100644 framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberGradeServiceImpl.java create mode 100644 framework/src/main/java/cn/lili/modules/system/entity/dto/ExperienceSetting.java create mode 100644 manager-api/src/main/java/cn/lili/controller/member/MemberGradeManagerController.java diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java new file mode 100644 index 00000000..d60c58b0 --- /dev/null +++ b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java @@ -0,0 +1,50 @@ +package cn.lili.event.impl; + + +import cn.lili.event.GoodsCommentCompleteEvent; +import cn.lili.event.MemberRegisterEvent; +import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.member.service.MemberService; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.ExperienceSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; +import com.google.gson.Gson; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 会员经验值 + * + * @author Bulbasaur + * @date: 2021/5/16 11:16 下午 + */ +@Service +public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent { + + //配置 + @Autowired + private SettingService settingService; + //会员 + @Autowired + private MemberService memberService; + + @Override + public void memberRegister(Member member) { + //获取经验值设置 + Setting setting = settingService.get(SettingEnum.EXPERIENCE_SETTING.name()); + ExperienceSetting experienceSetting = new Gson().fromJson(setting.getSettingValue(), ExperienceSetting.class); + //赠送会员经验值 + memberService.updateMemberPoint(Long.valueOf(experienceSetting.getRegister().longValue()), 1, member.getId(), "会员注册,赠送经验值" + experienceSetting.getRegister()); + } + + @Override + public void goodsComment(MemberEvaluation memberEvaluation) { + //获取签到经验值设置 + Setting setting = settingService.get(SettingEnum.EXPERIENCE_SETTING.name()); + ExperienceSetting experienceSetting = new Gson().fromJson(setting.getSettingValue(), ExperienceSetting.class); + //赠送会员经验值 + memberService.updateMemberPoint(Long.valueOf(experienceSetting.getComment().longValue()), 1, memberEvaluation.getMemberId(), "会员评价,赠送经验值" + experienceSetting.getComment()); + } +} diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java index 237c3339..4a424a04 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java @@ -6,13 +6,11 @@ import cn.lili.event.MemberRegisterEvent; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.service.MemberService; -import cn.lili.modules.member.service.MemberWalletService; import cn.lili.modules.system.entity.dos.Setting; import cn.lili.modules.system.entity.dto.PointSetting; import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; import com.google.gson.Gson; -import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,7 +33,7 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp @Override public void memberRegister(Member member) { - //获取签到积分赠送设置 + //获取积分设置 Setting setting = settingService.get(SettingEnum.POINT_SETTING.name()); PointSetting pointSetting = new Gson().fromJson(setting.getSettingValue(), PointSetting.class); //赠送会员积分 diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 84fa0e38..b3e8c06a 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -89,7 +89,8 @@ public enum ResultCode { USER_RECEIPT_NOT_EXIST(20014,"会员发票信息不存在"), USER_EDIT_ERROR(20015,"用户修改失败"), USER_OLD_PASSWORD_ERROR(20016, "旧密码不正确"), - USER_COLLECTION_EXIST(2001,"无法重复收藏"), + USER_COLLECTION_EXIST(20017,"无法重复收藏"), + USER_GRADE_IS_DEFAULT(20018,"会员等级为默认会员等级"), /** * 权限 diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java index ea2aaa44..dab8b591 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java @@ -85,6 +85,14 @@ public class Member extends BaseEntity { @ApiModelProperty(value = "最后一次登录时间") private Date lastLoginDate; + @ApiModelProperty(value = "会员等级ID") + private String gradeId; + + @Min(message = "必须为数字", value = 0) + @ApiModelProperty(value = "经验值数量") + private Long experience; + + public Member(String username, String password, String mobile) { this.username = username; this.password = password; diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberGrade.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberGrade.java new file mode 100644 index 00000000..e65abef7 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberGrade.java @@ -0,0 +1,40 @@ +package cn.lili.modules.member.entity.dos; + +import cn.lili.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +/** + * 会员等级 + * + * @author Bulbasaur + * @date 2021/5/14 5:43 下午 + */ +@Data +@Entity +@Table(name = "li_member_grade") +@TableName("li_member_grade") +@ApiModel(value = "会员等级") +public class MemberGrade extends BaseEntity { + + @NotNull + @ApiModelProperty(value = "等级名称") + private String gradeName; + + @NotNull + @ApiModelProperty(value = "等级图片") + private String gradeImage; + + @NotNull + @ApiModelProperty(value = "所需经验值") + private Integer experienceValue; + + @ApiModelProperty(value = "是否为默认等级") + private Boolean isDefault; +} diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberGradeMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/MemberGradeMapper.java new file mode 100644 index 00000000..64073199 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/mapper/MemberGradeMapper.java @@ -0,0 +1,14 @@ +package cn.lili.modules.member.mapper; + +import cn.lili.modules.member.entity.dos.MemberGrade; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 会员等级数据层 + * + * @author Bulbasaur + * @date: 2021/5/14 5:57 下午 + */ +public interface MemberGradeMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberGradeService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberGradeService.java new file mode 100644 index 00000000..44002848 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberGradeService.java @@ -0,0 +1,15 @@ +package cn.lili.modules.member.service; + +import cn.lili.modules.member.entity.dos.MemberGrade; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 会员等级业务层 + * @author Bulbasaur + * @date: 2021/5/14 5:57 下午 + * + */ +public interface MemberGradeService extends IService { + + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java index 7395dc04..ff903447 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java @@ -183,6 +183,17 @@ public interface MemberService extends IService { */ Boolean updateMemberPoint(Long point, Integer type, String memberId, String content); + /** + * 会员积分变动 + * + * @param experience 变动经验值 + * @param type 变动类型 1为增加 0为消费 + * @param memberId 会员id + * @param content 变动详细 + * @return 操作结果 + */ + Boolean updateMemberExperience(Long experience, Integer type, String memberId, String content); + /** * 修改会员状态 * diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberGradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberGradeServiceImpl.java new file mode 100644 index 00000000..0152e4da --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberGradeServiceImpl.java @@ -0,0 +1,18 @@ +package cn.lili.modules.member.serviceimpl; + +import cn.lili.modules.member.entity.dos.MemberGrade; +import cn.lili.modules.member.mapper.MemberGradeMapper; +import cn.lili.modules.member.service.MemberGradeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 会员等级业务层实现 + * + * @author Bulbasaur + * @date: 2021/5/14 5:58 下午 + */ +@Service +public class MemberGradeServiceImpl extends ServiceImpl implements MemberGradeService { + +} \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index fe464474..145883da 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -383,6 +383,24 @@ public class MemberServiceImpl extends ServiceImpl impleme throw new ServiceException(ResultCode.USER_NOT_EXIST); } + @Override + public Boolean updateMemberExperience(Long experience, Integer type, String memberId, String content) { + //获取当前会员信息 + Member member = this.getById(memberId); + if (member != null) { + //积分变动后的会员积分 + long currentExperience; + if (type == 1) { + currentExperience = CurrencyUtil.add(member.getPoint(), experience).longValue(); + } else { + currentExperience = CurrencyUtil.sub(member.getPoint(), experience) < 0 ? 0 : new Double(CurrencyUtil.sub(member.getExperience(), experience)).longValue(); + } + member.setExperience(currentExperience); + return this.updateById(member); + } + throw new ServiceException(ResultCode.USER_NOT_EXIST); + } + @Override public Boolean updateMemberStatus(List memberIds, Boolean status) { diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderPriceService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderPriceService.java index baa70f7e..3d1a00d6 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderPriceService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderPriceService.java @@ -3,10 +3,10 @@ package cn.lili.modules.order.order.service; import cn.lili.modules.order.order.entity.dos.Order; /** - * @author liushuai(liushuai711 @ gmail.com) - * @version v4.1 - * @Description: - * @since 2021/4/28 3:47 下午 + * 订单价格 + * + * @author Chopper + * @date 2020/11/17 7:36 下午 */ public interface OrderPriceService { diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java index 2bd6c150..8fafc13d 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderPriceServiceImpl.java @@ -28,10 +28,10 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; /** - * @author liushuai(liushuai711 @ gmail.com) - * @version v4.1 - * @Description: - * @since 2021/4/28 3:48 下午 + * 订单价格业务层实现 + * + * @author Chopper + * @date 2020/11/17 7:36 下午 */ @Service @Transactional(rollbackFor = Exception.class) diff --git a/framework/src/main/java/cn/lili/modules/system/entity/dto/ExperienceSetting.java b/framework/src/main/java/cn/lili/modules/system/entity/dto/ExperienceSetting.java new file mode 100644 index 00000000..be6d0a72 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/system/entity/dto/ExperienceSetting.java @@ -0,0 +1,33 @@ +package cn.lili.modules.system.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 经验值设置 + * + * @author Bulbasaur + * @date: 2021/5/16 11:10 下午 + */ +@Data +public class ExperienceSetting implements Serializable { + + private static final long serialVersionUID = -4261856614779031745L; + @ApiModelProperty(value = "注册") + private Integer register; + + @ApiModelProperty(value = "每日签到经验值") + private Integer signIn; + + @ApiModelProperty(value = "订单评价赠送经验值") + private Integer comment; + + @ApiModelProperty(value = "分享获取经验值") + private Integer share; + + @ApiModelProperty(value = "购物获取经验值,一元*经验值") + private Integer money; + +} diff --git a/framework/src/main/java/cn/lili/modules/system/entity/enums/SettingEnum.java b/framework/src/main/java/cn/lili/modules/system/entity/enums/SettingEnum.java index bffbae87..dd16dd13 100644 --- a/framework/src/main/java/cn/lili/modules/system/entity/enums/SettingEnum.java +++ b/framework/src/main/java/cn/lili/modules/system/entity/enums/SettingEnum.java @@ -27,6 +27,8 @@ public enum SettingEnum { SMS_SETTING, //积分设置 POINT_SETTING, + //经验值设置 + EXPERIENCE_SETTING, //微信 联合登陆设置 WECHAT_CONNECT, diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberGradeManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberGradeManagerController.java new file mode 100644 index 00000000..c1498263 --- /dev/null +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberGradeManagerController.java @@ -0,0 +1,70 @@ +package cn.lili.controller.member; + +import cn.lili.common.enums.ResultCode; +import cn.lili.common.utils.PageUtil; +import cn.lili.common.utils.ResultUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.member.entity.dos.MemberGrade; +import cn.lili.modules.member.service.MemberGradeService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 管理端,会员等级接口 + * + * @author Bulbasaur + * @date: 2021/5/16 11:29 下午 + */ +@RestController +@Api(tags = "管理端,会员等级接口") +@RequestMapping("/manager/memberGrade") +public class MemberGradeManagerController { + + @Autowired + private MemberGradeService memberGradeService; + + @ApiOperation(value = "通过id获取会员等级") + @ApiImplicitParam(name = "id", value = "会员等级ID", required = true, dataType = "String", paramType = "path") + @GetMapping(value = "/get/{id}") + public ResultMessage get(@PathVariable String id) { + + return ResultUtil.data(memberGradeService.getById(id)); + } + + @ApiOperation(value = "获取会员等级分页") + @GetMapping(value = "/getByPage") + public ResultMessage> getByPage(PageVO page) { + + return ResultUtil.data(memberGradeService.page(PageUtil.initPage(page))); + } + + @ApiOperation(value = "修改会员等级") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "会员等级ID", required = true, paramType = "path") + }) + @GetMapping(value = "/update/{id}") + public ResultMessage update(@PathVariable String id,MemberGrade memberGrade) { + if (memberGradeService.updateById(memberGrade)) { + return ResultUtil.success(ResultCode.SUCCESS); + } + return ResultUtil.error(ResultCode.ERROR); + } + + @ApiOperation(value = "删除会员等级") + @ApiImplicitParam(name = "id", value = "会员等级ID", required = true, dataType = "String", paramType = "path") + @PutMapping(value = "/delete/{id}") + public ResultMessage> delete(@PathVariable String id) { + if(memberGradeService.getById(id).getIsDefault()){ + return ResultUtil.error(ResultCode.USER_GRADE_IS_DEFAULT); + }else if(memberGradeService.removeById(id)){ + return ResultUtil.success(ResultCode.SUCCESS); + } + return ResultUtil.error(ResultCode.ERROR); + } +}