package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.mall.dto.CashOutSettingDto; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallBonusRecord; import cc.mrbird.febs.mall.entity.MallSystemSetting; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallBonusRecordMapper; import cc.mrbird.febs.mall.mapper.MallSystemSettingMapper; import cc.mrbird.febs.mall.service.ICommonService; import cc.mrbird.febs.mall.service.ISystemService; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * @author wzy * @date 2022-05-19 **/ @Slf4j @Service @RequiredArgsConstructor public class SystemServiceImpl implements ISystemService { private final DataDictionaryCustomMapper dictionaryCustomMapper; private final ICommonService commonService; private final MallSystemSettingMapper mallSystemSettingMapper; private final MallBonusRecordMapper mallBonusRecordMapper; @Override @Transactional(rollbackFor = Exception.class) public void bonusSystemSetting(Map map) { for (Map.Entry entry : map.entrySet()) { if (entry.getValue() instanceof String) { dictionaryCustomMapper.updateDicValueByTypeAndCode(null, entry.getKey(), (String) entry.getValue()); } else if (entry.getValue() instanceof LinkedHashMap) { LinkedHashMap bonusSettingMap = (LinkedHashMap) entry.getValue(); LambdaQueryWrapper update = new LambdaQueryWrapper<>(); update.eq(MallSystemSetting::getId, bonusSettingMap.get("id")) .eq(MallSystemSetting::getRevision, bonusSettingMap.get("revision")); MallSystemSetting old = mallSystemSettingMapper.selectById(1L); MallSystemSetting setting = new MallSystemSetting(); setting.setRevision((Integer) bonusSettingMap.get("revision") + 1); setting.setId(Long.parseLong(bonusSettingMap.get("id").toString())); setting.setAllBonus(new BigDecimal(bonusSettingMap.get("allBonus").toString())); setting.setAgentBonus(new BigDecimal(bonusSettingMap.get("agentBonus").toString())); setting.setPartnerBonus(new BigDecimal(bonusSettingMap.get("partnerBonus").toString())); int i = mallSystemSettingMapper.update(setting, update); if (i == 0) { throw new FebsException("请刷新页面"); } if (old.getAllBonus().compareTo(setting.getAllBonus()) != 0 || old.getAgentBonus().compareTo(setting.getAgentBonus()) != 0 || old.getPartnerBonus().compareTo(setting.getPartnerBonus()) != 0) { MallBonusRecord record = new MallBonusRecord(); record.setAmount(BigDecimal.ZERO); record.setType(999); record.setComment(JSONObject.toJSONString(old) + "-" + JSONObject.toJSONString(setting)); record.setCreateTime(new Date()); mallBonusRecordMapper.insert(record); } } else { List> value = (List>) entry.getValue(); for (LinkedHashMap dic : value) { String type = (String) dic.get("type"); String code = (String) dic.get("code"); String dataValue = (String) dic.get("value"); dictionaryCustomMapper.updateDicValueByTypeAndCode(type, code, dataValue); } } } } @Override public void cashOutSetting(String type, String code, CashOutSettingDto cashOutSettingDto, String 提现设置) { } }