Browse Source

feature-img-1.0:添加机器人艺术家功能、艺术家登录新增更新登录时间功能

feature-1.0-img
Penny 3 years ago
parent
commit
e1274a2621
  1. 9
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/RemoteImgService.java
  2. 5
      bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java
  3. 2
      bnyer-auth/src/main/java/com/bnyer/auth/service/CreatorLoginService.java
  4. 7
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/Creator.java
  5. 3
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/dto/CreatorPageDto.java
  6. 36
      bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/uuid/IdUtils.java
  7. 7
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java
  8. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java
  9. 64
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java
  10. 8
      bnyer-services/bnyer-system/src/main/java/com/bnyer/system/controller/CreatorController.java
  11. 2
      bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java
  12. 68
      bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java
  13. 6
      bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml

9
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 io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -43,6 +44,14 @@ public interface RemoteImgService {
@PostMapping(value = "/img/mini/creator/getCreatorInfo") @PostMapping(value = "/img/mini/creator/getCreatorInfo")
public R<LoginCreator> getCreatorInfo(@Validated @ApiParam("艺术家登录数据") @RequestBody CreatorLoginDto param); public R<LoginCreator> 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 登录数据 * @param dto 登录数据

5
bnyer-api/bnyer-api-img/src/main/java/com/bnyer/img/api/factory/RemoteImgFallbackFactory.java

@ -42,6 +42,11 @@ public class RemoteImgFallbackFactory implements FallbackFactory<RemoteImgServic
return R.fail("获取艺术家失败:" + throwable.getMessage()); return R.fail("获取艺术家失败:" + throwable.getMessage());
} }
@Override
public void updateLoginTime(Long creatorId) {
}
@Override @Override
public R<LoginFhUser> getFhLoginUserByLoginParam(FhLoginDto dto) { public R<LoginFhUser> getFhLoginUserByLoginParam(FhLoginDto dto) {
return R.fail("获取快手小程序用户信息失败:" + throwable.getMessage()); return R.fail("获取快手小程序用户信息失败:" + throwable.getMessage());

2
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")){ if(creatorInfo.getData().getCreator().getStatus().equals("2")){
throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR); throw new ServiceException("当前艺术家被封禁,请联系客服处理!",TiktokConstant.TIKTOK_CREATOR_BANED_ERROR);
} }
//更新登录时间
remoteImgService.updateLoginTime(creatorInfo.getData().getCreatorId());
return creatorInfo.getData(); return creatorInfo.getData();
} }

7
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天以上更新内容)") @ApiModelProperty(value="是否活跃(0->不活跃;1->活跃 连续10天以上更新内容)")
private String isHot; private String isHot;
/**
* 是否为机器人 (0->1->)
*/
@TableField(value = "is_robot")
@ApiModelProperty(value="是否为机器人 (0->否;1->是)")
private String isRobot;
/** /**
* 最后登录时间 * 最后登录时间
*/ */

3
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="是否展示") @ApiModelProperty(value="是否展示")
private String isShow; private String isShow;
@ApiModelProperty(value="是否为机器人")
private String isRobot;
} }

36
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; package com.bnyer.common.core.utils.uuid;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/** /**
* ID生成器工具类 * ID生成器工具类
* *
@ -71,9 +75,35 @@ public class IdUtils
return shortBuffer.toString(); 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) { public static void main(String[] args) {
for (int i = 0; i < 50; i++) { long timeSeed = System.nanoTime();
System.out.println(inviteCodeGen()); 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));
} }
} }

7
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()); return creatorService.getCreatorInfoByPhoneAndPassword(param.getPhone(),param.getPassword());
} }
@GetMapping("/updateLoginTime/{creatorId}")
@ApiOperation("获取艺术家信息")
public void updateLoginTime(@ApiParam("艺术家id") @PathVariable Long creatorId)
{
creatorService.updateLoginTime(creatorId);
}
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询艺术家分类图片数量") @ApiOperation(value="查询艺术家分类图片数量")
@GetMapping(value = "/queryCreatorTypeImgNum/{creatorId}") @GetMapping(value = "/queryCreatorTypeImgNum/{creatorId}")

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java

@ -115,4 +115,10 @@ public interface CreatorService {
* @return - * @return -
*/ */
R<LoginCreator> getCreatorInfoByPhoneAndPassword(String phone,String password); R<LoginCreator> getCreatorInfoByPhoneAndPassword(String phone,String password);
/**
* 更新艺术家登录时间
* @param creatorId 艺术家id
*/
void updateLoginTime(Long creatorId);
} }

