import com.dySweetFishPlugin.redis.RedisService import com.dySweetFishPlugin.sql.TableIdService import com.dySweetFishPlugin.sql.dao.TunaService import com.sweetfish.convert.json.JsonConvert import com.sweetfish.service.RetResult import com.yinjie.printerAuthorize.business.dao.PrintersDao import com.yinjie.printerAuthorize.common.api.BusinessExecutor import com.yinjie.printerAuthorize.common.api.NoSqlKeysService import com.yinjie.printerAuthorize.common.api.printersAuthorize.AuthorizationService import com.yinjie.printerAuthorize.common.datas.ERPModule import com.yinjie.printerAuthorize.common.datas.LocalTypeToken import com.yinjie.printerAuthorize.common.datas.RedisKeys import com.yinjie.printerAuthorize.common.entity.base.InvokeCallParams import com.yinjie.printerAuthorize.common.entity.base.InvokeCallResult import com.yinjie.printerAuthorize.common.entity.printers.AuthorizationItem import com.yinjie.printerAuthorize.common.entity.printers.PrinterClient import org.apache.commons.lang3.StringUtils import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger import javax.annotation.Resource class BE_AuthorizePrinterClient implements BusinessExecutor { private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName()) @Resource private JsonConvert jsonConvert @Resource private RedisService redisService @Resource private NoSqlKeysService keysService @Resource private TunaService tunaService @Resource private TableIdService tableIdService @Resource private AuthorizationService authorizationService private PrintersDao printersDao @Override String scriptName() { return "重新授权数码机客户" } @Override ERPModule module() { return ERPModule.PRINTERS } @Override void start(long supplierCode) { printersDao = tunaService.generate(PrintersDao.class) } @Override RetResult checkExecute(InvokeCallParams source) { PrinterClient srcPrinter = jsonConvert.convertFrom(PrinterClient.class, source.params) String redisJson = redisService.hget(keysService.getRedisKey(RedisKeys.KEY_PRINTER_CLIENT_ID, source.supplierCode), srcPrinter.id as String) if (StringUtils.isBlank(redisJson)) { return RetResult. errorT().retinfo("目标机台不存在") } if (srcPrinter.authorizeDate == null) { return RetResult. errorT().retinfo("未指定机台授权日期") } //检查一下传入的权限字段是否和设置的位数一致 if (StringUtils.isBlank(srcPrinter.permissions)) { return RetResult. errorT().retinfo("机台权限未设置") } InvokeCallParams callParams = InvokeCallParams.newBuilder() .dataSourceId(source.dataSourceId) .supplierCode(source.supplierCode) .build() RetResult retResult = authorizationService.callAuthorize(callParams, source.currentUser, source.dataSourceId, source.supplierCode) if (retResult.isSuccess()) { List itemList = jsonConvert.convertFrom(LocalTypeToken.listAuthorizationItem, retResult.result.data) if (srcPrinter.permissions.length() != itemList.size()) { return RetResult. errorT().retinfo("机台权限位数不正确") } } return RetResult. successT().result(source) } RetResult execute(InvokeCallParams source) { PrinterClient srcPrinter = jsonConvert.convertFrom(PrinterClient.class, source.params) String redisJson = redisService.hget(keysService.getRedisKey(RedisKeys.KEY_PRINTER_CLIENT_ID, source.supplierCode), srcPrinter.id as String) PrinterClient redisPrinter = jsonConvert.convertFrom(PrinterClient.class, redisJson) redisPrinter.setAuthorizeDate(srcPrinter.authorizeDate) redisPrinter.setAuthorizeDateLong(redisPrinter.authorizeDate.time) redisPrinter.setPermissions(srcPrinter.permissions) PrinterClient.update(redisPrinter, source.currentUser.id) redisService.hset(keysService.getRedisKey(RedisKeys.KEY_PRINTER_CLIENT_ID, source.supplierCode), redisPrinter.id as String, jsonConvert.convertTo(redisPrinter)) redisService.hset(keysService.getRedisKey(RedisKeys.KEY_PRINTER_CLIENT_CODE, source.supplierCode), redisPrinter.printerUniqueCode, jsonConvert.convertTo(redisPrinter)) printersDao.authorizePrinterClient(redisPrinter, source.dataSourceId, source.supplierCode) return RetResult. successT().result(InvokeCallResult.success()) } }