import com.sdtool.business.dao.MallDao import com.sdtool.common.api.BusinessExecutor import com.sdtool.common.api.NoSqlKeysService import com.sdtool.common.api.mall.MallAdminService import com.sdtool.common.datas.ERPModule import com.sdtool.common.datas.RedisKeys import com.sdtool.common.entity.base.InvokeCallParams import com.sdtool.common.entity.base.InvokeCallResult import com.sdtool.common.entity.mall.MallUser import com.sdtool.common.entity.mall.MallUserLevel import com.dySweetFishPlugin.redis.RedisService import com.dySweetFishPlugin.sql.TableIdService import com.dySweetFishPlugin.sql.dao.OperatorWait import com.dySweetFishPlugin.sql.dao.TunaService import com.dySweetFishPlugin.tool.lang.DateUtil import com.sweetfish.convert.json.JsonConvert import com.sweetfish.service.RetResult import groovy.json.JsonSlurper import org.apache.commons.lang3.StringUtils import javax.annotation.Resource import java.time.LocalDateTime import java.time.ZoneId /** * @Author: xl Created on 2024-05-11 * @Content: */ class BE_MallUser_SetLevel implements BusinessExecutor { @Resource TunaService tunaService @Resource JsonConvert jsonConvert @Resource TableIdService tableIdService @Resource RedisService redisService @Resource NoSqlKeysService keysService @Resource MallAdminService mallAdminService private MallDao mallDao @Override String scriptName() { return "商城客户-修改此客户级别" } @Override ERPModule module() { return ERPModule.MALL_ADMIN } @Override OperatorWait getAWait(InvokeCallParams s) { return OperatorWait.ASNYC } @Override boolean needLogin(InvokeCallParams source) { return true } @Override void start(long supplierCode) { mallDao = tunaService.generate(MallDao.class) } @Override RetResult checkExecute(InvokeCallParams source) { JsonSlurper jsonSlurper = new JsonSlurper() def invokeData = jsonSlurper.parseText(source.params) String ids = invokeData["ids"] long idLevel = invokeData["idLevel"] as long if (StringUtils.isBlank(ids)) { return RetResult. errorT().retinfo("没有传入用户id") } if (idLevel <= 0) { return RetResult. errorT().retinfo("没有传入级别id") } return RetResult. successT().result(source) } RetResult execute(InvokeCallParams source) { JsonSlurper jsonSlurper = new JsonSlurper() def invokeData = jsonSlurper.parseText(source.params) String ids = invokeData["ids"] long idLevel = invokeData["idLevel"] as long MallUserLevel userLevel = mallAdminService.getRedisMallUserLevel(idLevel, source.supplierCode) List updateList = mallAdminService.getRedisMallUserList(ids.split(","), source.supplierCode).findAll { it != null } updateList.each { mallUser -> mallUser.idLevel = userLevel.id //计算过期时间 if ((mallUser.levelExpireDateLong <= 0L) && (userLevel.expireDays > 0)) { LocalDateTime createTime = DateUtil.dateToLocalDateTime(mallUser.createTime).toLocalDate().atStartOfDay() LocalDateTime newDateTime = createTime.plusDays(userLevel.expireDays + 1).toLocalDate().atStartOfDay() mallUser.levelExpireDateLong = newDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() mallUser.levelExpireDate = Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant()) } } int iData = mallDao.setMallUserIdLevel(updateList, source.dataSourceId, source.supplierCode) if (iData > 0) { Map redisMap = updateList.collectEntries { [String.valueOf(it.id), jsonConvert.convertTo(it)] } redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_MALL_User, source.supplierCode), redisMap) return RetResult. successT() } return RetResult. errorT().retinfo("修改用户级别失败") } }