diff --git a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java index 508d1cf..346ccb7 100644 --- a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java +++ b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java @@ -15,6 +15,7 @@ import com.bnyer.img.api.model.LoginWechatUser; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -43,6 +44,14 @@ public interface RemoteImgService { @PostMapping(value = "/img/mini/creator/getCreatorInfo") public R getCreatorInfo(@Validated @ApiParam("艺术家登录数据") @RequestBody CreatorLoginDto param); + /** + * 更新艺术家登录时间 + * @param creatorId 艺术家id + * @return - + */ + @PostMapping(value = "/img/mini/creator/updateLoginTime/{creatorId}") + public void updateLoginTime(@ApiParam("艺术家id") @PathVariable Long creatorId); + /** * 获取快手小程序用户信息 * @param dto 登录数据 diff --git a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java index 1629027..0c2c1eb 100644 --- a/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java +++ b/bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java @@ -42,6 +42,11 @@ public class RemoteImgFallbackFactory implements FallbackFactory getFhLoginUserByLoginParam(FhLoginDto dto) { return R.fail("获取快手小程序用户信息失败:" + throwable.getMessage()); diff --git a/bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java b/bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java index c704d53..2a9a880 100644 --- a/bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java +++ b/bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java @@ -31,6 +31,8 @@ public class CreatorLoginService { if(creatorInfo.getData().getCreator().getStatus().equals("2")){ throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR); } + //更新登录时间 + remoteImgService.updateLoginTime(creatorInfo.getData().getCreatorId()); return creatorInfo.getData(); } diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java index c249dab..cc7c4da 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java @@ -112,6 +112,13 @@ public class Creator extends BaseDomain { @ApiModelProperty(value="是否活跃(0->不活跃;1->活跃 连续10天以上更新内容)") private String isHot; + /** + * 是否为机器人 (0->否;1->是) + */ + @TableField(value = "is_robot") + @ApiModelProperty(value="是否为机器人 (0->否;1->是)") + private String isRobot; + /** * 最后登录时间 */ diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorPageDto.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorPageDto.java index e6062ab..46a1515 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorPageDto.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorPageDto.java @@ -31,4 +31,7 @@ public class CreatorPageDto extends BasePageDto { @ApiModelProperty(value="是否展示") private String isShow; + + @ApiModelProperty(value="是否为机器人") + private String isRobot; } diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/uuid/IdUtils.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/uuid/IdUtils.java index 77c3548..3fc7fe2 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/uuid/IdUtils.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/uuid/IdUtils.java @@ -1,5 +1,9 @@ package com.bnyer.common.core.utils.uuid; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** * ID生成器工具类 * @@ -71,9 +75,35 @@ public class IdUtils return shortBuffer.toString(); } + /** + * 生成9位数机器人艺术家手机号 + * @return - + */ + public static String robotPhoneGen(){ + long timeSeed = System.nanoTime(); + double randSeed = Math.random() * 1000; + long midSeed = (long) (timeSeed * randSeed); + String s = midSeed + ""; + String subStr = s.substring(0, 9); + int finalSeed = Integer.parseInt(subStr); + return String.valueOf(finalSeed); + } + + /** + * 随时生成6位搜索码 + * @return - + */ + public static String scanCodeGen(){ + return String.valueOf((int)(Math.random() * 9 + 1) * 100000); + } + public static void main(String[] args) { - for (int i = 0; i < 50; i++) { - System.out.println(inviteCodeGen()); - } + long timeSeed = System.nanoTime(); + double randSeed = Math.random() * 1000; + long midSeed = (long) (timeSeed * randSeed); + String s = midSeed + ""; + String subStr = s.substring(0, 9); + int finalSeed = Integer.parseInt(subStr); + System.out.println(String.valueOf(finalSeed)); } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java index 6670061..0579701 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java @@ -363,6 +363,13 @@ public class CreatorMiniController extends BaseController { return creatorService.getCreatorInfoByPhoneAndPassword(param.getPhone(),param.getPassword()); } + @GetMapping("/updateLoginTime/{creatorId}") + @ApiOperation("获取艺术家信息") + public void updateLoginTime(@ApiParam("艺术家id") @PathVariable Long creatorId) + { + creatorService.updateLoginTime(creatorId); + } + //@TokenCheck @ApiOperation(value="查询艺术家分类图片数量") @GetMapping(value = "/queryCreatorTypeImgNum/{creatorId}") diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java index 84c0e4c..e41ab91 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java @@ -115,4 +115,10 @@ public interface CreatorService { * @return - */ R getCreatorInfoByPhoneAndPassword(String phone,String password); + + /** + * 更新艺术家登录时间 + * @param creatorId 艺术家id + */ + void updateLoginTime(Long creatorId); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java index f6cd1fb..269901f 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java @@ -153,58 +153,6 @@ public class CreatorServiceImpl implements CreatorService { return creatorMapper.queryCreatorDetailsByScanCode(scanCode); } - -// -// @Override -// public Map login(CreatorLoginDto dto) { -// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); -// wrapper.eq(Creator::getPhone, Sm4Util.sm4Encryption(dto.getPhone())); -// wrapper.eq(Creator::getPassword, Sm4Util.sm4Encryption(dto.getPassword())); -// Creator creator = creatorMapper.selectOne(wrapper); -// if(creator == null){ -// throw new ServiceException("手机号或密码不正确!",TiktokConstant.TIKTOK_CREATOR_PWD_ERROR); -// } -// if(creator.getStatus().equals("0")){ -// throw new ServiceException("当前艺术家暂未审核,请耐心等待或联系客服!",TiktokConstant.TIKTOK_CREATOR_NOT_PASS_ERROR); -// } -// if(creator.getStatus().equals("2")){ -// throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR); -// } -// CreatorLoginVo creatorLoginVo = new CreatorLoginVo(); -// BeanUtils.copyProperties(creator, creatorLoginVo); -// creatorLoginVo.setLastLoginTime(new Date()); -// //存在则设置会话状态 -// String redisKey = RedisKeyConstant.WECHAT_CREATOR_LOGIN_KEY+Sm4Util.sm4Encryption(dto.getPhone()); -// //存在该登录态则删除刷新 -// if(redisService.hasKey(redisKey)){ -// redisService.deleteObject(redisKey); -// } -// StringBuffer sb = new StringBuffer(); -// String randomId = IdUtils.fastSimpleUUID(); -// sb.append(randomId).append("#").append(Sm4Util.sm4Encryption(dto.getPhone()+randomId)); -// //设置登录会话 -// Map map = new HashMap<>(2); -// map.put("token", sb.toString()); -// map.put("userInfo",creatorLoginVo); -// redisService.setCacheObject(redisKey,map, 10L, TimeUnit.DAYS); -// return map; -// } - -// @Override -// public boolean logout(String phone) { -// //存在则设置会话状态 -// String redisKey = RedisKeyConstant.WECHAT_CREATOR_LOGIN_KEY+phone; -// if(redisService.hasKey(redisKey)){ -// redisService.deleteObject(redisKey); -// log.info("艺术家【{}】注销成功!",phone); -// return true; -// }else{ -// log.error("艺术家【{}】注销失败!",phone); -// return false; -// } -// -// } - @Override public List queryHotCreatorList() { List creatorHotVos = creatorMapper.queryHotCreatorList(); @@ -288,4 +236,16 @@ public class CreatorServiceImpl implements CreatorService { loginCreator.setCreator(loginVo); return R.ok(loginCreator); } + + @Override + public void updateLoginTime(Long creatorId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Creator::getId, creatorId); + wrapper.eq(Creator::getIsShow, "1"); + Creator creator = creatorMapper.selectOne(wrapper); + if(creator != null){ + creator.setLastLoginTime(new Date()); + creatorMapper.updateById(creator); + } + } } diff --git a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/controller/CreatorController.java b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/controller/CreatorController.java index 0af563c..d9425ef 100644 --- a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/controller/CreatorController.java +++ b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/controller/CreatorController.java @@ -58,6 +58,14 @@ public class CreatorController extends BaseController { return AjaxResult.success(creatorService.insertCreator(dto)); } + //@RequiresPermissions("system:config:list") + @ApiOperation(value="批量生成机器人艺术家") + @GetMapping(value = "/insertRobot") + public AjaxResult insertRobot(){ + creatorService.insertRobot(); + return AjaxResult.success(); + } + //@RequiresPermissions("system:config:list") @ApiOperation(value="修改艺术家") @PostMapping(value = "/update") diff --git a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java index 8baf71b..5328833 100644 --- a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java +++ b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java @@ -13,6 +13,8 @@ import java.util.List; */ public interface ICreatorService { + void insertRobot(); + /** * 成为艺术家 * @param dto 艺术家参数 diff --git a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java index 7493a18..092d820 100644 --- a/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java +++ b/bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java @@ -1,5 +1,7 @@ package com.bnyer.system.service.impl; +import cn.hutool.crypto.digest.MD5; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.bnyer.common.core.constant.TiktokConstant; @@ -20,13 +22,16 @@ import com.bnyer.system.mapper.TiktokImgMapper; import com.bnyer.system.mapper.VerifyLogMapper; import com.bnyer.system.service.ICreatorService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.Md5Crypt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author chengkun @@ -48,6 +53,69 @@ public class CreatorServiceImpl implements ICreatorService { @Autowired private InviteLogMapper inviteLogMapper; + @Override + @Transactional(rollbackFor = Exception.class) + public void insertRobot() { + //批量生成3个机器人 + for (int i = 0; i < 3; i++) { + Creator creator = new Creator(); + creator.setIsRobot("1"); + creator.setCreateTime(new Date()); + creator.setExp(0); + creator.setAmt(new BigDecimal(0)); + creator.setIsHot("0"); + creator.setLevelId(1L); + creator.setUpdateTime(new Date()); + creator.setInviteCode(IdUtils.inviteCodeGen()); + creator.setStatus("1"); + creator.setIsShow("1"); + creator.setUrl("thirdUrl"); + + //特定处理部分 + creator.setName("bnyer_robot_"+IdUtils.inviteCodeGen()); + creator.setPassword(Sm4Util.sm4Encryption(MD5.create().digestHex("CIYUANjiedian2021."))); + creator.setIntro("这个艺术家正在构思奇思妙想呢!"); + Creator creatorByScanCode = null; + String scanCode = null; + do{ + //检查搜索码是否唯一 + scanCode = IdUtils.scanCodeGen(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Creator::getScanCode,scanCode); + wrapper.eq(Creator::getIsShow, "1"); + creatorByScanCode = creatorMapper.selectOne(wrapper); + //如果查询结构不为空则循环执行,否则跳出 + }while (creatorByScanCode != null); + creator.setScanCode(scanCode); + + //获取头像图片表,随机选择一个作为头像 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TiktokImg::getIsOriginal,"0"); + queryWrapper.eq(TiktokImg::getTypeId, 1L); + queryWrapper.eq(TiktokImg::getIsShow, "1"); + List imgLists = tiktokImgMapper.selectList(queryWrapper).stream().map(TiktokImg::getImgUrl).collect(Collectors.toList()); + Collections.shuffle(imgLists); + creator.setImg(imgLists.get(0)); + + //设置手机号 + String robotPhone = null; + Creator creatorByPhone = null; + do{ + //检查机器人手机号是否唯一 + robotPhone = Sm4Util.sm4Encryption("br"+IdUtils.robotPhoneGen()); + LambdaQueryWrapper wrapperPhone = new LambdaQueryWrapper<>(); + wrapperPhone.eq(Creator::getPhone,robotPhone); + wrapperPhone.eq(Creator::getIsShow, "1"); + wrapperPhone.eq(Creator::getIsRobot, "1"); + creatorByPhone = creatorMapper.selectOne(wrapperPhone); + //如果查询结构不为空则循环执行,否则跳出 + }while (creatorByPhone != null); + creator.setPhone(robotPhone); + creatorMapper.insert(creator); + log.debug("【图文平台后台】生成了机器人艺术家:{}", JSON.toJSONString(creator.getPhone())); + } + } + @Override @Transactional(rollbackFor = Exception.class) public int insertCreator(CreatorDto dto) { diff --git a/bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml b/bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml index d835615..39f9746 100644 --- a/bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml +++ b/bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml @@ -19,6 +19,7 @@ + @@ -30,7 +31,7 @@ id, `name`,password, scan_code, phone, img, intro, invite_code, url, status, is_hot, is_show, create_time, - update_time, sort, amt, last_login_time,level_id,exp + update_time, sort, amt, last_login_time,level_id,exp,is_robot