64
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); return creatorMapper.queryCreatorDetailsByScanCode(scanCode);
} }
//
// @Override
// public Map<String, Object> login(CreatorLoginDto dto) {
// LambdaQueryWrapper<Creator> 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<String, Object> 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 @Override
public List<CreatorHotVo> queryHotCreatorList() { public List<CreatorHotVo> queryHotCreatorList() {
List<CreatorHotVo> creatorHotVos = creatorMapper.queryHotCreatorList(); List<CreatorHotVo> creatorHotVos = creatorMapper.queryHotCreatorList();
@ -288,4 +236,16 @@ public class CreatorServiceImpl implements CreatorService {
loginCreator.setCreator(loginVo); loginCreator.setCreator(loginVo);
return R.ok(loginCreator); return R.ok(loginCreator);
} }
@Override
public void updateLoginTime(Long creatorId) {
LambdaQueryWrapper<Creator> 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);
}
}
} }

8
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)); 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") //@RequiresPermissions("system:config:list")
@ApiOperation(value="修改艺术家") @ApiOperation(value="修改艺术家")
@PostMapping(value = "/update") @PostMapping(value = "/update")

2
bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/ICreatorService.java

@ -13,6 +13,8 @@ import java.util.List;
*/ */
public interface ICreatorService { public interface ICreatorService {
void insertRobot();
/** /**
* 成为艺术家 * 成为艺术家
* @param dto 艺术家参数 * @param dto 艺术家参数

68
bnyer-services/bnyer-system/src/main/java/com/bnyer/system/service/impl/CreatorServiceImpl.java

@ -1,5 +1,7 @@
package com.bnyer.system.service.impl; 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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.constant.TiktokConstant; 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.mapper.VerifyLogMapper;
import com.bnyer.system.service.ICreatorService; import com.bnyer.system.service.ICreatorService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.Md5Crypt;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author chengkun * @author chengkun
@ -48,6 +53,69 @@ public class CreatorServiceImpl implements ICreatorService {
@Autowired @Autowired
private InviteLogMapper inviteLogMapper; 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<Creator> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Creator::getScanCode,scanCode);
wrapper.eq(Creator::getIsShow, "1");
creatorByScanCode = creatorMapper.selectOne(wrapper);
//如果查询结构不为空则循环执行,否则跳出
}while (creatorByScanCode != null);
creator.setScanCode(scanCode);
//获取头像图片表,随机选择一个作为头像
LambdaQueryWrapper<TiktokImg> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TiktokImg::getIsOriginal,"0");
queryWrapper.eq(TiktokImg::getTypeId, 1L);
queryWrapper.eq(TiktokImg::getIsShow, "1");
List<String> 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<Creator> 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 @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int insertCreator(CreatorDto dto) { public int insertCreator(CreatorDto dto) {

6
bnyer-services/bnyer-system/src/main/resources/com/bnyer/system/mapper/CreatorMapper.xml

@ -19,6 +19,7 @@
<result column="exp" jdbcType="INTEGER" property="exp" /> <result column="exp" jdbcType="INTEGER" property="exp" />
<result column="is_hot" jdbcType="CHAR" property="isHot" /> <result column="is_hot" jdbcType="CHAR" property="isHot" />
<result column="is_show" jdbcType="CHAR" property="isShow" /> <result column="is_show" jdbcType="CHAR" property="isShow" />
<result column="is_robot" jdbcType="CHAR" property="isRobot" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="last_login_time" jdbcType="TIMESTAMP" property="lastLoginTime" /> <result column="last_login_time" jdbcType="TIMESTAMP" property="lastLoginTime" />
@ -30,7 +31,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
id, `name`,password, scan_code, phone, img, intro, invite_code, url, status, is_hot, is_show, create_time, 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
</sql> </sql>
<select id="queryPage" resultMap="BaseResultMap"> <select id="queryPage" resultMap="BaseResultMap">
@ -53,6 +54,9 @@
<if test="params.isHot != null and params.isHot != ''"> <if test="params.isHot != null and params.isHot != ''">
and is_hot = #{params.isHot} and is_hot = #{params.isHot}
</if> </if>
<if test="params.isRobot != null and params.isRobot != ''">
and is_robot = #{params.isRobot}
</if>
<if test="params.inviteCode != null and params.inviteCode != ''"> <if test="params.inviteCode != null and params.inviteCode != ''">
and invite_code = #{params.inviteCode} and invite_code = #{params.inviteCode}
</if> </if>

Loading…
Cancel
Save