Sfoglia il codice sorgente

//..

private_deployment
xhxu 1 anno fa
parent
commit
71297de803
16 ha cambiato i file con 246 aggiunte e 173 eliminazioni
  1. +1
    -2
      suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java
  2. +1
    -1
      suimangService/src/main/java/com/iformall/common/ErrorCode.java
  3. +3
    -0
      suimangService/src/main/java/com/iformall/domain/po/UserBasicProperty.java
  4. +3
    -0
      suimangService/src/main/java/com/iformall/mapper/UserBasicGlodConfigMapper.java
  5. +2
    -2
      suimangService/src/main/java/com/iformall/mapper/UserBasicPropertyMapper.java
  6. +3
    -13
      suimangService/src/main/java/com/iformall/service/UserBasicPropertyService.java
  7. +10
    -6
      suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java
  8. +15
    -2
      suimangService/src/main/java/com/iformall/service/impl/UserBasicFromServiceImpl.java
  9. +117
    -72
      suimangService/src/main/java/com/iformall/service/impl/UserBasicPropertyServiceImpl.java
  10. +0
    -1
      suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java
  11. +2
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java
  12. +5
    -57
      suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java
  13. +60
    -5
      suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java
  14. +11
    -9
      suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java
  15. +8
    -0
      suimangService/src/main/resources/mapper/UserBasicGlodConfigMapper.xml
  16. +5
    -3
      suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml

+ 1
- 2
suimangCApi/src/main/java/com/iformall/controller/CallbackSmController.java Vedi File

@@ -80,7 +80,6 @@ public class CallbackSmController extends BaseController {
userMouldVideoService.updateById(videoUnd);
}


