@@ -1,41 +1,20 @@ | |||||
package com.iformall.controller; | package com.iformall.controller; | ||||
import com.alibaba.fastjson.JSONObject; | |||||
import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
import com.iformall.annotation.AuthIgnore; | |||||
import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
import com.iformall.domain.po.base.BaseEntity; | import com.iformall.domain.po.base.BaseEntity; | ||||
import com.iformall.domain.po.sm.*; | import com.iformall.domain.po.sm.*; | ||||
import com.iformall.enums.*; | |||||
import com.iformall.exception.MallinkException; | |||||
import com.iformall.service.sm.*; | 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.Api; | ||||
import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
import lombok.SneakyThrows; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.util.ObjectUtils; | |||||
import org.springframework.web.bind.annotation.*; | 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 | @RestController | ||||
@RequestMapping("/api/digitalAvatarPhoto") | @RequestMapping("/api/digitalAvatarPhoto") | ||||
@@ -70,6 +49,7 @@ public class UserDigitalAvatarPhotoController extends BaseController { | |||||
if(record.getId() == null){ | if(record.getId() == null){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"参数异常"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"参数异常"); | ||||
} | } | ||||
record.setUserId(getMemberId()); | record.setUserId(getMemberId()); | ||||
UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderService.selectById(record.getId()); | UserDigitalAvatarOrder userDigitalAvatarOrder = userDigitalAvatarOrderService.selectById(record.getId()); | ||||
if(userDigitalAvatarOrder == null || !record.getUserId().equals(userDigitalAvatarOrder.getUserId())){ | if(userDigitalAvatarOrder == null || !record.getUserId().equals(userDigitalAvatarOrder.getUserId())){ | ||||
@@ -153,4 +133,12 @@ public class UserDigitalAvatarPhotoController extends BaseController { | |||||
} | } | ||||
return new ResultData(userDigitalAvatarPhoto); | return new ResultData(userDigitalAvatarPhoto); | ||||
} | } | ||||
@ApiOperation("获取照片生成次数") | |||||
@GetMapping("/getCount") | |||||
public ResultData getCount() { | |||||
logger.debug("[" + getIpAddr() + "] UserDigitalAvatarPhotoController::getCount"); | |||||
Integer count = userDigitalAvatarOrderService.selectCount(getMemberId()); | |||||
return new ResultData(count); | |||||
} | |||||
} | } |
@@ -23,6 +23,8 @@ public class UserDigitalAvatarOrder extends TenantEntity { | |||||
protected Long id; | protected Long id; | ||||
private Integer plat; | |||||
@TableField(exist = false) | @TableField(exist = false) | ||||
@io.swagger.annotations.ApiModelProperty(value="查询-创建起始时间",name="startDate") | @io.swagger.annotations.ApiModelProperty(value="查询-创建起始时间",name="startDate") | ||||
private Date startDate; | private Date startDate; | ||||
@@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.scheduling.annotation.Async; | |||||
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
import java.util.Date; | import java.util.Date; | ||||
@@ -128,6 +129,7 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { | |||||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxTemplateMsgMapper.findListForMiniApp(record)); | ||||
} | } | ||||
@Async | |||||
@Override | @Override | ||||
public void sendTemplateMsg(WxAppinfo appinfo, Long userId, String toPage, Map<String, String> param) { | public void sendTemplateMsg(WxAppinfo appinfo, Long userId, String toPage, Map<String, String> param) { | ||||
WxTemplateMsg templateMsgQ = new WxTemplateMsg(); | WxTemplateMsg templateMsgQ = new WxTemplateMsg(); | ||||
@@ -62,4 +62,5 @@ public interface UserDigitalAvatarOrderService { | |||||
void sendPhotoSuccess(UserDigitalAvatarOrder record); | void sendPhotoSuccess(UserDigitalAvatarOrder record); | ||||
Integer selectCount(Long userId); | |||||
} | } |
@@ -19,7 +19,7 @@ public interface UserDigitalAvatarPhotoService { | |||||
void handleSuperPhoto(UserDigitalAvatarPhoto record, String img); | void handleSuperPhoto(UserDigitalAvatarPhoto record, String img); | ||||
void updateById(UserDigitalAvatarPhoto updPhoto); | |||||
void updateById(UserDigitalAvatarPhoto record); | |||||
void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList); | void handlePhoto(UserDigitalAvatarOrder record,List<String> imgList); | ||||
} | } |
@@ -1,5 +1,6 @@ | |||||
package com.iformall.service.sm.impl; | package com.iformall.service.sm.impl; | ||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
@@ -135,6 +136,11 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder | |||||
if(record.getUserId() == null){ | if(record.getUserId() == null){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未查询到用户"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未查询到用户"); | ||||
} | } | ||||
boolean first = true; | |||||
if(this.selectCount(record.getUserId()) > 0){ | |||||
first = false; | |||||
} | |||||
if(record.getDigitalAvatarId() == null){ | if(record.getDigitalAvatarId() == null){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"风格模板为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"风格模板为空"); | ||||
} | } | ||||
@@ -150,10 +156,15 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder | |||||
} | } | ||||
record.setDigitalAvatarSm(digitalAvatarMould.getMouldSmId()); | record.setDigitalAvatarSm(digitalAvatarMould.getMouldSmId()); | ||||
record.setDigitalAvatarType(digitalAvatarMould.getMouldType()); | record.setDigitalAvatarType(digitalAvatarMould.getMouldType()); | ||||
record.setPrice(digitalAvatarMould.getSalePrice()); | |||||
if(record.getUserImageList().size() != record.getDigitalAvatarType()){ | if(record.getUserImageList().size() != record.getDigitalAvatarType()){ | ||||
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"照片数据格式错误"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"照片数据格式错误"); | ||||
} | } | ||||
if(first){ | |||||
record.setPrice(0); | |||||
}else{ | |||||
record.setPrice(digitalAvatarMould.getSalePrice()); | |||||
} | |||||
if(record.getPrice() > 0){ | if(record.getPrice() > 0){ | ||||
UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(record.getUserId()); | UserBasicProperty userBasicProperty = userBasicPropertyMapper.selectById(record.getUserId()); | ||||
@@ -283,6 +294,8 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder | |||||
DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,record.getId()); | DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,record.getId()); | ||||
if(result.isSuccess()){ | if(result.isSuccess()){ | ||||
userDigitalAvatarPhotoService.handlePhoto(record,result.getImgList()); | userDigitalAvatarPhotoService.handlePhoto(record,result.getImgList()); | ||||
this.sendPhotoSuccess(record); | |||||
}else{ | }else{ | ||||
updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode()); | updOrder.setStatus(EnumDigitalAvatarOrderStatus.fail.getCode()); | ||||
updOrder.setMsg(result.getMsg()); | updOrder.setMsg(result.getMsg()); | ||||
@@ -310,15 +323,24 @@ public class UserDigitalAvatarOrderServiceImpl implements UserDigitalAvatarOrder | |||||
if(!EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){ | if(!EnumDigitalAvatarOrderStatus.finish.getCode().equals(userDigitalAvatarOrder.getStatus())){ | ||||
return; | 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<String,String> param = new HashMap<>(); | Map<String,String> 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)); | |||||
} | } | ||||
} | } |
@@ -217,4 +217,5 @@ public class UserDigitalAvatarPhotoServiceImpl implements UserDigitalAvatarPhoto | |||||
redisLock.unlock(lockKey, timeStr); | redisLock.unlock(lockKey, timeStr); | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -54,9 +54,9 @@ | |||||
<update id="reduceDigitalAvatarGlod" parameterType="com.iformall.domain.po.UserBasicProperty"> | <update id="reduceDigitalAvatarGlod" parameterType="com.iformall.domain.po.UserBasicProperty"> | ||||
update user_basic_property | update user_basic_property | ||||
set `update_date` = #{updateDate} | 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} | where id = #{id} | ||||
and digital_avatar_residue_glod >= #{reduceGlod} | |||||
and digital_avatar_residue_glod+#{reduceGlod} > 0 | |||||
</update> | </update> | ||||
</mapper> | </mapper> |
@@ -5,6 +5,7 @@ | |||||
<id column="id" jdbcType="BIGINT" property="id"/> | <id column="id" jdbcType="BIGINT" property="id"/> | ||||
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | ||||
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> | <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> | ||||
<result column="plat" jdbcType="INTEGER" property="plat"/> | |||||
<result column="order_id" jdbcType="BIGINT" property="orderId"/> | <result column="order_id" jdbcType="BIGINT" property="orderId"/> | ||||
<result column="user_id" jdbcType="BIGINT" property="userId"/> | <result column="user_id" jdbcType="BIGINT" property="userId"/> | ||||
<result column="user_images" jdbcType="VARCHAR" property="userImages"/> | <result column="user_images" jdbcType="VARCHAR" property="userImages"/> | ||||
@@ -23,7 +24,7 @@ | |||||
</resultMap> | </resultMap> | ||||
<sql id="allColumns"> | <sql id="allColumns"> | ||||
`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`, | `user_images`, `digital_avatar_id`, `digital_avatar_type`, `digital_avatar_sm`, `price`, | ||||
`title`, `remark`, `status`, `msg`, `create_date`, `update_date` | `title`, `remark`, `status`, `msg`, `create_date`, `update_date` | ||||
</sql> | </sql> | ||||
@@ -35,6 +36,10 @@ | |||||
and `id` = #{id} | and `id` = #{id} | ||||
</if> | </if> | ||||
<if test=" null != plat "> | |||||
and `plat` = #{plat} | |||||
</if> | |||||
<if test=" null != tenantId and '' != tenantId"> | <if test=" null != tenantId and '' != tenantId"> | ||||
and `tenant_id` = #{tenantId} | and `tenant_id` = #{tenantId} | ||||
</if> | </if> | ||||