package com.ibeetl.admin.console.service; import com.google.gson.Gson; import com.ibeetl.admin.console.dao.OperateManageDao; import com.ibeetl.admin.console.dao.SettingConsoleDao; import com.ibeetl.admin.console.model.*; import com.ibeetl.admin.console.util.DoubleUtil; import com.ibeetl.admin.core.entity.CoreSetMoney; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.XzxCityPartner; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.web.JsonResult; import org.apache.commons.lang3.StringUtils; import org.beetl.sql.core.engine.PageQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.*; @Service @Transactional public class OperateManageApiService extends CoreBaseService { Logger log = LoggerFactory.getLogger(this.getClass()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Autowired OperateManageDao operateManageDao; @Autowired SettingConsoleDao settingConsoleDao; @Autowired RedisService redisService; @Autowired XzxCityPartnerService cityPartnerService; @Autowired CorePlatformService platformService; public List> queryCityByPartnerId() { List partnerIds = cityPartnerService.queryPartnerByCurrent(); List cityIds = operateManageDao.queryCityByPartnerId(partnerIds); List> list = operateManageDao.queryAreaByCityIds(cityIds); return list; } public Map querOperaIteml(ItemModel item) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); //item.setPartnerIds(partnerIds); if (null != partnerIds && partnerIds.size() > 0) { List townIds = cityPartnerService.queryTownIdsByPartnerId(partnerIds.get(0)); item.setTownIdList(townIds); } Map map = new HashMap<>(); int p = item.getPageNum(); p = (p - 1) * item.getLimitNum(); item.setPageNum(p); List list = operateManageDao.queryOperaIteml(item); for (ItemModel itemModel : list) { String townId = itemModel.getCityId(); if (null != townId && !"".equals(townId)) { Map objmap = operateManageDao.queryCityByTownId(townId); String cityId = objmap.get("cid").toString(); String pid = objmap.get("pid").toString(); List> resList = new ArrayList<>(); List detailList = new ArrayList<>(); detailList.add(pid); detailList.add(cityId); detailList.add(townId); resList.add(detailList); itemModel.setResultArea(resList); } } map.put("data", list); map.put("count", operateManageDao.queryOperaItemlCount(item)); map.put("code", 0); return map; } public Map queryPackageOperaIteml(ItemModel item) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); item.setPartnerIds(partnerIds); Map map = new HashMap<>(); int p = item.getPageNum(); p = (p - 1) * item.getLimitNum(); item.setPageNum(p); List list = operateManageDao.queryOperaIteml1(item); map.put("data", list); map.put("count", operateManageDao.queryOperaItemlCount1(item)); map.put("code", 0); return map; } @Transactional(rollbackFor = SettingConsoleService.RollbackException.class) public Map addOperateParent(ItemModel item) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { CoreUser user = platformService.getCurrentUser(); item.setPartnerId(user.getId() + ""); } Map map = new HashMap<>(); item.setItemType(System.currentTimeMillis() + "" + (int) (Math.random() * (10000 - 10) + 10)); item.setCreateTime(sdf.format(new Date())); // 对排序字段进行处理 setSort(item); List townIdList = item.getTownIdList(); int i = 0; for (String townId : townIdList) { item.setCityId(townId); i = settingConsoleDao.insertItemOperate(item); } setSortAggin(item); map.put("count", i); map.put("code", 0); return map; } @Transactional(rollbackFor = SettingConsoleService.RollbackException.class) public Map addOperateParent1(ItemModel item) { //CoreUser user = platformService.getCurrentUser(); //item.setPartnerId(item.getPackageId().getId()+""); Map map = new HashMap<>(); item.setItemType(System.currentTimeMillis() + "" + (int) (Math.random() * (10000 - 10) + 10)); item.setCreateTime(sdf.format(new Date())); // 对排序字段进行处理 setSort1(item); int i = settingConsoleDao.insertItemOperate1(item); setSortAggin1(item); // updateItemForRedis(); //redisService.remove("environmentalInfoList"); //redisService.remove("environmentalInfoListNew"); //redisService.remove("xzx:sys:category"); map.put("count", i); map.put("code", 0); return map; } void setSort1(ItemModel item) { ItemModel im = new ItemModel(); im.setLimit(1000); im.setPackageId(item.getPackageId()); List list = settingConsoleDao.querIteml1(im); log.info("------list.size() : {} -----", list.size()); // 找到原始的sort数据 int originalSort = item.getSort(); for (ItemModel imx : list) { if (originalSort <= imx.getSort()) { imx.setSort(imx.getSort() + 1); } } for (ItemModel imx : list) { settingConsoleDao.updateItem1(imx); } } void setSort(ItemModel item) { ItemModel im = new ItemModel(); im.setLimit(1000); im.setParentId(item.getParentId()); List list = settingConsoleDao.querIteml(im); log.info("------list.size() : {} -----", list.size()); // 找到原始的sort数据 int originalSort = item.getSort(); for (ItemModel imx : list) { if (originalSort <= imx.getSort()) { imx.setSort(imx.getSort() + 1); } } for (ItemModel imx : list) { settingConsoleDao.updateItem(imx); } } void setSortAggin(ItemModel item) { ItemModel im = new ItemModel(); im.setLimit(1000); im.setParentId(item.getParentId()); List list = settingConsoleDao.querIteml(im); list.sort((x, y) -> Integer.compare(x.getSort(), y.getSort())); int f = 1; for (ItemModel itemModel : list) { itemModel.setSort(f++); } for (ItemModel itemModel : list) { settingConsoleDao.updateItem(itemModel); } } void setSortAggin1(ItemModel item) { ItemModel im = new ItemModel(); im.setLimit(1000); im.setParentId(item.getParentId()); List list = settingConsoleDao.querIteml1(im); list.sort((x, y) -> Integer.compare(x.getSort(), y.getSort())); int f = 1; for (ItemModel itemModel : list) { itemModel.setSort(f++); } for (ItemModel itemModel : list) { settingConsoleDao.updateItem1(itemModel); } } /** * 更新redis里面的数据 */ public void updateItemForRedis() { List list = operateManageDao.queryOperaItemAll(); list = parentUtils(list); Gson gson = new Gson(); String str = gson.toJson(list); redisService.set("environmentalInfoList", str); } public void updateItemForRedis1() { List list = operateManageDao.queryOperaItemAll1(); list = parentUtils(list); Gson gson = new Gson(); String str = gson.toJson(list); //redisService.set("environmentalInfoList", str); } // 递归操作父子结构数据 List parentUtils(List parentlist) { List list = new ArrayList<>(); for (ItemModel itemModel : parentlist) { if (itemModel.getParentId() == null) { itemModel.setList(childUtils(parentlist, itemModel.getId())); list.add(itemModel); } } log.info("----更新redis里面的分类数据:{}", list); return list; } List childUtils(List childlist, Long id) { List list = new ArrayList<>(); for (ItemModel itemModel : childlist) { if (itemModel.getParentId() == id) { itemModel.setList(childUtils(childlist, itemModel.getId())); list.add(itemModel); } } return list; } public Map delPackageOperateItem(ItemModel item) { Map map = new HashMap<>(); ItemModel im = new ItemModel(); im.setLimit(10); im.setParentId(item.getId()); List list = settingConsoleDao.querIteml1(im); if (list.size() > 0) { map.put("code", -1); map.put("num", 0); return map; } int i = settingConsoleDao.delItem1(item); map.put("code", 0); map.put("num", i); return map; } public Map delOperateItem(ItemModel item) { Map map = new HashMap<>(); ItemModel im = new ItemModel(); im.setLimit(10); im.setParentId(item.getId()); List list = settingConsoleDao.querIteml(im); if (list.size() > 0) { map.put("code", -1); map.put("num", 0); return map; } int i = settingConsoleDao.delItem(item); // updateItemForRedis(); redisService.remove("environmentalInfoList"); redisService.remove("environmentalInfoListNew"); redisService.remove("xzx:sys:category"); map.put("code", 0); map.put("num", i); return map; } /** * 更新 * * @param item * @return */ @Transactional(rollbackFor = SettingConsoleService.RollbackException.class) public Map updateOperateItem(ItemModel item) { Map map = new HashMap<>(); //ItemModel model = operateManageDao.queryItemById(item); String cityId = item.getCityId(); //根据区域查询围栏 List orderList = operateManageDao.queryOrderByCityId(cityId); if (null != orderList && orderList.size() > 0) { return null; } // 对排序字段进行处理 setSort(item); int i = settingConsoleDao.updateItem(item); setSortAggin(item); redisService.remove("environmentalInfoList"); redisService.remove("environmentalInfoListNew"); //redisService.hdel( "xzx:sys:category", item.getCityId()); //redisService.remove("xzx:sys:category"); //redisService.remove(""); //updateItemForRedis(); map.put("code", 0); map.put("num", i); return map; } @Transactional(rollbackFor = SettingConsoleService.RollbackException.class) public Map updateOperateItem1(ItemModel item) { Map map = new HashMap<>(); // 对排序字段进行处理 setSort1(item); int i = settingConsoleDao.updateItem1(item); setSortAggin1(item); map.put("code", 0); map.put("num", i); return map; } public Map queryOperateItemList(ItemModel item) { Map map = new HashMap<>(); int p = item.getPageNum(); p = (p - 1) * item.getLimitNum(); item.setPageNum(p); List list = operateManageDao.queryOperateItemList(item); for (ItemModel obj : list) { obj = queryChildItem(obj); } map.put("data", list); map.put("count", operateManageDao.queryOperateItemCount(item)); map.put("code", 0); return map; } public Map queryOperateItemList1(ItemModel item) { Map map = new HashMap<>(); int p = item.getPageNum(); p = (p - 1) * item.getLimitNum(); item.setPageNum(p); List list = operateManageDao.queryOperateItemList1(item); for (ItemModel obj : list) { obj = queryChildItem(obj); } map.put("data", list); map.put("count", operateManageDao.queryOperateItemCount1(item)); map.put("code", 0); return map; } /** * 无限子类算法(时间有限) * * @param item * @return */ private ItemModel queryChildItem(ItemModel item) { List child = operateManageDao.queryOperateItemChildren(item); List childm = new ArrayList<>(); for (ItemModel obj : child) { childm.add(obj); } item.setChildren(childm); for (ItemModel cObj : childm) { if (null != cObj.getParentId()) { queryChildItem(cObj); } } return item; } public Map querySysStorageList(SysStorageApiModel storageModel) { List partnerIds = cityPartnerService.queryPartnerByCurrent(); if (null != partnerIds && partnerIds.size() > 0) { String partnerId = partnerIds.get(0); List townIds = cityPartnerService.queryTownIdsByPartnerId(partnerId); storageModel.setTownIds(townIds); } Map m = new HashMap<>(); int p = storageModel.getPage(); p = (p - 1) * storageModel.getLimit(); storageModel.setPage(p); m.put("data", operateManageDao.querySysStorageApiList(storageModel)); m.put("count", operateManageDao.querySysStorageApiCount(storageModel)); m.put("code", 0); return m; } /** * 修改仓库 * * @param storageModel * @return */ public int updateSysStorageApi(SysStorageApiModel storageModel) { return operateManageDao.updateSysStorageApi(storageModel); } /** * 删除仓库 * * @param storageModel * @return */ public int delSysStorageApi(SysStorageApiModel storageModel) { return operateManageDao.delSysStorageApi(storageModel); } /** * 添加仓库 * * @param storageModel * @return */ public int addSysStorageApi(SysStorageApiModel storageModel) { storageModel.setCreateTime(sdf.format(new Date())); return operateManageDao.addSysStorageApi(storageModel); } /** * 查询 * * @param bannerModel * @return */ public Map queryBannerApiList(BannerModel bannerModel) { Map map = new HashMap<>(); int p = bannerModel.getPage(); p = (p - 1) * bannerModel.getLimit(); bannerModel.setPage(p); map.put("data", settingConsoleDao.queryBannerList(bannerModel)); map.put("count", settingConsoleDao.queryBannerListCount(bannerModel)); map.put("code", 0); return map; } /** * 添加 * * @param bannerModel * @return */ public JsonResult insertBannerApi(BannerModel bannerModel) { CoreUser user = platformService.getCurrentUser(); XzxCityPartner partner = cityPartnerService.queryById(user.getId()); if (null != partner) { bannerModel.setPartnerId(user.getId() + ""); } else { if (null != bannerModel.getCityId() && !"".equals(bannerModel.getCityId())) { partner = cityPartnerService.queryCityPartnerByCityId(bannerModel.getCityId()); if (null != partner) { bannerModel.setPartnerId(partner.getId() + ""); } } } bannerModel.setCreateTime(sdf.format(new Date())); if (settingConsoleDao.insertBanner(bannerModel) > 0) { return JsonResult.success(); } else { return JsonResult.failMessage("保存失败"); } } /** * 更新 * * @param bannerModel * @return */ public int updateBannerApi(BannerModel bannerModel) { return settingConsoleDao.updateBanner(bannerModel); } /** * 删除 * * @param id * @return */ public int delBannerApi(String id) { //redisService.remove(); return settingConsoleDao.delBanner(id); } /** * 根据条件查询 * * @param query */ public void moneySetting(PageQuery query) { PageQuery ret = settingConsoleDao.queryByCondtion(query); queryListAfter(ret.getList()); } @Transactional(rollbackFor = {}) public void updateMoneySetting(CoreSetMoney money) { if (!StringUtils.isEmpty(money.getAgentPrice())) { settingConsoleDao.updateAgentPrice(money); } if (!StringUtils.isEmpty(money.getTimeInterval())) { settingConsoleDao.updateTimeInterval(money); } if (!StringUtils.isEmpty(money.getStartTime())) { settingConsoleDao.updateStratTime(money); } if (!StringUtils.isEmpty(money.getEndTime())) { settingConsoleDao.updateEndTime(money); } if (!StringUtils.isEmpty(money.getOverdrawPrice())) { Map m = settingConsoleDao.queryOverdrawPrice(); String limitPrice = m.get("configValue").toString(); List orderIds = settingConsoleDao.queryRKOrderIds(m.get("configValue").toString(), "1"); if (null != orderIds && orderIds.size() > 0) { if (money.getOverdrawPrice().equals(m.get("configValue").toString())) { // 需要更新所有account表的透支额度,但是不更新已经修改过的用户额度 money.setWarehousingPrice(DoubleUtil.roundTwo(money.getWarehousingPrice())); money.setOverdrawPrice(DoubleUtil.roundTwo(money.getOverdrawPrice())); settingConsoleDao.updateOverdrawPrice(money); settingConsoleDao.updateAccountOverdrawPrice(money.getOverdrawPrice(), m.get("configValue").toString(), orderIds, null); } else { money.setWarehousingPrice(DoubleUtil.roundTwo(money.getWarehousingPrice())); money.setOverdrawPrice(DoubleUtil.roundTwo(money.getOverdrawPrice())); settingConsoleDao.updateOverdrawPrice(money); settingConsoleDao.updateAccountOverdrawPrice(money.getOverdrawPrice(), m.get("configValue").toString(), orderIds, "1"); } } } if (!StringUtils.isEmpty(money.getWarehousingPrice())) { Map m = settingConsoleDao.queryWarehousingPrice(); List orderIds = settingConsoleDao.queryRKOrderIds(m.get("configValue").toString(), null); if (null != orderIds && orderIds.size() > 0) { if (money.getOverdrawPrice().equals(m.get("configValue").toString())) { money.setWarehousingPrice(DoubleUtil.roundTwo(money.getWarehousingPrice())); money.setOverdrawPrice(DoubleUtil.roundTwo(money.getOverdrawPrice())); settingConsoleDao.updateWarehousingPrice(money); settingConsoleDao.updateAccountWarehousingPrice(money.getWarehousingPrice(), m.get("configValue").toString(), orderIds, null); } else { money.setWarehousingPrice(DoubleUtil.roundTwo(money.getWarehousingPrice())); money.setOverdrawPrice(DoubleUtil.roundTwo(money.getOverdrawPrice())); settingConsoleDao.updateWarehousingPrice(money); settingConsoleDao.updateAccountWarehousingPrice(money.getWarehousingPrice(), m.get("configValue").toString(), orderIds, "1"); } } } if (!StringUtils.isEmpty(money.getRechargePrice())) { settingConsoleDao.updateRechargePrice(money); } if (!StringUtils.isEmpty(money.getOrderTimeout())) { settingConsoleDao.updateOrderTimeout(money); } if (!StringUtils.isEmpty(money.getOrderTotal())) { settingConsoleDao.updateOrderTotal(money); } } public UserModel checkUserNameByPhone(String phone, String type) { return operateManageDao.checkUserNameByPhone(phone, type); } }