| @@ -0,0 +1,71 @@ | |||
| package com.iformall.controller.sm; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.annotation.SystemControllerLog; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.po.base.BaseEntity; | |||
| import com.iformall.domain.po.sm.MouldPatch; | |||
| import com.iformall.domain.po.sm.MouldPatchSign; | |||
| import com.iformall.domain.po.sm.UserMouldVideo; | |||
| import com.iformall.service.sm.MouldPatchService; | |||
| import com.iformall.service.sm.MouldPatchSignService; | |||
| import com.iformall.service.sm.UserMouldVideoService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiImplicitParam; | |||
| import io.swagger.annotations.ApiImplicitParams; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import java.util.List; | |||
| @RestController | |||
| @RequestMapping("userVideo") | |||
| @Api(description = "模板接口") | |||
| public class UserMouldVideoController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private UserMouldVideoService userMouldVideoService; | |||
| @ApiOperation("分页列表接口") | |||
| @GetMapping("list") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| public ResultData list(@ModelAttribute UserMouldVideo record, Integer pageNum, Integer pageSize) { | |||
| logger.debug("[" + getIpAddr() + "] UserMouldVideoController::list"); | |||
| if (record == null) record = new UserMouldVideo(); | |||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
| final PageInfo<UserMouldVideo> page = userMouldVideoService.listAsPage(record, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("根据id删除接口") | |||
| @GetMapping("/del") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| @SystemControllerLog(description = "删除") | |||
| public ResultData delete(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] UserMouldVideoController::delete"); | |||
| userMouldVideoService.deleteById(id); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("根据id查询接口") | |||
| @GetMapping("/findById") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| @SystemControllerLog(description = "查询") | |||
| public ResultData findById(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] UserMouldVideoController::findById"); | |||
| UserMouldVideo userMouldVideo = userMouldVideoService.getById(id); | |||
| return new ResultData(userMouldVideo); | |||
| } | |||
| } | |||
| @@ -102,27 +102,10 @@ public class BaseController { | |||
| }); | |||
| } | |||
| @Deprecated | |||
| public String getTenantId() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| String tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
| return tenantId; | |||
| } | |||
| public TenantEntity getTenantInfo() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| String tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
| String parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); | |||
| TenantEntity tenantEntity = new TenantEntity() ; | |||
| tenantEntity.setTenantId(tenantId); | |||
| tenantEntity.setParentTenantId(parentTenantId); | |||
| return tenantEntity; | |||
| return new TenantEntity(); | |||
| } | |||
| public String getFinalTenantId() { | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| return tenantEntity.getFinalTenantId(); | |||
| } | |||
| public Long getMemberId() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| @@ -132,140 +115,6 @@ public class BaseController { | |||
| } | |||
| return memberId; | |||
| } | |||
| public WxAppinfo getCurrentApp() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| WxAppinfo appInfo = (WxAppinfo) request.getAttribute(Constant.APP_INFO); | |||
| if(appInfo == null){ | |||
| throw new MallinkException(ErrorCode.USER_APPINFO_NOT_EXIST); | |||
| } | |||
| return appInfo; | |||
| } | |||
| public EnumPayVersion getPayVersion() { | |||
| WxAppinfo appinfo = getCurrentApp(); | |||
| if ( null == appinfo) { | |||
| throw new MallinkException(ErrorCode.USER_APPINFO_NOT_EXIST); | |||
| } | |||
| WxPayAccount payAccount = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, Constant.payaccountPrev+appinfo.getPayId(), WxPayAccount.class); | |||
| if (null == payAccount) { | |||
| payAccount = wxPayAccountService.getById(appinfo.getPayId()); | |||
| if (null != payAccount) { | |||
| RedisCacheUtils.cache(objectCommonRedisTemplate, Constant.payaccountPrev+appinfo.getPayId(), payAccount, 24*60*60); | |||
| } | |||
| } | |||
| if (null == payAccount) { | |||
| throw new MallinkException(ErrorCode.USER_APPINFO_NOFUND_PAYACCOUNT); | |||
| } | |||
| return EnumPayVersion.getEnum(payAccount.getPayVersion()); | |||
| } | |||
| /** | |||
| * 微信端获取当前用户 wx_c_user,非会员 | |||
| * 请尽量多用getTenantId, getUserId | |||
| */ | |||
| public CUser getCUser() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | |||
| if (baseuser == null) { | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| if (baseuser.getRealUser() == null) { | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| CUser user = null; | |||
| if(EnumAppPlat.WX.equals(baseuser.getAppPlat())){ | |||
| user = RedisCacheUtils.getFieldObject(baseuser, "realUser", WxCUser.class); | |||
| }else if(EnumAppPlat.TOUTIAO.equals(baseuser.getAppPlat())){ | |||
| user = RedisCacheUtils.getFieldObject(baseuser, "realUser", TtCUser.class); | |||
| }else{ | |||
| user = RedisCacheUtils.getFieldObject(baseuser, "realUser", CUser.class); | |||
| } | |||
| if(user == null){ | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| // TenantEntity tenantEntity = getTenantInfo(); | |||
| // if (user.getTenantId() == null) { | |||
| // user.setTenantId(tenantEntity.getTenantId()); | |||
| // } | |||
| // if (user.getParentTenantId() == null) { | |||
| // user.setParentTenantId(tenantEntity.getParentTenantId()); | |||
| // } | |||
| return user; | |||
| } | |||
| public EnumPayWay getPayWay(){ | |||
| EnumAppPlat appPlat = getCUser().getAppPlat(); | |||
| if(EnumAppPlat.WX.equals(appPlat)){ | |||
| return EnumPayWay.PAY_WAY_WECHAT; | |||
| }else if (EnumAppPlat.TOUTIAO.equals(appPlat)){ | |||
| return EnumPayWay.PAY_WAY_TT; | |||
| } | |||
| return null; | |||
| } | |||
| public void removeCacheCUser() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | |||
| cUserTokenService.removeTokenCache(baseuser.getToken()); | |||
| } | |||
| private WxCUserBasicInfo getCacheMember(Long memberId,String finalTenantId,String key,long seconds) throws MallinkException { | |||
| // 缓存 | |||
| WxCUserBasicInfo member = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, key, WxCUserBasicInfo.class); | |||
| if(null == member) { | |||
| member = wxCUserBasicInfoService.getById(memberId,finalTenantId); | |||
| if (member == null) { | |||
| throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| RedisCacheUtils.cache(objectCommonRedisTemplate, key, member, seconds); | |||
| } | |||
| return member; | |||
| } | |||
| public WxCUserBasicInfo getCacheMember() throws MallinkException { | |||
| Long memberId = getMemberId(); | |||
| String key = "webapp:member:"+memberId; | |||
| return getCacheMember(memberId,getFinalTenantId(), key, 3600*24*3); | |||
| } | |||
| /*此处缓存短暂时间,因为积分、成长值记录*/ | |||
| public WxCUserBasicInfo getShortCacheMember(Long memberId,String finalTenantId) throws Exception { | |||
| String key = "webapp:short:member:"+memberId; | |||
| return getCacheMember(memberId,finalTenantId, key, 100); | |||
| } | |||
| public void removeCacheMember(Long memberId) { | |||
| String key = "webapp:member:"+memberId; | |||
| RedisCacheUtils.removeCache(objectCommonRedisTemplate, key); | |||
| String shortKey = "webapp:short:member:"+memberId; | |||
| RedisCacheUtils.removeCache(objectCommonRedisTemplate, shortKey); | |||
| } | |||
| public WxMaService getWeappService(String appId) { | |||
| if(isFmOpen) { | |||
| return openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
| } else { | |||
| WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); | |||
| if (appinfo == null) { | |||
| return null; | |||
| } | |||
| WxMaService service = maUtil.getWeappService(appinfo); | |||
| return service; | |||
| } | |||
| } | |||
| public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { | |||
| if(!isFmOpen) { | |||
| WxMaService service = maUtil.getWeappService(appinfo); | |||
| return service; | |||
| } | |||
| return null; | |||
| } | |||
| public String getIpAddr() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| @@ -273,23 +122,4 @@ public class BaseController { | |||
| return ipaddress; | |||
| } | |||
| /** | |||
| * 根据扩展字段获取tenantId | |||
| */ | |||
| public String getTenantId(String attach){ | |||
| if(StringUtils.isNotBlank(attach)){ | |||
| try{ | |||
| Map<String,Object> map = JSONObject.parseObject(attach, Map.class); | |||
| String tenantId = map.get("tenantId").toString(); | |||
| if(StringUtils.isNotBlank(tenantId)){ | |||
| return tenantId; | |||
| } | |||
| }catch (Exception e){ | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -45,7 +45,7 @@ public class MouldPatchController extends BaseController { | |||
| record.setSendType(EnumMouldSendType.auto.getCode()); | |||
| record.setStatus(EnumaMouldPatchStatus.put_on.getCode()); | |||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
| final PageInfo<MouldPatch> page = mouldPatchService.listAsPage(record, pageNum, pageSize); | |||
| final PageInfo<MouldPatch> page = mouldPatchService.cListAsPage(record, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @@ -0,0 +1,89 @@ | |||
| package com.iformall.controller; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.base.BaseEntity; | |||
| import com.iformall.domain.po.sm.MouldPatch; | |||
| import com.iformall.domain.po.sm.MouldPatchSign; | |||
| import com.iformall.domain.po.sm.UserMouldVideo; | |||
| import com.iformall.enums.EnumMouldSendType; | |||
| import com.iformall.enums.EnumaMouldPatchStatus; | |||
| import com.iformall.service.sm.MouldPatchService; | |||
| import com.iformall.service.sm.MouldPatchSignService; | |||
| import com.iformall.service.sm.UserMouldVideoService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiImplicitParam; | |||
| import io.swagger.annotations.ApiImplicitParams; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import java.util.List; | |||
| @RestController | |||
| @RequestMapping("/api/userVideo") | |||
| @Api(description = "模板接口") | |||
| public class UserMouldVideoController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private UserMouldVideoService userMouldVideoService; | |||
| @ApiOperation("分页列表接口") | |||
| @GetMapping("list") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| public ResultData list(@ModelAttribute UserMouldVideo record, Integer pageNum, Integer pageSize) { | |||
| logger.debug("[" + getIpAddr() + "] UserMouldVideoController::list"); | |||
| if (record == null) record = new UserMouldVideo(); | |||
| record.setUserId(getMemberId()); | |||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
| final PageInfo<UserMouldVideo> page = userMouldVideoService.cListAsPage(record, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("根据id查询接口") | |||
| @GetMapping("/findById") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| public ResultData findById(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); | |||
| UserMouldVideo userMouldVideo = userMouldVideoService.getById(id); | |||
| return new ResultData(userMouldVideo); | |||
| } | |||
| @ApiOperation("新增接口") | |||
| @PostMapping("saveOrUpdate") | |||
| public ResultData saveOrUpdate(@RequestBody UserMouldVideo record) { | |||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); | |||
| record.setUserId(getMemberId()); | |||
| return userMouldVideoService.saveOrUpdate(record); | |||
| } | |||
| @ApiOperation("生成视频") | |||
| @PostMapping("createVideo") | |||
| public ResultData create(@RequestBody UserMouldVideo record) { | |||
| logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); | |||
| if(record.getId() == null){ | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
| } | |||
| UserMouldVideo mouldVideo = userMouldVideoService.getById(record.getId()); | |||
| if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); | |||
| } | |||
| UserMouldVideo mouldVideoUpd = new UserMouldVideo(); | |||
| mouldVideoUpd.setId(record.getId()); | |||
| // mouldVideoUpd.setVideoId(); | |||
| // mouldVideoUpd.setVideoPath(); | |||
| // mouldVideoUpd.setVideoTime(); | |||
| return userMouldVideoService.saveOrUpdate(mouldVideoUpd); | |||
| } | |||
| } | |||
| @@ -1,27 +1,15 @@ | |||
| package com.iformall.controller; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | |||
| import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.google.code.kaptcha.Producer; | |||
| import com.iformall.annotation.AuthIgnore; | |||
| import com.iformall.annotation.TenantIgnore; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.MallUserInfoVo; | |||
| import com.iformall.domain.vo.WxCUserVo; | |||
| import com.iformall.domain.vo.WxLevelMerchantCVo; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.cuser.CUserServiceFactory; | |||
| import com.iformall.service.wechat.FmOpenService; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.IPUtil; | |||
| import com.iformall.utils.PasswordHelper; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| import io.swagger.annotations.Api; | |||
| @@ -30,31 +18,19 @@ import io.swagger.annotations.ApiImplicitParams; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.apache.commons.io.IOUtils; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.apache.shiro.SecurityUtils; | |||
| import org.apache.shiro.subject.Subject; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import javax.imageio.ImageIO; | |||
| import javax.servlet.ServletException; | |||
| import javax.servlet.ServletOutputStream; | |||
| import javax.servlet.http.Cookie; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import java.awt.image.BufferedImage; | |||
| import java.io.IOException; | |||
| import java.io.PrintWriter; | |||
| import java.math.BigDecimal; | |||
| import java.net.URLEncoder; | |||
| import java.util.Date; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @RestController | |||
| @@ -250,455 +226,4 @@ public class WxUserGrantController extends BaseController { | |||
| } | |||
| } | |||
| @PostMapping("/updateScene") | |||
| @ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}") | |||
| public ResultData updateScene(@RequestBody Map<String, String> map) { | |||
| logger.info(map.toString()); | |||
| String scene = map.get("scene"); | |||
| CUser user = getCUser(); | |||
| if (StringUtils.isBlank(user.getScene()) || | |||
| user.getScene().equalsIgnoreCase(Constant.UNDEFINED)) { | |||
| if(StringUtils.isNotBlank(scene) && scene.equalsIgnoreCase(Constant.UNDEFINED)) { | |||
| user.setScene(scene); | |||
| cuserFactory.getCUserService(user.getAppPlat()).updateScene(user); | |||
| removeCacheCUser(); | |||
| } | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| @PostMapping("/updateLBS") | |||
| @ApiOperation(value = "用户更新位置信息", notes = "{\"latitude\":\"string\",\"longitude\":\"string\"}") | |||
| public ResultData updateLBS(@RequestBody Map<String, String> map) { | |||
| logger.info(map.toString()); | |||
| String longitude = map.get("longitude"); | |||
| String latitude = map.get("latitude"); | |||
| CUser user = getCUser(); | |||
| if (!StringUtils.isBlank(longitude)) | |||
| user.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude))); | |||
| if (!StringUtils.isBlank(latitude)) | |||
| user.setLatitude(BigDecimal.valueOf(Double.valueOf(latitude))); | |||
| cuserFactory.getCUserService(user.getAppPlat()).updateLBS(user); | |||
| return new ResultData(); | |||
| } | |||
| @PostMapping("/updateExtInfo") | |||
| @ApiOperation(value = "用户更新扩展信息(手机)", notes = "{\"systemInfo\":\"string\"}") | |||
| public ResultData updateExtInfo(@RequestBody Map<String, String> map) { | |||
| logger.debug(map.toString()); | |||
| String systemInfo = map.get("systemInfo"); | |||
| CUser user = getCUser(); | |||
| if (StringUtils.isNotBlank(systemInfo)) { | |||
| JSONObject extraInfo = new JSONObject(); | |||
| extraInfo.put("systemInfo", JSONObject.parseObject(systemInfo)); | |||
| user.setExtraInfo(extraInfo.toJSONString()); | |||
| } | |||
| cuserFactory.getCUserService(user.getAppPlat()).updateExtInfo(user); | |||
| return new ResultData(); | |||
| } | |||
| /** | |||
| * 获取用户的昵称等信息 | |||
| * | |||
| * @param map | |||
| * @return | |||
| */ | |||
| @PostMapping("/getUserInfo") | |||
| @ApiOperation(value = "授权后获取用户的昵称,unionId等信息", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
| public ResultData getUserInfo(@RequestBody Map<String, String> map) { | |||
| logger.info(map.toString()); | |||
| Map resultMap = new HashMap(); | |||
| String encryptedData = map.get("encryptedData"); | |||
| String iv = map.get("iv"); | |||
| if (StringUtils.isBlank(encryptedData)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData不能为空"); | |||
| } | |||
| if (StringUtils.isBlank(iv)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv不能为空"); | |||
| } | |||
| CUser user = getCUser(); | |||
| if (user != null) { | |||
| WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); | |||
| if(wxAppinfo == null){ | |||
| return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | |||
| } | |||
| try { | |||
| // 解密用户信息 | |||
| cuserFactory.getCUserService(user.getAppPlat()).decryptUserInfo(encryptedData, iv,user,wxAppinfo,isFmOpen); | |||
| resultMap.put("openId", user.getOpenId()); | |||
| resultMap.put("unionId", user.getUnionId()); | |||
| resultMap.put("msg", "获取用户信息成功!"); | |||
| return new ResultData(resultMap); | |||
| } catch (MallinkException e) { | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage(), e); | |||
| return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap); | |||
| } | |||
| } else { | |||
| return new ResultData(ErrorCode.USER_LOGIN_FAILED); | |||
| } | |||
| } | |||
| /** | |||
| * 授权后获取用户的手机号等信息 | |||
| * | |||
| * @param map | |||
| * @return | |||
| */ | |||
| @PostMapping("/getUserPhone") | |||
| @ApiOperation(value = "授权后获取用户的手机号", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
| public ResultData getUserPhone(@RequestBody Map<String, String> map) { | |||
| logger.info(map.toString()); | |||
| String encryptedData = map.get("encryptedData"); | |||
| String iv = map.get("iv"); | |||
| //登录凭证不能为空 | |||
| if (StringUtils.isBlank(encryptedData)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData 不能为空"); | |||
| } | |||
| if (StringUtils.isBlank(iv)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv 不能为空"); | |||
| } | |||
| Map resultMap = new HashMap(); | |||
| CUser user = getCUser(); | |||
| if (user == null) { | |||
| return new ResultData(ErrorCode.USER_IS_EMPTY); | |||
| } | |||
| WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); | |||
| if(wxAppinfo == null){ | |||
| return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | |||
| } | |||
| try { | |||
| // 解密 | |||
| String phone = cuserFactory.getCUserService(user.getAppPlat()).decryptPhoneNoInfo(encryptedData, iv, user, wxAppinfo, isFmOpen); | |||
| resultMap.put("msg", "授权手机成功!"); | |||
| resultMap.put("phone", phone); | |||
| } catch (MallinkException e) { | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| }catch (Exception e) { | |||
| this.logger.error(e.getMessage(), e); | |||
| return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap); | |||
| } | |||
| return new ResultData(resultMap); | |||
| } | |||
| /** | |||
| * 检查微信用户状态 | |||
| * | |||
| * @return | |||
| */ | |||
| @RequestMapping("/checkWechatStatus") | |||
| @ApiOperation(value = "判断用户是否完成授权", notes = "") | |||
| public ResultData checkWechatStatus() { | |||
| Map resultMap = new HashMap(); | |||
| CUser user = getCUser(); | |||
| if (StringUtils.isNoneEmpty(user.getNickName())) { | |||
| resultMap.put("nickName", user.getNickName()); | |||
| } else { | |||
| logger.warn("用户昵称未授权,跳转到用户授权页!"); | |||
| return new ResultData(ErrorCode.NICK_NAME_NOT_FOUND.getCode(), "用户昵称未授权,请跳转到用户昵称授权页!", resultMap); | |||
| } | |||
| if (StringUtils.isNotBlank(user.getPhone())) { | |||
| resultMap.put("phone", user.getPhone()); | |||
| } else { | |||
| if (StringUtils.isBlank(user.getPhone())) { | |||
| logger.warn("用户手机号未授权,跳转到授权手机号页!"); | |||
| return new ResultData(ErrorCode.PHONE_NOT_FOUND.getCode(), "用户手机号未授权,请跳转到授权手机号页!", resultMap); | |||
| } | |||
| if (user.getPhone().contains("*")) { | |||
| logger.warn("用户手机号已加密,跳转到手工输入手机号页!"); | |||
| return new ResultData(ErrorCode.PHONE_IS_ENCRYPTED.getCode(), "用户手机号已加密,手工输入手机号页!", resultMap); | |||
| } | |||
| } | |||
| return new ResultData(Result.SUCCESS, "是老用户,已完成用户昵称/手机号授权", resultMap); | |||
| } | |||
| /** | |||
| * 检查用户状态 | |||
| * | |||
| * @return | |||
| */ | |||
| @RequestMapping("/checkUserStatus") | |||
| @ApiOperation(value = "判断用户是否完成昵称授权", notes = "") | |||
| public ResultData checkUserStatus() { | |||
| Map resultMap = new HashMap(); | |||
| CUser user = getCUser(); | |||
| if (StringUtils.isNoneEmpty(user.getNickName())) { | |||
| resultMap.put("nickName", user.getNickName()); | |||
| } else { | |||
| logger.warn("用户昵称未授权,跳转到用户授权页!"); | |||
| return new ResultData(ErrorCode.NICK_NAME_NOT_FOUND.getCode(), "用户昵称未授权,请跳转到用户昵称授权页!", resultMap); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "是老用户,已完成用户昵称授权", resultMap); | |||
| } | |||
| /** | |||
| * 检查用户状态 | |||
| * | |||
| * @return | |||
| */ | |||
| @RequestMapping("/checkPhoneStatus") | |||
| @ApiOperation(value = "判断用户是否完成手机授权", notes = "") | |||
| public ResultData checkPhoneStatus() { | |||
| Map resultMap = new HashMap(); | |||
| CUser user = getCUser(); | |||
| if (StringUtils.isNotBlank(user.getPhone())) { | |||
| resultMap.put("phone", user.getPhone()); | |||
| } else { | |||
| if (StringUtils.isBlank(user.getPhone())) { | |||
| logger.warn("用户手机号未授权,跳转到授权手机号页!"); | |||
| return new ResultData(ErrorCode.PHONE_NOT_FOUND.getCode(), "用户手机号未授权,请跳转到授权手机号页!", resultMap); | |||
| } | |||
| if (user.getPhone().contains("*")) { | |||
| logger.warn("用户手机号已加密,跳转到手工输入手机号页!"); | |||
| return new ResultData(ErrorCode.PHONE_IS_ENCRYPTED.getCode(), "用户手机号已加密,手工输入手机号页!", resultMap); | |||
| } | |||
| } | |||
| return new ResultData(Result.SUCCESS, "是老用户,已完成手机号授权", resultMap); | |||
| } | |||
| // @RedisCache //导致更改手机号后数据更新不及时 | |||
| @ApiOperation("获取当前用户信息") | |||
| @GetMapping("/userinfo") | |||
| public ResultData getUserInfo() { | |||
| CUser user = getCUser(); | |||
| WxCUserVo userVo = new WxCUserVo(); | |||
| org.springframework.beans.BeanUtils.copyProperties(user, userVo); | |||
| userVo.setScore(0); | |||
| userVo.setCredit(0); | |||
| if(user.basicInfoIs()){ | |||
| WxCUserBasicInfo wxCUserBasicInfo; | |||
| try { | |||
| wxCUserBasicInfo = getShortCacheMember(user.getUserId(),getFinalTenantId()); | |||
| //WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId()); | |||
| if (wxCUserBasicInfo != null) { | |||
| userVo.setAvatarUrl(wxCUserBasicInfo.getAvatarUrl()); | |||
| userVo.setNickName(wxCUserBasicInfo.getNickName()); | |||
| userVo.setScore(wxCUserBasicInfo.getPoins()); | |||
| userVo.setCredit(wxCUserBasicInfo.getCredit()); | |||
| userVo.setName(wxCUserBasicInfo.getName()); | |||
| userVo.setBirthdate(wxCUserBasicInfo.getBirthdate()); | |||
| userVo.setSex(wxCUserBasicInfo.getSex()); | |||
| userVo.setHeight(wxCUserBasicInfo.getHeight()); | |||
| userVo.setWeight(wxCUserBasicInfo.getWeight()); | |||
| userVo.setAddress(wxCUserBasicInfo.getAddress()); | |||
| userVo.setStatus(wxCUserBasicInfo.getStatus()); | |||
| } | |||
| } catch (Exception e) { | |||
| logger.error("userinfo error.",e); | |||
| } | |||
| } | |||
| if (userVo.getScore() == null) | |||
| userVo.setScore(0); | |||
| Integer levelScore = 0; | |||
| Integer levelTarget= 0; | |||
| userVo.setLevelName(WxLevelConfigService.DEFAULT_LEVEL); | |||
| List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantInfo(getTenantInfo()); | |||
| if (levelList.size() > 0) | |||
| levelTarget = levelList.get(0).getPoints(); | |||
| for (int i = 0; i<levelList.size(); i++) { | |||
| WxLevelConfig levelConfig = levelList.get(i); | |||
| if (userVo.getScore() >= levelConfig.getPoints()) { | |||
| userVo.setLevelId(levelConfig.getId()); | |||
| userVo.setLevelName(levelConfig.getLevel()); | |||
| levelScore = levelConfig.getPoints(); | |||
| if (i+1 < levelList.size()) | |||
| levelTarget = levelList.get(i+1).getPoints(); | |||
| } | |||
| } | |||
| if (levelTarget == 0) { | |||
| userVo.setUpgradePercent(0); | |||
| userVo.setUpgradeScore(0); | |||
| } else if(levelScore == levelTarget) { | |||
| userVo.setUpgradePercent(100); | |||
| userVo.setUpgradeScore(0); | |||
| } else { | |||
| userVo.setUpgradePercent((userVo.getScore()-levelScore)*100/(levelTarget-levelScore)); | |||
| userVo.setUpgradeScore(levelTarget-userVo.getScore()); | |||
| } | |||
| return new ResultData(userVo); | |||
| } | |||
| /** | |||
| * 授权后获取用户的手机号等信息 | |||
| * | |||
| * @param map | |||
| * @return | |||
| */ | |||
| @PostMapping("/getWeRunData") | |||
| @ApiOperation(value = "获取用户过去三十天微信运动步数", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
| public ResultData getWeRunData(@RequestBody Map<String, String> map) { | |||
| logger.debug(map.toString()); | |||
| String encryptedData = map.get("encryptedData"); | |||
| String iv = map.get("iv"); | |||
| //登录凭证不能为空 | |||
| if (StringUtils.isBlank(encryptedData)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData 不能为空"); | |||
| } | |||
| if (StringUtils.isBlank(iv)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv 不能为空"); | |||
| } | |||
| CUser user = getCUser(); | |||
| String session_key = user.getSessionKey(); | |||
| try { | |||
| // 解密 | |||
| String weRunDataStr = WxMaCryptUtils.decrypt(session_key, encryptedData, iv); | |||
| if (null != weRunDataStr) { | |||
| Object obj = JSON.parse(weRunDataStr); | |||
| return new ResultData(obj); | |||
| } else { | |||
| return new ResultData(ErrorCode.WE_RUN_DATA_DECODE_ERR); | |||
| } | |||
| } catch (Exception e) { | |||
| this.logger.error(e.getMessage(), e); | |||
| return new ResultData(ErrorCode.WE_RUN_DATA_DECODE_ERR); | |||
| } | |||
| } | |||
| /** | |||
| * 用户更新信息 | |||
| * | |||
| * @return | |||
| */ | |||
| @PostMapping("/updateUserInfo") | |||
| @ApiOperation(value = "用户更新信息", notes = "") | |||
| public ResultData updateUserInfo(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) { | |||
| if (wxCUserBasicInfo == null) | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| Long memberId; | |||
| try { | |||
| memberId = getMemberId(); | |||
| } catch (Exception e) { | |||
| return new ResultData(Result.ERROR,e.getMessage()); | |||
| } | |||
| if (StringUtils.isNotBlank(wxCUserBasicInfo.getNickName()) | |||
| || StringUtils.isNotBlank(wxCUserBasicInfo.getAvatarUrl()) | |||
| || StringUtils.isNotBlank(wxCUserBasicInfo.getName()) | |||
| || wxCUserBasicInfo.getBirthdate() != null | |||
| || wxCUserBasicInfo.getSex() != null | |||
| || StringUtils.isNotBlank(wxCUserBasicInfo.getAddress())) { | |||
| WxCUserBasicInfo record = new WxCUserBasicInfo(); | |||
| record.setId(memberId); | |||
| record.setNickName(wxCUserBasicInfo.getNickName()); | |||
| record.setAvatarUrl(wxCUserBasicInfo.getAvatarUrl()); | |||
| record.setName(wxCUserBasicInfo.getName()); | |||
| record.setBirthdate(wxCUserBasicInfo.getBirthdate()); | |||
| record.setSex(wxCUserBasicInfo.getSex()); | |||
| record.setWeight(wxCUserBasicInfo.getWeight()); | |||
| record.setHeight(wxCUserBasicInfo.getHeight()); | |||
| record.setAddress(wxCUserBasicInfo.getAddress()); | |||
| record.setUpdateDate(new Date()); | |||
| record.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||
| wxCUserBasicInfoService.update(record); | |||
| removeCacheMember(memberId); | |||
| try{ | |||
| //推送猫酷 | |||
| mallCooUserInfoService.pullByMobileMsg(tenantEntity, record.getId()); | |||
| }catch(Exception e){ | |||
| logger.error("发送同步会员消息异常"); | |||
| } | |||
| wxScoreRulesService.addScore(tenantEntity,EnumScoreType.COMPLETE_INFO, record); | |||
| //增加积分 | |||
| WxCreditHistory wxCreditHistory = new WxCreditHistory(); | |||
| wxCreditHistory.setCUserId(record.getId()); | |||
| // wxCreditHistory.updateTenantInfo(tenantEntity); | |||
| wxCreditHistory.setTenantId(tenantEntity.getFinalTenantId()); | |||
| wxCreditHistory.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||
| wxCreditHistory.setCreateDate(new Date()); | |||
| wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode()); | |||
| wxCreditHistory.setChangePurpose(EnumScoreType.COMPLETE_INFO.getMessage()); | |||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | |||
| wxCreditHistory.setOperatorId(memberId); | |||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantEntity.getTenantId()); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity,null); | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| /** | |||
| * 获取用户折扣率 | |||
| * | |||
| * @return | |||
| */ | |||
| @RequestMapping("/getDiscountInfo") | |||
| @ApiOperation(value = "获取用户折扣率", notes = "") | |||
| public ResultData getDiscountInfo() { | |||
| WxCUserBasicInfo member; | |||
| try { | |||
| Long memberId = getMemberId(); | |||
| member = wxCUserBasicInfoService.getById(memberId,getFinalTenantId()); | |||
| } catch (Exception e) { | |||
| return new ResultData(Result.ERROR,e.getMessage()); | |||
| } | |||
| List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantInfo(getTenantInfo()); | |||
| String level = WxLevelConfigService.DEFAULT_LEVEL; | |||
| Long levelId = 0L; | |||
| for (WxLevelConfig levelConfig : levelList) { | |||
| if (member.getPoins() >= levelConfig.getPoints()) { | |||
| if (levelConfig.getDiscountEnable().equals(EnumLevelConfigDiscountStatus.ENABLE.getCode())) | |||
| levelId = levelConfig.getId(); | |||
| level = levelConfig.getLevel(); | |||
| } | |||
| } | |||
| WxLevelMerchant levelMerchant = new WxLevelMerchant(); | |||
| levelMerchant.updateTenantInfo(getTenantInfo()); | |||
| levelMerchant.setLevelId(levelId); | |||
| List<WxLevelMerchantCVo> levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant); | |||
| Map<String, Object> result = new HashMap(); | |||
| result.put("id", member.getId()); | |||
| result.put("level", level); | |||
| result.put("levelMerchantList", levelMerchantList); | |||
| return new ResultData(result); | |||
| } | |||
| @PostMapping("/updateMsg") | |||
| @ApiOperation(value = "updateMsg", notes = "{\"id\":\"string\"}") | |||
| public ResultData updateMsg() { | |||
| CUser user = getCUser(); | |||
| cuserFactory.getCUserService(user.getAppPlat()).updateMsgCount(user); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("获取当前用户二维码") | |||
| @GetMapping("/userinfoQrCode") | |||
| public ResultData getUserinfoQrCode() { | |||
| CUser user = getCUser(); | |||
| if(user.basicInfoIs()){ | |||
| String qrCode = ""; | |||
| if(StringUtils.isBlank(user.getQrCode())){ | |||
| qrCode = cuserFactory.getCUserService(user.getAppPlat()).updateQrCode(user); | |||
| }else{ | |||
| qrCode = user.getQrCode(); | |||
| } | |||
| return new ResultData(qrCode); | |||
| }else{ | |||
| return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); | |||
| } | |||
| } | |||
| } | |||
| @@ -73,6 +73,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||
| if(basicInfo == null){ | |||
| throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录"); | |||
| } | |||
| request.setAttribute(Constant.LOGIN_MEMBER_KEY,basicInfo.getId()); | |||
| return true; | |||
| } | |||
| @@ -96,7 +96,7 @@ public class MouldPatch extends TenantEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value="购买须知",name="remark") | |||
| private String remark; | |||
| @io.swagger.annotations.ApiModelProperty(value="模板文件",name="mould_path") | |||
| @io.swagger.annotations.ApiModelProperty(value="模板文件",name="mouldPath") | |||
| private String mouldPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="EnumaMouldPatchStatus 状态(-1:全部,0:草稿/待生效,1:已生效,2:已失效,3:已作废)",name="status") | |||
| @@ -26,6 +26,7 @@ public interface MouldPatchService { | |||
| * @return | |||
| */ | |||
| PageInfo<MouldPatch> listAsPage(MouldPatch record, Integer pageIndex, Integer pageSize); | |||
| PageInfo<MouldPatch> cListAsPage(MouldPatch record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据Id获得实体 | |||
| @@ -0,0 +1,42 @@ | |||
| package com.iformall.service.sm; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.sm.MouldPatch; | |||
| import com.iformall.domain.po.sm.UserMouldVideo; | |||
| public interface UserMouldVideoService { | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| * @param pageIndex | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | |||
| PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| UserMouldVideo getById(Long id); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| */ | |||
| ResultData saveOrUpdate(UserMouldVideo record); | |||
| /** | |||
| * 根据Id删除实体 | |||
| * | |||
| * @param id | |||
| */ | |||
| void deleteById(Long id); | |||
| } | |||
| @@ -34,6 +34,11 @@ public class MouldPatchServiceImpl implements MouldPatchService { | |||
| public PageInfo<MouldPatch> listAsPage(MouldPatch record, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mouldPatchMapper.findList(record)); | |||
| } | |||
| @Override | |||
| public PageInfo<MouldPatch> cListAsPage(MouldPatch record, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mouldPatchMapper.findCList(record)); | |||
| } | |||
| @Override | |||
| public MouldPatch getById(Long id) { | |||
| @@ -0,0 +1,64 @@ | |||
| package com.iformall.service.sm.impl; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.sm.UserMouldVideo; | |||
| import com.iformall.mapper.UserMouldVideoMapper; | |||
| import com.iformall.service.sm.UserMouldVideoService; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Date; | |||
| @Service | |||
| public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| UserMouldVideoMapper userMouldVideoMapper; | |||
| @Override | |||
| public PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findList(record)); | |||
| } | |||
| @Override | |||
| public PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findCList(record)); | |||
| } | |||
| @Override | |||
| public UserMouldVideo getById(Long id) { | |||
| return userMouldVideoMapper.selectById(id); | |||
| } | |||
| @Override | |||
| public ResultData saveOrUpdate(UserMouldVideo record) { | |||
| Date now = new Date(); | |||
| if (record.getId() == null) { | |||
| //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| record.setId(idWorker.nextId()); | |||
| record.setCreateDate(now); | |||
| record.setUpdateDate(now); | |||
| userMouldVideoMapper.insert(record); | |||
| } else { | |||
| record.setUpdateDate(now); | |||
| userMouldVideoMapper.updateById(record); | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| @Override | |||
| public void deleteById(Long id) { | |||
| userMouldVideoMapper.deleteById(id); | |||
| } | |||
| } | |||