userMouldVideoService.uploadVideo(videoUnd);
return new ResultData();
}
@@ -188,7 +187,7 @@ public class CallbackSmController extends BaseController {
imgList.add(data.get("img_1"));
imgList.add(data.get("img_2"));
imgList.add(data.get("img_3"));
userDigitalAvatarOrderService.handlePhoto(userDigitalAvatarOrder,imgList);
userDigitalAvatarPhotoService.handlePhoto(userDigitalAvatarOrder,imgList);
}else{
UserDigitalAvatarOrder updOrder = new UserDigitalAvatarOrder();
updOrder.setId(userDigitalAvatarOrder.getId());


+ 1
- 1
suimangService/src/main/java/com/iformall/common/ErrorCode.java Vedi File

@@ -449,7 +449,7 @@ public enum ErrorCode{
MEM_MONTH_IS_USED(13105, "该用户本月已领取或未到领取条件"),


GLOD_NOT_ENOUGH(13200, "金币不足"),
GLOD_NOT_UPDATE(13200, "金币修改失败"),


/**


+ 3
- 0
suimangService/src/main/java/com/iformall/domain/po/UserBasicProperty.java Vedi File

@@ -30,6 +30,9 @@ public class UserBasicProperty extends TenantEntity {
@TableField(exist = false)
private Integer addGlod;

@TableField(exist = false)
private Integer addSumGlod;

@TableField(exist = false)
private Integer reduceGlod;



+ 3
- 0
suimangService/src/main/java/com/iformall/mapper/UserBasicGlodConfigMapper.java Vedi File

@@ -2,6 +2,7 @@ package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.UserBasicGlodConfig;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@@ -9,4 +10,6 @@ public interface UserBasicGlodConfigMapper extends CommonMapper<UserBasicGlodCon
List<UserBasicGlodConfig> findList(UserBasicGlodConfig record);

UserBasicGlodConfig selectGlodConfig(@Param("projectType")Integer projectType, @Param("type")Integer type);

}

+ 2
- 2
suimangService/src/main/java/com/iformall/mapper/UserBasicPropertyMapper.java Vedi File

@@ -9,8 +9,8 @@ public interface UserBasicPropertyMapper extends CommonMapper<UserBasicProperty,
List<UserBasicProperty> findList(UserBasicProperty record);

int addGlod(UserBasicProperty record);
int addDigitalAvatarGlod(UserBasicProperty record);

int reduceGlod(UserBasicProperty record);
int reduceDigitalAvatarGlod(UserBasicProperty record);

}

+ 3
- 13
suimangService/src/main/java/com/iformall/service/UserBasicPropertyService.java Vedi File

@@ -19,24 +19,14 @@ public interface UserBasicPropertyService {
PageInfo<UserBasicProperty> listAsPage(UserBasicProperty record, Integer pageIndex, Integer pageSize);

/**
* 充值
* @param userId
* @param projectType
* @param extraId
* @param glod
*/
void addRechargeGlod(Long userId, Integer projectType, Long extraId, Integer glod);

/**
* 消费
*
* @param userId
* @param projectType
* @param propertyLogType
* @param glod
* @param extraId
* @param now
* @param glod
*/
void consumptionGlod(Long userId, Integer projectType, Integer propertyLogType, Integer glod, Long extraId, Date now);
void updUserGlod(Long userId, Integer projectType,Integer propertyLogType, Long extraId, Integer glod, Date now);

UserBasicProperty findById(Long id);
}

+ 10
- 6
suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java Vedi File

@@ -179,24 +179,27 @@ public class ProductOrderServiceImpl implements ProductOrderService {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handleProductOrderSuccess(ProductOrder productOrder, PayQueryAdapterResult result) {
String lockKey = "productOrder:success:"+productOrder.getId();
long time = System.currentTimeMillis() + 30000;
long time = System.currentTimeMillis() + 5000;
String timeStr = String.valueOf(time);
try{
while (!redisLock.lock2(lockKey, timeStr)){
Thread.sleep(1000);
// while (!redisLock.lock2(lockKey, timeStr)){
// Thread.sleep(1000);
// }
if(!redisLock.lock2(lockKey, timeStr)){
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请稍后重试");
}
ProductOrder order = this.getById(productOrder.getId());

if(!EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode().equals(order.getOrderStatus())){
return;
}
Date now = new Date();
order.setOpenId(result.getOpenId());
order.setTransactionId(result.getTransactionId());
order.setPaymentTime(result.getPayTime());
order.setPayWay(result.getWay());
order.setOrderStatus(result.getCode());
order.setUpdateDate(new Date());
order.setUpdateDate(now);
order.setIsOrderStatus(EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
int num = productOrderMapper.orderPayUpdStatus(order);
if(num == 0){
@@ -206,7 +209,8 @@ public class ProductOrderServiceImpl implements ProductOrderService {
}
Product product = productMapper.selectById(order.getProductId());
if(EnumProductType.product_1.getCode().equals(product.getType())){
userBasicPropertyService.addRechargeGlod(order.getUserId(),product.getProjectType(),order.getId(),product.getGlod());
userBasicPropertyService.updUserGlod(order.getUserId(),product.getProjectType(),EnumPropertyLogType.RECHARGE.getCode(),
order.getId(),product.getGlod(),now);
}
}catch(Exception e){
throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR);


+ 15
- 2
suimangService/src/main/java/com/iformall/service/impl/UserBasicFromServiceImpl.java Vedi File

@@ -4,14 +4,19 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.UserBasicFrom;
import com.iformall.domain.po.UserBasicGlodConfig;
import com.iformall.domain.po.UserBasicPropertyLog;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.enums.EnumGlodConfigType;
import com.iformall.enums.EnumProject;
import com.iformall.enums.EnumPropertyLogType;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.UserBasicFromMapper;
import com.iformall.mapper.UserBasicGlodConfigMapper;
import com.iformall.mapper.UserBasicPropertyLogMapper;
import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.service.UserBasicFromService;
import com.iformall.service.UserBasicPropertyService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,6 +46,12 @@ public class UserBasicFromServiceImpl implements UserBasicFromService {
@Autowired
WxCUserBasicInfoMapper wxCUserBasicInfoMapper;

@Autowired
UserBasicGlodConfigMapper userBasicGlodConfigMapper;

@Autowired
UserBasicPropertyService userBasicPropertyService;

@Override
public PageInfo<UserBasicFrom> listAsPage(UserBasicFrom record, Integer pageIndex, Integer pageSize) {
PageInfo<UserBasicFrom> pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userBasicFromMapper.findList(record));
@@ -83,16 +94,18 @@ public class UserBasicFromServiceImpl implements UserBasicFromService {
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void saveForm(UserBasicFrom from) {
Date now = new Date();
if(from.getId() == null){
return;
}
from.setCreateDate(new Date());
from.setCreateDate(now);
try{
int insert = userBasicFromMapper.insert(from);
if(insert == 1){
logger.info("邀请加积分{}"+from.getFromUserId());
//todo 邀请逻辑

userBasicPropertyService.updUserGlod(from.getFromUserId(),from.getFromProject(),EnumPropertyLogType.INVITE.getCode(),
from.getId(),null,now);
}
}catch(Exception e){
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR);


+ 117
- 72
suimangService/src/main/java/com/iformall/service/impl/UserBasicPropertyServiceImpl.java Vedi File

@@ -5,17 +5,13 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumProductOrderStatus;
import com.iformall.enums.EnumProductType;
import com.iformall.enums.EnumProject;
import com.iformall.enums.EnumPropertyLogType;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.ProductMapper;
import com.iformall.mapper.UserBasicPropertyLogMapper;
import com.iformall.mapper.UserBasicPropertyMapper;
import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.mapper.*;
import com.iformall.service.UserBasicPropertyService;
import com.iformall.utils.RedisLock;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.converter.EndEventXMLConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +39,12 @@ public class UserBasicPropertyServiceImpl implements UserBasicPropertyService {
@Autowired
UserBasicPropertyLogMapper userBasicPropertyLogMapper;

@Autowired
UserBasicGlodConfigMapper userBasicGlodConfigMapper;

@Autowired
RedisLock redisLock;

@Override
public PageInfo<UserBasicProperty> listAsPage(UserBasicProperty record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userBasicPropertyMapper.findList(record));
@@ -50,83 +52,126 @@ public class UserBasicPropertyServiceImpl implements UserBasicPropertyService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void addRechargeGlod(Long userId, Integer projectType, Long extraId, Integer glod) {
public void updUserGlod(Long userId, Integer projectType,Integer propertyLogType, Long extraId, Integer glod, Date now) {
WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(userId);
if(basicInfo == null){
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
Date now = new Date();
UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(userId);
Integer befourGold = 0;
if(EnumProject.PROJECT_5.getCode().equals(projectType)){
if(userBasicProperty == null){
userBasicProperty = new UserBasicProperty();
userBasicProperty.setId(userId);
userBasicProperty.setDigitalAvatarGlod(glod);
userBasicProperty.setDigitalAvatarResidueGlod(glod);
userBasicProperty.setUpdateDate(now);
userBasicPropertyMapper.insert(userBasicProperty);
}else{
befourGold = userBasicProperty.getDigitalAvatarResidueGlod();

userBasicProperty.setAddGlod(glod);
userBasicProperty.setUpdateDate(now);
userBasicPropertyMapper.addGlod(userBasicProperty);
}
UserBasicPropertyLog userBasicPropertyLog = new UserBasicPropertyLog();
final IdWorker idWorker = IdWorker.get();
userBasicPropertyLog.setId(idWorker.nextId());
userBasicPropertyLog.setUserId(userId);
userBasicPropertyLog.setProjectType(projectType);
userBasicPropertyLog.setType(EnumPropertyLogType.RECHARGE.getCode());
userBasicPropertyLog.setBefourGold(befourGold);
userBasicPropertyLog.setGoldNum(glod);
userBasicPropertyLog.setAfterGold(befourGold+glod);
userBasicPropertyLog.setExtraId(extraId);
userBasicPropertyLog.setCreateDate(now);
userBasicPropertyLogMapper.insert(userBasicPropertyLog);
}
Integer glodNum = handGlodNum(projectType,propertyLogType,glod);
if(glodNum == 0){
throw new MallinkException(ErrorCode.GLOD_NOT_UPDATE.getCode(),"金币变动值为0");
}

String lockKey = "userProperty:glod:"+userId;
long time = System.currentTimeMillis() + 5000;
String timeStr = String.valueOf(time);
try{
while (!redisLock.lock2(lockKey, timeStr)){
Thread.sleep(1000);
}

UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(userId);
Integer befourGold = getUserGlod(userBasicProperty,projectType);
Integer afterGold = befourGold + glodNum;
if(afterGold < 0){
throw new MallinkException(ErrorCode.GLOD_NOT_UPDATE.getCode(),"金币不足");
}
Integer count = handUserProPery(userId,userBasicProperty,projectType,glodNum,now);
if(count != 1){
throw new MallinkException(ErrorCode.GLOD_NOT_UPDATE.getCode(),"金币不足");
}
UserBasicPropertyLog userBasicPropertyLog = new UserBasicPropertyLog();
final IdWorker idWorker = IdWorker.get();
userBasicPropertyLog.setId(idWorker.nextId());
userBasicPropertyLog.setUserId(userId);
userBasicPropertyLog.setProjectType(projectType);
userBasicPropertyLog.setType(propertyLogType);
userBasicPropertyLog.setBefourGold(befourGold);
userBasicPropertyLog.setGoldNum(glodNum);
userBasicPropertyLog.setAfterGold(afterGold);
userBasicPropertyLog.setExtraId(extraId);
userBasicPropertyLog.setCreateDate(now);
userBasicPropertyLogMapper.insert(userBasicPropertyLog);

}catch(Exception e){
throw new MallinkException(ErrorCode.GLOD_NOT_UPDATE);
}finally {
redisLock.unlock(lockKey, timeStr);
}

}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void consumptionGlod(Long userId, Integer projectType, Integer propertyLogType, Integer glod, Long extraId, Date now) {
WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(userId);
if(basicInfo == null){
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
public UserBasicProperty findById(Long id) {
return userBasicPropertyMapper.selectById(id);
}

private Integer handGlodNum(Integer projectType, Integer propertyLogType, Integer glod){
if(EnumPropertyLogType.REGISTER.getCode().equals(propertyLogType)){
UserBasicGlodConfig glodConfig = userBasicGlodConfigMapper.selectGlodConfig(projectType, EnumGlodConfigType.register.getCode());
if(glodConfig != null && glodConfig.getGlodNum() != null && glodConfig.getGlodNum() != 0){
return glodConfig.getGlodNum();
}
return 0;
}else if(EnumPropertyLogType.INVITE.getCode().equals(propertyLogType)){
UserBasicGlodConfig glodConfig = userBasicGlodConfigMapper.selectGlodConfig(projectType, EnumGlodConfigType.invite.getCode());
if(glodConfig != null && glodConfig.getGlodNum() != null && glodConfig.getGlodNum() != 0){
return glodConfig.getGlodNum();
}
return 0;
}else if(EnumPropertyLogType.RECHARGE.getCode().equals(propertyLogType)){
return glod;
}else if(EnumPropertyLogType.CONSUMPTION_10.getCode().equals(propertyLogType)){
if(glod > 0){
return -glod;
}
return glod;
}else if(EnumPropertyLogType.CONSUMPTION_11.getCode().equals(propertyLogType)){
if(glod > 0){
return -glod;
}
return glod;
}
UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(userId);
if(userBasicProperty == null || userBasicProperty.getDigitalAvatarResidueGlod() < glod){
throw new MallinkException(ErrorCode.GLOD_NOT_ENOUGH);
return 0;
}

private Integer getUserGlod(UserBasicProperty userBasicProperty,Integer projectType){
if(userBasicProperty == null){
return 0;
}
UserBasicProperty updProperty = new UserBasicProperty();
updProperty.setId(userId);
updProperty.setReduceGlod(glod);
updProperty.setUpdateDate(now);
int count = userBasicPropertyMapper.reduceGlod(updProperty);
if(count != 1){
throw new MallinkException(ErrorCode.GLOD_NOT_ENOUGH.getCode(),"扣减异常");
if(EnumProject.PROJECT_5.getCode().equals(projectType)){
return userBasicProperty.getDigitalAvatarResidueGlod();
}

UserBasicPropertyLog userBasicPropertyLog = new UserBasicPropertyLog();
final IdWorker idWorker = IdWorker.get();
userBasicPropertyLog.setId(idWorker.nextId());
userBasicPropertyLog.setUserId(userId);
userBasicPropertyLog.setProjectType(projectType);
userBasicPropertyLog.setType(propertyLogType);
userBasicPropertyLog.setBefourGold(userBasicProperty.getDigitalAvatarResidueGlod());
userBasicPropertyLog.setGoldNum(glod);
userBasicPropertyLog.setAfterGold(userBasicProperty.getDigitalAvatarResidueGlod()-glod);
userBasicPropertyLog.setExtraId(extraId);
userBasicPropertyLog.setCreateDate(now);
userBasicPropertyLogMapper.insert(userBasicPropertyLog);

return 0;
}

@Override
public UserBasicProperty findById(Long id) {
return userBasicPropertyMapper.selectById(id);
private Integer handUserProPery(Long userId, UserBasicProperty userBasicProperty, Integer projectType, Integer glodNum, Date now){
int count = 0;
if(EnumProject.PROJECT_5.getCode().equals(projectType)){

if(userBasicProperty == null){
userBasicProperty = new UserBasicProperty();
userBasicProperty.setId(userId);
userBasicProperty.setDigitalAvatarGlod(glodNum);
userBasicProperty.setDigitalAvatarResidueGlod(glodNum);
userBasicProperty.setUpdateDate(now);
count = userBasicPropertyMapper.insert(userBasicProperty);
}else{
if(glodNum > 0){
//余额和总金额都会增加
Integer addSumGlod = glodNum;
userBasicProperty.setAddGlod(glodNum);
userBasicProperty.setAddSumGlod(addSumGlod);
userBasicProperty.setUpdateDate(now);
count = userBasicPropertyMapper.addDigitalAvatarGlod(userBasicProperty);
}else if(glodNum < 0){
userBasicProperty.setReduceGlod(glodNum);
userBasicProperty.setUpdateDate(now);
count = userBasicPropertyMapper.reduceDigitalAvatarGlod(userBasicProperty);
}
}
}
return count;
}




+ 0
- 1
suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java Vedi File

@@ -60,6 +60,5 @@ public interface UserDigitalAvatarOrderService {

void createPhoto(UserDigitalAvatarOrder record);

void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList);

}

+ 2
- 0
suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java Vedi File

@@ -20,4 +20,6 @@ public interface UserDigitalAvatarPhotoService {
void handleSuperPhoto(UserDigitalAvatarPhoto record, String img);

void updateById(UserDigitalAvatarPhoto updPhoto);

void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList);
}

+ 5
- 57
suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java Vedi File

@@ -142,14 +142,14 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder
if(record.getPrice() > 0){
UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(record.getUserId());
if(userBasicProperty == null || userBasicProperty.getDigitalAvatarResidueGlod() < record.getPrice()){
return new ResultData(ErrorCode.GLOD_NOT_ENOUGH);
return new ResultData(ErrorCode.GLOD_NOT_UPDATE.getCode(),"金币余不足");
}
}
try{
UserDigitalAvatarOrderServiceImpl proxy = (UserDigitalAvatarOrderServiceImpl) AopContext.currentProxy();
proxy.handleOrder(record);

this.createPhoto(record);
proxy.createPhoto(record);
return new ResultData(record);
}catch(MallinkException e){
return new ResultData(e.getErrorCode(),e.getMessage());
@@ -207,8 +207,8 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder
public void handleOrder(UserDigitalAvatarOrder record) {
Date now = new Date();
if(record.getPrice() > 0){
userBasicPropertyService.consumptionGlod(record.getUserId(),EnumProject.PROJECT_5.getCode(), EnumPropertyLogType.CONSUMPTION_10.getCode(),
record.getPrice(),record.getId(),now);
userBasicPropertyService.updUserGlod(record.getUserId(),EnumProject.PROJECT_5.getCode(), EnumPropertyLogType.CONSUMPTION_10.getCode(),
record.getId(),record.getPrice(),now);
}
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
@@ -266,7 +266,7 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder

DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,record.getId());
if(result.isSuccess()){
UserDigitalAvatarOrderServiceImpl proxy = (UserDigitalAvatarOrderServiceImpl) AopContext.currentProxy();
UserDigitalAvatarPhotoServiceImpl proxy = (UserDigitalAvatarPhotoServiceImpl) AopContext.currentProxy();
proxy.handlePhoto(record,result.getImgList());
}else{
updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode());
@@ -288,56 +288,4 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder

}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList){
String lockKey = "digitalAvatar:handlePhoto:"+record.getId();
long time = System.currentTimeMillis() + 5000;
String timeStr = String.valueOf(time);

try{
while (!redisLock.lock2(lockKey, timeStr)){
Thread.sleep(2000);
}
UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderMapper.selectById(record.getId());
if(EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){
return;
}

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);
}
}

}

+ 60
- 5
suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java Vedi File

@@ -7,6 +7,7 @@ import com.iformall.domain.po.sm.*;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.file.aliyun.AliyunOSS;
import com.iformall.mapper.UserDigitalAvatarOrderMapper;
import com.iformall.mapper.UserDigitalAvatarPhotoMapper;
import com.iformall.service.UserBasicPropertyService;
import com.iformall.service.sm.*;
@@ -33,6 +34,9 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
@Autowired
UserDigitalAvatarPhotoMapper userDigitalAvatarPhotoMapper;

@Autowired
UserDigitalAvatarOrderMapper userDigitalAvatarOrderMapper;

@Autowired
UserBasicPropertyService userBasicPropertyService;

@@ -75,8 +79,8 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
Integer price = 0;
record.setPrice(price);
if(price > 0){
userBasicPropertyService.consumptionGlod(record.getUserId(),EnumProject.PROJECT_5.getCode(), EnumPropertyLogType.CONSUMPTION_11.getCode(),
price,record.getId(),now);
userBasicPropertyService.updUserGlod(record.getUserId(),EnumProject.PROJECT_5.getCode(), EnumPropertyLogType.CONSUMPTION_11.getCode(),
record.getId(),price,now);
}

UserDigitalAvatarPhoto updPhoto = new UserDigitalAvatarPhoto();
@@ -126,11 +130,11 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
@Override
public void handleSuperPhoto(UserDigitalAvatarPhoto record, String img) {
String lockKey = "digitalAvatar:superPhoto:"+record.getId();
long time = System.currentTimeMillis() + 5000;
long time = System.currentTimeMillis() + 10000;
String timeStr = String.valueOf(time);
try{
while (!redisLock.lock2(lockKey, timeStr)){
Thread.sleep(2000);
if(!redisLock.lock2(lockKey, timeStr)){
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请稍后重试");
}
UserDigitalAvatarPhoto userDigitalAvatarPhoto = userDigitalAvatarPhotoMapper.selectById(record.getId());
if(EnumDigitalAvatarPhotoStatus.finish.getCode().equals(userDigitalAvatarPhoto.getStatus())){
@@ -162,4 +166,55 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto
userDigitalAvatarPhotoMapper.updateById(updPhoto);
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList){
String lockKey = "digitalAvatar:handlePhoto:"+record.getId();
long time = System.currentTimeMillis() + 10000;
String timeStr = String.valueOf(time);

try{
if (!redisLock.lock2(lockKey, timeStr)){
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请稍后重试");
}
UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderMapper.selectById(record.getId());
if(EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){
return;
}

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);
}
}
}

+ 11
- 9
suimangService/src/main/java/com/iformall/sm/AiDigitalAvatarHelper.java Vedi File

@@ -158,7 +158,7 @@ public class AiDigitalAvatarHelper {

// log.info("生成照片start request:" + param.getBg_img());
String response = HttpUtil.doAiVideoPost(digital_avatar + "/logo_img", JSONObject.toJSONString(param));
log.info("照片超分end response:"+response);
log.info("生成照片end response:"+response);

ShareImgResult result = new ShareImgResult();

@@ -198,14 +198,16 @@ public class AiDigitalAvatarHelper {
// System.out.println(result);


DigitalAvatarParam param = new DigitalAvatarParam();
param.setBg_img("素白");
String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-31/91f69a7fdac146159d2408baaad26619.jpg?x-oss-process=image/resize,w_10000/quality,q_60");
param.setImg_lift(img);
param.setImg_middle("None");
param.setImg_right("None");
DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l);
System.out.println(result);
// DigitalAvatarParam param = new DigitalAvatarParam();
// param.setBg_img("素白");
// String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-31/91f69a7fdac146159d2408baaad26619.jpg?x-oss-process=image/resize,w_10000/quality,q_60");
// param.setImg_lift(img);
// param.setImg_middle("None");
// param.setImg_right("None");
// DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l);
// System.out.println(result);


}




+ 8
- 0
suimangService/src/main/resources/mapper/UserBasicGlodConfigMapper.xml Vedi File

@@ -45,4 +45,12 @@
<include refid="dynamicWhereConditions" />
</select>


<select id="selectGlodConfig" parameterType="java.util.HashMap" resultMap="BaseResultMap">
select <include refid="allColumns" />
from user_basic_glod_config
where `project_type` = #{projectType}
and `type` = #{type}
</select>

</mapper>

+ 5
- 3
suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml Vedi File

@@ -41,15 +41,17 @@
<include refid="dynamicWhereConditions" />
</select>
<update id="addGlod" parameterType="com.iformall.domain.po.UserBasicProperty">
<update id="addDigitalAvatarGlod" parameterType="com.iformall.domain.po.UserBasicProperty">
update user_basic_property
set `update_date` = #{updateDate}
,`digital_avatar_glod` = digital_avatar_glod+#{addGlod}
<if test=" null != addSumGlod ">
,`digital_avatar_glod` = digital_avatar_glod+#{addSumGlod}
</if>
,`digital_avatar_residue_glod` = digital_avatar_residue_glod+#{addGlod}
where id = #{id}
</update>

<update id="reduceGlod" parameterType="com.iformall.domain.po.UserBasicProperty">
<update id="reduceDigitalAvatarGlod" parameterType="com.iformall.domain.po.UserBasicProperty">
update user_basic_property
set `update_date` = #{updateDate}
,`digital_avatar_residue_glod` = digital_avatar_residue_glod-#{reduceGlod}


Caricamento…
Annulla
Salva