package com.iamberry.wechat.service.integral; import com.iamberry.wechat.core.entity.PageBean; import com.iamberry.wechat.core.entity.ResultMsg; import com.iamberry.wechat.core.entity.integral.*; import com.iamberry.wechat.core.entity.member.Member; import com.iamberry.wechat.face.integral.UseIntegralService; import com.iamberry.wechat.service.mapper.MemberMapper; import com.iamberry.wechat.service.mapper.UseIntegralMapper; import com.iamberry.wechat.tools.NameUtils; import com.iamberry.wechat.tools.ResultInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.beans.Transient; import java.util.Date; import java.util.List; @Service public class UseIntegralServiceImpl implements UseIntegralService { @Autowired private UseIntegralMapper useIntegralMapper; @Autowired private MemberMapper memberMapper; /** * 获取会员信息.会员等级名称 * @param openId * @return */ @Override public MemberIntegral getMemberInfoAndRankName(String openId) { return useIntegralMapper.getMemberInfoAndRankName(openId); } /** * 获得的总积分数 * @param userOpenId * @return */ @Override public Integer getGainIntegralCount(String userOpenId) { return useIntegralMapper.getGainIntegralCount(userOpenId); } /** * 使用的总积分数 * @param openid * @return */ @Override public Integer getUseIntegralCount(String openid) { return useIntegralMapper.getUseIntegralCount(openid); } /** * 待入账的总积分数 * @param userOpenId * @return */ @Override public Integer getStayIntegralCount(String userOpenId) { return useIntegralMapper.getStayIntegralCount(userOpenId); } /** * 全部积分记录 * @param useIntegral * @return */ @Override public List listIntegralInfo(UseIntegral useIntegral) { return useIntegralMapper.listIntegralInfo(useIntegral); } @Override public List listIntegralConfig(IntegralConfig integralConfig) { return useIntegralMapper.listIntegralConfig(integralConfig); } /** * 查询会员等级信息 * @return */ @Override public List getRankRule() { return useIntegralMapper.getRankRule(); } /** * 查询待入账积分的集合 * @return */ @Override public List listStayIntegral(StayIntegral stayIntegral){ return useIntegralMapper.listStayIntegral(stayIntegral); } @Override public List listUseIntegral(UseIntegral useIntegral) { return useIntegralMapper.listUseIntegral(useIntegral); } @Override @Transient public boolean updateIntegralStayToAlready() { StayIntegral stayIntegral = new StayIntegral(); stayIntegral.setStayStatus(1); stayIntegral.setStayRecordedTime(new Date()); /*获取所有的待入账积分*/ List stayIntegralList = useIntegralMapper.listStayIntegral(stayIntegral); for(StayIntegral si : stayIntegralList ){ /*增加入账积分,累计积分,减去待入账积分*/ Member member = memberMapper.getMemberByUserOpenId(si.getUserOpenId()); Member mem = new Member(); mem.setUserOpenid(si.getUserOpenId()); mem.setUserSurplusIntegral(member.getUserSurplusIntegral() + si.getStayNumber()); mem.setUserIntegral(member.getUserIntegral() + si.getStayNumber()); mem.setUserStayIntegral(member.getUserStayIntegral() - si.getStayNumber()); Integer flag = memberMapper.updateMemberByUserId(mem); /*添加入账日志*/ UseIntegral useIntegral = new UseIntegral(); useIntegral.setUserOpenId(si.getUserOpenId()); useIntegral.setIntegralNumber(si.getStayNumber()); useIntegral.setStayId(si.getStayId()); useIntegral.setIntegralBeforeNumber(member.getUserSurplusIntegral()); //变动前 useIntegral.setIntegralEndNumber(mem.getUserSurplusIntegral()); //变动后 useIntegral.setIntegralType(1); //入账 useIntegral.setConfigId(si.getConfigId()); useIntegral.setIntegralRemark("由待入账变更为已入账"); flag = useIntegralMapper.addUseIntegral(useIntegral); if (flag < 1) { throw new RuntimeException("添加入账日志失败"); } /*删除日志*/ UseIntegral ui = new UseIntegral(); ui.setUserOpenId(si.getUserOpenId()); ui.setStayId(si.getStayId()); ui.setIntegralType(3); flag = useIntegralMapper.delUseIntegral(ui); if (flag < 1) { throw new RuntimeException("删除待入账日志失败"); } /*再将待入账信息改为已入账状态*/ StayIntegral stayInte = new StayIntegral(); stayInte.setStayId(si.getStayId()); stayInte.setStayStatus(2); flag = useIntegralMapper.updateStayIntegral(stayInte); if (flag < 1) { throw new RuntimeException("修改待入账状态失败"); } } /*增加入账记录*/ return true; } }