|
@@ -19,6 +19,7 @@ import com.iformall.service.sm.UserDigitalAvatarOrderService; |
|
|
import com.iformall.service.sm.UserDigitalAvatarPhotoService; |
|
|
import com.iformall.service.sm.UserDigitalAvatarPhotoService; |
|
|
import com.iformall.sm.*; |
|
|
import com.iformall.sm.*; |
|
|
import com.iformall.utils.Base64Util; |
|
|
import com.iformall.utils.Base64Util; |
|
|
|
|
|
import com.iformall.utils.RedisLock; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.slf4j.Logger; |
|
|
import org.slf4j.Logger; |
|
|
import org.slf4j.LoggerFactory; |
|
|
import org.slf4j.LoggerFactory; |
|
@@ -59,6 +60,9 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder |
|
|
@Autowired |
|
|
@Autowired |
|
|
private AliyunOSS aliyunOSS; |
|
|
private AliyunOSS aliyunOSS; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
RedisLock redisLock; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void handleOrderPhoto(List<UserDigitalAvatarOrder> list){ |
|
|
private void handleOrderPhoto(List<UserDigitalAvatarOrder> list){ |
|
|
if(list == null || list.isEmpty()){ |
|
|
if(list == null || list.isEmpty()){ |
|
@@ -285,33 +289,52 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder |
|
|
@Override |
|
|
@Override |
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
public void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList){ |
|
|
public void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList){ |
|
|
Date now = new Date(); |
|
|
|
|
|
UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder(); |
|
|
|
|
|
updOrder.setId(record.getId()); |
|
|
|
|
|
updOrder.setStatus(EnumDigitalAvatarOrderStatus.finish.getCode()); |
|
|
|
|
|
updOrder.setMsg("success"); |
|
|
|
|
|
updOrder.setUpdateDate(now); |
|
|
|
|
|
userDigitalAvatarOrderMapper.updateById(updOrder); |
|
|
|
|
|
|
|
|
String lockKey = "digitalAvatar:handlePhoto:"+record.getId(); |
|
|
|
|
|
long time = System.currentTimeMillis() + 5000; |
|
|
|
|
|
String timeStr = String.valueOf(time); |
|
|
|
|
|
|
|
|
try{ |
|
|
try{ |
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
|
|
for (String img: imgList) { |
|
|
|
|
|
InputStream inputStream = Base64Util.base2InputStream(img); |
|
|
|
|
|
String img_url = aliyunOSS.upload(record.getTenantId(), ".png", inputStream); |
|
|
|
|
|
|
|
|
|
|
|
UserDigitalAvatarPhoto userDigitalAvatarPhoto = new UserDigitalAvatarPhoto(); |
|
|
|
|
|
userDigitalAvatarPhoto.setId(idWorker.nextId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setOrderId(record.getId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setUserId(record.getUserId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setImage(img_url); |
|
|
|
|
|
userDigitalAvatarPhoto.setStatus(EnumDigitalAvatarPhotoStatus.def.getCode()); |
|
|
|
|
|
userDigitalAvatarPhoto.setCreateDate(now); |
|
|
|
|
|
userDigitalAvatarPhoto.setUpdateDate(now); |
|
|
|
|
|
userDigitalAvatarPhotoMapper.insert(userDigitalAvatarPhoto); |
|
|
|
|
|
|
|
|
while (!redisLock.lock2(lockKey, timeStr)){ |
|
|
|
|
|
Thread.sleep(2000); |
|
|
|
|
|
} |
|
|
|
|
|
UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderMapper.selectById(record.getId()); |
|
|
|
|
|
if(EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){ |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}catch(Exception e){ |
|
|
|
|
|
throw new MallinkException(ErrorCode.PICTURE_ANALYZING_ERROR.getCode(),"上传图片异常"); |
|
|
|
|
|
|
|
|
Date now = new Date(); |
|
|
|
|
|
UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder(); |
|
|
|
|
|
updOrder.setId(record.getId()); |
|
|
|
|
|
updOrder.setStatus(EnumDigitalAvatarOrderStatus.finish.getCode()); |
|
|
|
|
|
updOrder.setMsg("success"); |
|
|
|
|
|
updOrder.setUpdateDate(now); |
|
|
|
|
|
userDigitalAvatarOrderMapper.updateById(updOrder); |
|
|
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
|
|
for (String img: imgList) { |
|
|
|
|
|
InputStream inputStream = Base64Util.base2InputStream(img); |
|
|
|
|
|
String img_url = aliyunOSS.upload(record.getTenantId(), ".png", inputStream); |
|
|
|
|
|
|
|
|
|
|
|
UserDigitalAvatarPhoto userDigitalAvatarPhoto = new UserDigitalAvatarPhoto(); |
|
|
|
|
|
userDigitalAvatarPhoto.setId(idWorker.nextId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setOrderId(record.getId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setUserId(record.getUserId()); |
|
|
|
|
|
userDigitalAvatarPhoto.setImage(img_url); |
|
|
|
|
|
userDigitalAvatarPhoto.setStatus(EnumDigitalAvatarPhotoStatus.def.getCode()); |
|
|
|
|
|
userDigitalAvatarPhoto.setCreateDate(now); |
|
|
|
|
|
userDigitalAvatarPhoto.setUpdateDate(now); |
|
|
|
|
|
userDigitalAvatarPhotoMapper.insert(userDigitalAvatarPhoto); |
|
|
|
|
|
} |
|
|
|
|
|
}catch(Exception e){ |
|
|
|
|
|
throw new MallinkException(ErrorCode.PICTURE_ANALYZING_ERROR.getCode(),"上传图片异常"); |
|
|
|
|
|
} |
|
|
|
|
|
} catch(MallinkException e){ |
|
|
|
|
|
throw e; |
|
|
|
|
|
} catch(Exception e){ |
|
|
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR); |
|
|
|
|
|
}finally { |
|
|
|
|
|
redisLock.unlock(lockKey, timeStr); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|