package cn.lili.event.impl; import cn.lili.common.utils.CurrencyUtil; import cn.lili.event.GoodsCommentCompleteEvent; import cn.lili.event.MemberRegisterEvent; import cn.lili.event.OrderStatusChangeEvent; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.enums.PointTypeEnum; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; import cn.lili.modules.order.order.service.OrderService; 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; /** * 会员经验值 * * @author Bulbasaur * @since 2021/5/16 11:16 下午 */ //@Service public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent { /** * 配置 */ @Autowired private SettingService settingService; /** * 会员 */ @Autowired private MemberService memberService; /** * 订单 */ @Autowired private OrderService orderService; /** * 会员注册赠送经验值 * * @param member 会员 */ @Override public void memberRegister(Member member) { //获取经验值设置 ExperienceSetting experienceSetting = getExperienceSetting(); //赠送会员经验值 memberService.updateMemberPoint(Long.valueOf(experienceSetting.getRegister().longValue()), PointTypeEnum.INCREASE.name(), member.getId(), "会员注册,赠送经验值" + experienceSetting.getRegister()); } /** * 商品评价赠送经验值 * * @param memberEvaluation 会员评价 */ @Override public void goodsComment(MemberEvaluation memberEvaluation) { //获取经验值设置 ExperienceSetting experienceSetting = getExperienceSetting(); //赠送会员经验值 memberService.updateMemberPoint(Long.valueOf(experienceSetting.getComment().longValue()), PointTypeEnum.INCREASE.name(), memberEvaluation.getMemberId(), "会员评价,赠送经验值" + experienceSetting.getComment()); } /** * 完成订单赠送经验值 * * @param orderMessage 订单消息 */ @Override public void orderChange(OrderMessage orderMessage) { if (orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)) { //获取经验值设置 ExperienceSetting experienceSetting = getExperienceSetting(); //获取订单信息 Order order = orderService.getBySn(orderMessage.getOrderSn()); //计算赠送经验值数量 Double point = CurrencyUtil.mul(experienceSetting.getMoney(), order.getFlowPrice(), 0); //赠送会员经验值 memberService.updateMemberPoint(point.longValue(), PointTypeEnum.INCREASE.name(), order.getMemberId(), "会员下单,赠送经验值" + point + "分"); } } /** * 获取经验值设置 * * @return 经验值设置 */ private ExperienceSetting getExperienceSetting() { Setting setting = settingService.get(SettingEnum.EXPERIENCE_SETTING.name()); return new Gson().fromJson(setting.getSettingValue(), ExperienceSetting.class); } }