diff --git a/suimangCApi/src/main/java/com/iformall/controller/UserDigitalAvatarPhotoController.java b/suimangCApi/src/main/java/com/iformall/controller/UserDigitalAvatarPhotoController.java index 95f86ab..37558d7 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/UserDigitalAvatarPhotoController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/UserDigitalAvatarPhotoController.java @@ -1,41 +1,20 @@ package com.iformall.controller; -import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; -import com.iformall.annotation.AuthIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.sm.*; -import com.iformall.enums.*; -import com.iformall.exception.MallinkException; import com.iformall.service.sm.*; -import com.iformall.video.VideoFactory; -import com.iformall.video.entity.VideUploadResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import lombok.SneakyThrows; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.List; - @RestController @RequestMapping("/api/digitalAvatarPhoto") @@ -70,6 +49,7 @@ public class UserDigitalAvatarPhotoController extends BaseController { if(record.getId() == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"参数异常"); } + record.setUserId(getMemberId()); UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderService.selectById(record.getId()); if(userDigitalAvatarOrder == null || !record.getUserId().equals(userDigitalAvatarOrder.getUserId())){ @@ -153,4 +133,12 @@ public class UserDigitalAvatarPhotoController extends BaseController { } return new ResultData(userDigitalAvatarPhoto); } + + @ApiOperation("获取照片生成次数") + @GetMapping("/getCount") + public ResultData getCount() { + logger.debug("[" + getIpAddr() + "] UserDigitalAvatarPhotoController::getCount"); + Integer count = userDigitalAvatarOrderService.selectCount(getMemberId()); + return new ResultData(count); + } } diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserDigitalAvatarOrder.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserDigitalAvatarOrder.java index 735423b..f2e32e8 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/UserDigitalAvatarOrder.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserDigitalAvatarOrder.java @@ -23,6 +23,8 @@ public class UserDigitalAvatarOrder extends TenantEntity { protected Long id; + private Integer plat; + @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value="查询-创建起始时间",name="startDate") private Date startDate; diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java index a951f42..bf92673 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java @@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Date; @@ -128,6 +129,7 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record)); } + @Async @Override public void sendTemplateMsg(WxAppinfo appinfo, Long userId, String toPage, Map param) { WxTemplateMsg templateMsgQ = new WxTemplateMsg(); diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java b/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java index 02f1899..1393980 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarOrderService.java @@ -62,4 +62,5 @@ public interface UserDigitalAvatarOrderService { void sendPhotoSuccess(UserDigitalAvatarOrder record); + Integer selectCount(Long userId); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java b/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java index 1f632a5..c6acf15 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/UserDigitalAvatarPhotoService.java @@ -19,7 +19,7 @@ public interface UserDigitalAvatarPhotoService { void handleSuperPhoto(UserDigitalAvatarPhoto record, String img); - void updateById(UserDigitalAvatarPhoto updPhoto); + void updateById(UserDigitalAvatarPhoto record); void handlePhoto(UserDigitalAvatarOrder record,List imgList); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java index f8e358e..b2f686d 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.sm.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; @@ -135,6 +136,11 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder if(record.getUserId() == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未查询到用户"); } + boolean first = true; + if(this.selectCount(record.getUserId()) > 0){ + first = false; + } + if(record.getDigitalAvatarId() == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"风格模板为空"); } @@ -150,10 +156,15 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder } record.setDigitalAvatarSm(digitalAvatarMould.getMouldSmId()); record.setDigitalAvatarType(digitalAvatarMould.getMouldType()); - record.setPrice(digitalAvatarMould.getSalePrice()); + if(record.getUserImageList().size() != record.getDigitalAvatarType()){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"照片数据格式错误"); } + if(first){ + record.setPrice(0); + }else{ + record.setPrice(digitalAvatarMould.getSalePrice()); + } if(record.getPrice() > 0){ UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(record.getUserId()); @@ -283,6 +294,8 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,record.getId()); if(result.isSuccess()){ userDigitalAvatarPhotoService.handlePhoto(record,result.getImgList()); + + this.sendPhotoSuccess(record); }else{ updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode()); updOrder.setMsg(result.getMsg()); @@ -310,15 +323,24 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder if(!EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){ return; } - //默认先发微信订阅消息 - WxAppinfo appinfo = wxAppinfoService.getProjectCAppInfoFromRedis(EnumProject.PROJECT_5.getCode(), EnumAppPlat.WX.getCode()); - String toPage = "/pages/lookPhoto/index?id="+record.getId(); + if(userDigitalAvatarOrder.getPlat() == null){ + return; + } + WxAppinfo appinfo = wxAppinfoService.getProjectCAppInfoFromRedis(EnumProject.PROJECT_5.getCode(), userDigitalAvatarOrder.getPlat()); + String toPage = "/pages/lookPhoto/index?id="+userDigitalAvatarOrder.getId(); Map param = new HashMap<>(); - param.put("thing1",record.getTitle()); - param.put("character_string3",record.getId().toString()); - param.put("time4", DateUtils.date2String(record.getUpdateDate())); + param.put("thing1",userDigitalAvatarOrder.getTitle()); + param.put("character_string3",userDigitalAvatarOrder.getId().toString()); + param.put("time4", DateUtils.date2String(userDigitalAvatarOrder.getUpdateDate())); - wxTemplateMsgService.sendTemplateMsg(appinfo,record.getUserId(),toPage,param); + wxTemplateMsgService.sendTemplateMsg(appinfo,userDigitalAvatarOrder.getUserId(),toPage,param); + } + + @Override + public Integer selectCount(Long userId) { + UserDigitalAvatarOrder userDigitalAvatarOrderQ = new UserDigitalAvatarOrder(); + userDigitalAvatarOrderQ.setUserId(userId); + return userDigitalAvatarOrderMapper.selectCount(new QueryWrapper<>(userDigitalAvatarOrderQ)); } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java index 6a48674..66591a7 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/UserDigitalAvatarPhotoServiceImpl.java @@ -217,4 +217,5 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto redisLock.unlock(lockKey, timeStr); } } + } diff --git a/suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml b/suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml index f7b1ee1..dd9a4c1 100644 --- a/suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml +++ b/suimangService/src/main/resources/mapper/UserBasicPropertyMapper.xml @@ -54,9 +54,9 @@ update user_basic_property set `update_date` = #{updateDate} - ,`digital_avatar_residue_glod` = digital_avatar_residue_glod-#{reduceGlod} + ,`digital_avatar_residue_glod` = digital_avatar_residue_glod+#{reduceGlod} where id = #{id} - and digital_avatar_residue_glod >= #{reduceGlod} + and digital_avatar_residue_glod+#{reduceGlod} > 0 diff --git a/suimangService/src/main/resources/mapper/UserDigitalAvatarOrderMapper.xml b/suimangService/src/main/resources/mapper/UserDigitalAvatarOrderMapper.xml index c85f645..48c0e5f 100644 --- a/suimangService/src/main/resources/mapper/UserDigitalAvatarOrderMapper.xml +++ b/suimangService/src/main/resources/mapper/UserDigitalAvatarOrderMapper.xml @@ -5,6 +5,7 @@ + @@ -23,7 +24,7 @@ - `id`, `tenant_id`, `parent_tenant_id`, `order_id`, `user_id`, + `id`, `tenant_id`, `parent_tenant_id`, `plat`, `order_id`, `user_id`, `user_images`, `digital_avatar_id`, `digital_avatar_type`, `digital_avatar_sm`, `price`, `title`, `remark`, `status`, `msg`, `create_date`, `update_date` @@ -35,6 +36,10 @@ and `id` = #{id} + + and `plat` = #{plat} + + and `tenant_id` = #{tenantId}