diff --git a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/Id.java b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/Id.java index 22125d4..2b4385a 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/Id.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/Id.java @@ -1,54 +1,54 @@ -package com.bonus.common.houqin.utils.id; - -import com.google.common.base.Preconditions; - -import java.time.LocalDateTime; -import java.time.ZoneId; - -public class Id { - private static final long EPOCH = LocalDateTime.of(2021, 12, 29, 9, 2).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); - private static final long SEQUENCE_BITS = 12L; - private static final long WORKER_ID_BITS = 10L; - static final long WORKER_ID_MAX_VALUE = 1024L; - private static final long SEQUENCE_MASK = 4095L; - private static final long WORKER_ID_LEFT_SHIFT_BITS = 12L; - private static final long TIMESTAMP_LEFT_SHIFT_BITS = 22L; - static Long WORKER_ID; - private static long SEQUENCE; - private static long LAST_TIME; - - public Id(Long workerId) { - WORKER_ID = workerId; - } - - public static long next() { - return nextKey(); - } - - public static String nextString() { - return String.valueOf(next()); - } - - private static synchronized long nextKey() { - long currentMillis = System.currentTimeMillis(); - Preconditions.checkState(LAST_TIME <= currentMillis, "Clock is moving backwards, last time is %d milliseconds, current time is %d milliseconds", LAST_TIME, currentMillis); - if (LAST_TIME == currentMillis) { - if (0L == (SEQUENCE = SEQUENCE + 1L & 4095L)) { - currentMillis = waitUntilNextTime(currentMillis); - } - } else { - SEQUENCE = 0L; - } - - LAST_TIME = currentMillis; - return currentMillis - EPOCH << 22 | WORKER_ID << 12 | SEQUENCE; - } - - private static long waitUntilNextTime(final long lastTime) { - long time; - for(time = System.currentTimeMillis(); time <= lastTime; time = System.currentTimeMillis()) { - } - - return time; - } -} +//package com.bonus.common.houqin.utils.id; +// +//import com.google.common.base.Preconditions; +// +//import java.time.LocalDateTime; +//import java.time.ZoneId; +// +//public class Id { +// private static final long EPOCH = LocalDateTime.of(2021, 12, 29, 9, 2).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); +// private static final long SEQUENCE_BITS = 12L; +// private static final long WORKER_ID_BITS = 10L; +// static final long WORKER_ID_MAX_VALUE = 1024L; +// private static final long SEQUENCE_MASK = 4095L; +// private static final long WORKER_ID_LEFT_SHIFT_BITS = 12L; +// private static final long TIMESTAMP_LEFT_SHIFT_BITS = 22L; +// static Long WORKER_ID; +// private static long SEQUENCE; +// private static long LAST_TIME; +// +// public Id(Long workerId) { +// WORKER_ID = workerId; +// } +// +// public static long next() { +// return nextKey(); +// } +// +// public static String nextString() { +// return String.valueOf(next()); +// } +// +// private static synchronized long nextKey() { +// long currentMillis = System.currentTimeMillis(); +// Preconditions.checkState(LAST_TIME <= currentMillis, "Clock is moving backwards, last time is %d milliseconds, current time is %d milliseconds", LAST_TIME, currentMillis); +// if (LAST_TIME == currentMillis) { +// if (0L == (SEQUENCE = SEQUENCE + 1L & 4095L)) { +// currentMillis = waitUntilNextTime(currentMillis); +// } +// } else { +// SEQUENCE = 0L; +// } +// +// LAST_TIME = currentMillis; +// return currentMillis - EPOCH << 22 | WORKER_ID << 12 | SEQUENCE; +// } +// +// private static long waitUntilNextTime(final long lastTime) { +// long time; +// for(time = System.currentTimeMillis(); time <= lastTime; time = System.currentTimeMillis()) { +// } +// +// return time; +// } +//} diff --git a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdProperties.java b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdProperties.java index 60c318c..fb3f6bc 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdProperties.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdProperties.java @@ -1,37 +1,37 @@ -package com.bonus.common.houqin.utils.id; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties( - prefix = "id" -) -public class IdProperties { - public static final String PREFIX = "id"; - private Boolean enabled = true; - private String key = "worker_id_sequence"; - private String workspace; - - public Boolean getEnabled() { - return this.enabled; - } - - public String getKey() { - return this.key; - } - - public String getWorkspace() { - return this.workspace; - } - - public void setEnabled(final Boolean enabled) { - this.enabled = enabled; - } - - public void setKey(final String key) { - this.key = key; - } - - public void setWorkspace(final String workspace) { - this.workspace = workspace; - } -} +//package com.bonus.common.houqin.utils.id; +// +//import org.springframework.boot.context.properties.ConfigurationProperties; +// +//@ConfigurationProperties( +// prefix = "id" +//) +//public class IdProperties { +// public static final String PREFIX = "id"; +// private Boolean enabled = true; +// private String key = "worker_id_sequence"; +// private String workspace; +// +// public Boolean getEnabled() { +// return this.enabled; +// } +// +// public String getKey() { +// return this.key; +// } +// +// public String getWorkspace() { +// return this.workspace; +// } +// +// public void setEnabled(final Boolean enabled) { +// this.enabled = enabled; +// } +// +// public void setKey(final String key) { +// this.key = key; +// } +// +// public void setWorkspace(final String workspace) { +// this.workspace = workspace; +// } +//} diff --git a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdWorkConfiguration.java b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdWorkConfiguration.java index d3963ec..59b651b 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdWorkConfiguration.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/id/IdWorkConfiguration.java @@ -1,123 +1,123 @@ -package com.bonus.common.houqin.utils.id; - -import cn.hutool.core.text.CharSequenceUtil; -import org.apache.commons.io.FileUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.nio.channels.FileChannel; -import java.nio.channels.FileLock; -import java.nio.charset.StandardCharsets; -import java.util.Collection; -import java.util.UUID; - -@Component -@ConditionalOnClass({StringRedisTemplate.class}) -@EnableConfigurationProperties({IdProperties.class}) -@ConditionalOnProperty( - prefix = "id", - name = {"enabled"}, - havingValue = "true", - matchIfMissing = true -) -public class IdWorkConfiguration { - private static final Logger log = LoggerFactory.getLogger(IdWorkConfiguration.class); - private final IdProperties idProperties; - - public IdWorkConfiguration(StringRedisTemplate redisTemplate, IdProperties idProperties) throws IOException { - this.idProperties = idProperties; - Long workerId = this.getLocalWorkId(); - - try { - while(workerId == null) { - Long newWorkId = redisTemplate.opsForValue().increment(idProperties.getKey(), 1L); - this.saveLocalWorkId(String.valueOf(newWorkId)); - workerId = this.getLocalWorkId(); - } - } catch (Throwable var5) { - log.error("获取workID失败", var5); - throw var5; - } - - if (workerId > 1024L) { - throw new RuntimeException("超过最大启动实例"); - } else { - Id.WORKER_ID = workerId; - } - } - - private void saveLocalWorkId(String workId) throws IOException { - File workIdHome = this.getWorkIdHome(); - String var10002 = String.valueOf(workIdHome.getAbsoluteFile()); - FileUtils.writeStringToFile(new File(var10002 + "/" + String.valueOf(UUID.randomUUID()) + ".lock"), workId, StandardCharsets.UTF_8); - } - - private File getWorkIdHome() { - String workHome = this.idProperties.getWorkspace(); - if (CharSequenceUtil.isBlank(workHome)) { - workHome = FileUtils.getUserDirectoryPath() + "/.workId/"; - } - - String var10002 = CharSequenceUtil.removeSuffix(workHome, "/"); - return new File(var10002 + "/" + this.idProperties.getKey()); - } - - private Long getLocalWorkId() throws IOException { - File workIdHome = this.getWorkIdHome(); - if (!workIdHome.exists()) { - return null; - } - - Collection files = FileUtils.listFiles(workIdHome, new String[]{"lock"}, false); - if (CollectionUtils.isEmpty(files)) { - return null; - } - - for (File file : files) { - FileChannel channel = null; - FileLock fileLock = null; - - try { - RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw"); - channel = randomAccessFile.getChannel(); - fileLock = channel.tryLock(); - - if (fileLock != null) { // 成功获取文件锁 - Long workId = Long.valueOf(randomAccessFile.readLine()); - releaseResourcesOnShutdown(channel); - return workId; - } - } catch (IOException e) { - log.error("Error accessing workId file", e); - } finally { - if (fileLock == null && channel != null) { - try { - channel.close(); - } catch (IOException e) { - log.error("Failed to close file channel", e); - } - } - } - } - return null; - } - - private void releaseResourcesOnShutdown(FileChannel channel) { - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - try { - channel.close(); - } catch (IOException e) { - log.error("Release WorkId file lock error", e); - } - })); - } -} +//package com.bonus.common.houqin.utils.id; +// +//import cn.hutool.core.text.CharSequenceUtil; +//import org.apache.commons.io.FileUtils; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.boot.context.properties.EnableConfigurationProperties; +//import org.springframework.data.redis.core.StringRedisTemplate; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.io.File; +//import java.io.IOException; +//import java.io.RandomAccessFile; +//import java.nio.channels.FileChannel; +//import java.nio.channels.FileLock; +//import java.nio.charset.StandardCharsets; +//import java.util.Collection; +//import java.util.UUID; +// +//@Component +//@ConditionalOnClass({StringRedisTemplate.class}) +//@EnableConfigurationProperties({IdProperties.class}) +//@ConditionalOnProperty( +// prefix = "id", +// name = {"enabled"}, +// havingValue = "true", +// matchIfMissing = true +//) +//public class IdWorkConfiguration { +// private static final Logger log = LoggerFactory.getLogger(IdWorkConfiguration.class); +// private final IdProperties idProperties; +// +// public IdWorkConfiguration(StringRedisTemplate redisTemplate, IdProperties idProperties) throws IOException { +// this.idProperties = idProperties; +// Long workerId = this.getLocalWorkId(); +// +// try { +// while(workerId == null) { +// Long newWorkId = redisTemplate.opsForValue().increment(idProperties.getKey(), 1L); +// this.saveLocalWorkId(String.valueOf(newWorkId)); +// workerId = this.getLocalWorkId(); +// } +// } catch (Throwable var5) { +// log.error("获取workID失败", var5); +// throw var5; +// } +// +// if (workerId > 1024L) { +// throw new RuntimeException("超过最大启动实例"); +// } else { +// Id.WORKER_ID = workerId; +// } +// } +// +// private void saveLocalWorkId(String workId) throws IOException { +// File workIdHome = this.getWorkIdHome(); +// String var10002 = String.valueOf(workIdHome.getAbsoluteFile()); +// FileUtils.writeStringToFile(new File(var10002 + "/" + String.valueOf(UUID.randomUUID()) + ".lock"), workId, StandardCharsets.UTF_8); +// } +// +// private File getWorkIdHome() { +// String workHome = this.idProperties.getWorkspace(); +// if (CharSequenceUtil.isBlank(workHome)) { +// workHome = FileUtils.getUserDirectoryPath() + "/.workId/"; +// } +// +// String var10002 = CharSequenceUtil.removeSuffix(workHome, "/"); +// return new File(var10002 + "/" + this.idProperties.getKey()); +// } +// +// private Long getLocalWorkId() throws IOException { +// File workIdHome = this.getWorkIdHome(); +// if (!workIdHome.exists()) { +// return null; +// } +// +// Collection files = FileUtils.listFiles(workIdHome, new String[]{"lock"}, false); +// if (CollectionUtils.isEmpty(files)) { +// return null; +// } +// +// for (File file : files) { +// FileChannel channel = null; +// FileLock fileLock = null; +// +// try { +// RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw"); +// channel = randomAccessFile.getChannel(); +// fileLock = channel.tryLock(); +// +// if (fileLock != null) { // 成功获取文件锁 +// Long workId = Long.valueOf(randomAccessFile.readLine()); +// releaseResourcesOnShutdown(channel); +// return workId; +// } +// } catch (IOException e) { +// log.error("Error accessing workId file", e); +// } finally { +// if (fileLock == null && channel != null) { +// try { +// channel.close(); +// } catch (IOException e) { +// log.error("Failed to close file channel", e); +// } +// } +// } +// } +// return null; +// } +// +// private void releaseResourcesOnShutdown(FileChannel channel) { +// Runtime.getRuntime().addShutdownHook(new Thread(() -> { +// try { +// channel.close(); +// } catch (IOException e) { +// log.error("Release WorkId file lock error", e); +// } +// })); +// } +//} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/domain/UserAddr.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/domain/UserAddr.java index 75fdfec..c4cce71 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/domain/UserAddr.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/domain/UserAddr.java @@ -19,9 +19,6 @@ import com.bonus.common.core.web.domain.BaseEntity; public class UserAddr extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键自增 */ - private Long id; - /** 人员id */ @Excel(name = "人员id") @ApiModelProperty(value = "人员id") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/service/impl/UserAddrServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/service/impl/UserAddrServiceImpl.java index 42ba286..0f31496 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/service/impl/UserAddrServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/user/service/impl/UserAddrServiceImpl.java @@ -5,7 +5,6 @@ import java.util.List; import com.bonus.canteen.core.common.enums.YesOrNoEnum; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; -import com.bonus.common.houqin.utils.id.Id; import com.bonus.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -57,7 +56,6 @@ public class UserAddrServiceImpl implements IUserAddrService { public int insertUserAddr(UserAddr userAddr) { userAddr.setCreateTime(DateUtils.getNowDate()); userAddr.setUserId(SecurityUtils.getUserId()); - userAddr.setAddrId(Id.next()); try { return userAddrMapper.insertUserAddr(userAddr); } catch (Exception e) { @@ -87,7 +85,7 @@ public class UserAddrServiceImpl implements IUserAddrService { userAddr.setUpdateTime(DateUtils.getNowDate()); try { userAddrMapper.updateUserAddrAsNotDefault(userAddr.getUserId(), YesOrNoEnum.NO.key()); - userAddrMapper.updateUserAddrAsDefault(userAddr.getUserId(), userAddr.getId(), YesOrNoEnum.YES.key()); + userAddrMapper.updateUserAddrAsDefault(userAddr.getUserId(), userAddr.getAddrId(), YesOrNoEnum.YES.key()); return 1; } catch (Exception e) { throw new ServiceException("设置默认地址失败"); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java index 08f9035..de33cf1 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java @@ -5,11 +5,16 @@ import com.bonus.common.houqin.mq.MQConfiguration; import com.bonus.common.houqin.mq.mqtt.MqttProperties; import com.bonus.common.houqin.mq.rabbit.RabbitConfiguration; import com.bonus.common.houqin.mq.rocket.RocketConfiguration; -import com.bonus.common.houqin.utils.id.IdWorkConfiguration; +//import com.bonus.common.houqin.utils.id.IdWorkConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +//@Configuration +//@Import({IdWorkConfiguration.class, I18nConfiguration.class, MQConfiguration.class, RabbitConfiguration.class, RocketConfiguration.class, MqttProperties.class}) +//public class CommonConfiguration { +//} + @Configuration -@Import({IdWorkConfiguration.class, I18nConfiguration.class, MQConfiguration.class, RabbitConfiguration.class, RocketConfiguration.class, MqttProperties.class}) +@Import({I18nConfiguration.class, MQConfiguration.class, RabbitConfiguration.class, RocketConfiguration.class, MqttProperties.class}) public class CommonConfiguration { -} +} \ No newline at end of file diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/user/UserAddrMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/user/UserAddrMapper.xml index 9056f00..bd6d124 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/user/UserAddrMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/user/UserAddrMapper.xml @@ -4,7 +4,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - @@ -25,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, user_id, addr_id, contact_name, mobile, area_code, detail_addr, addr_full_name, openid, source_type, if_default, revision, place_id, create_by, create_time, update_by, update_time, del_flag from user_addr + select user_id, addr_id, contact_name, mobile, area_code, detail_addr, addr_full_name, openid, source_type, if_default, revision, place_id, create_by, create_time, update_by, update_time, del_flag from user_addr - + insert into user_addr user_id, - addr_id, contact_name, mobile, area_code, @@ -74,7 +72,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{userId}, - #{addrId}, #{contactName}, #{mobile}, #{areaCode}, @@ -97,7 +94,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update user_addr user_id = #{userId}, - addr_id = #{addrId}, contact_name = #{contactName}, mobile = #{mobile}, area_code = #{areaCode}, @@ -114,7 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, del_flag = #{delFlag}, - where id = #{id} + where addr_id = #{addrId} @@ -122,17 +118,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update user_addr set if_default = #{ifDefault} where user_id = #{userId} and id = #{id} + update user_addr set if_default = #{ifDefault} where user_id = #{userId} and addr_id = #{addrId} - delete from user_addr where id = #{id} + delete from user_addr where addr_id = #{addrId} - delete from user_addr where id in - - #{id} + delete from user_addr where addr_id in + + #{addrId} \ No newline at end of file