@@ -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); | |||
} | |||
} |
@@ -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; | |||
@@ -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<String, String> param) { | |||
WxTemplateMsg templateMsgQ = new WxTemplateMsg(); | |||
@@ -62,4 +62,5 @@ public interface UserDigitalAvatarOrderService { | |||
void sendPhotoSuccess(UserDigitalAvatarOrder record); | |||
Integer selectCount(Long userId); | |||
} |
@@ -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<String> imgList); | |||
} |
@@ -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<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); | |||
} | |||
} | |||
} |
@@ -54,9 +54,9 @@ | |||
<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} | |||
,`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 | |||
</update> | |||
</mapper> |
@@ -5,6 +5,7 @@ | |||
<id column="id" jdbcType="BIGINT" property="id"/> | |||
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||
<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="user_id" jdbcType="BIGINT" property="userId"/> | |||
<result column="user_images" jdbcType="VARCHAR" property="userImages"/> | |||
@@ -23,7 +24,7 @@ | |||
</resultMap> | |||
<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`, | |||
`title`, `remark`, `status`, `msg`, `create_date`, `update_date` | |||
</sql> | |||
@@ -35,6 +36,10 @@ | |||
and `id` = #{id} | |||
</if> | |||
<if test=" null != plat "> | |||
and `plat` = #{plat} | |||
</if> | |||
<if test=" null != tenantId and '' != tenantId"> | |||
and `tenant_id` = #{tenantId} | |||
</if> | |||