Commit 61fb179d authored by hanfeng's avatar hanfeng

Merge remote-tracking branch 'origin/dev' into dev

parents 9db65735 389e6e31
...@@ -20,7 +20,9 @@ public class UserBo implements Serializable { ...@@ -20,7 +20,9 @@ public class UserBo implements Serializable {
private String phone; private String phone;
private String name; private String name;
private String leaderName; private String leaderName;
private Integer leaderId;
private String leaderPhone; private String leaderPhone;
private Integer facilitateId; private Integer facilitateId;
private String facilitateName; private String facilitateName;
private String companyName;
} }
...@@ -3,7 +3,6 @@ package com.github.wxiaoqi.security.admin.entity; ...@@ -3,7 +3,6 @@ package com.github.wxiaoqi.security.admin.entity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import tk.mybatis.mapper.annotation.KeySql; import tk.mybatis.mapper.annotation.KeySql;
import tk.mybatis.mapper.code.IdentityDialect; import tk.mybatis.mapper.code.IdentityDialect;
...@@ -11,6 +10,7 @@ import javax.persistence.Column; ...@@ -11,6 +10,7 @@ import javax.persistence.Column;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import java.util.Date; import java.util.Date;
import java.util.Objects;
/** /**
* @author Administrator * @author Administrator
...@@ -49,4 +49,17 @@ public class AppStaffUser { ...@@ -49,4 +49,17 @@ public class AppStaffUser {
@ApiModelProperty("状态:0-未删除 1-已删除") @ApiModelProperty("状态:0-未删除 1-已删除")
private Integer isDel; private Integer isDel;
private Integer status; private Integer status;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof AppStaffUser)) return false;
AppStaffUser that = (AppStaffUser) o;
return Objects.equals(phone, that.phone);
}
@Override
public int hashCode() {
return Objects.hash(phone);
}
} }
...@@ -8,7 +8,6 @@ import com.github.wxiaoqi.security.admin.entity.ModifiedUsers; ...@@ -8,7 +8,6 @@ import com.github.wxiaoqi.security.admin.entity.ModifiedUsers;
import com.github.wxiaoqi.security.admin.mapper.AppStaffUserMapper; import com.github.wxiaoqi.security.admin.mapper.AppStaffUserMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.im.utils.StringUtil; import com.xxfc.platform.im.utils.StringUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -143,4 +142,12 @@ public class AppStaffUserBiz extends BaseBiz<AppStaffUserMapper, AppStaffUser> { ...@@ -143,4 +142,12 @@ public class AppStaffUserBiz extends BaseBiz<AppStaffUserMapper, AppStaffUser> {
} }
} }
public void insertBatch(List<AppStaffUser> appStaffUsers){
mapper.insertList(appStaffUsers);
}
public void saveStaffUser(AppStaffUser appStaffUser) {
mapper.saveStaffUser(appStaffUser);
}
} }
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo; import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.AccountBindDTO; import com.github.wxiaoqi.security.admin.dto.AccountBindDTO;
import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO; import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO;
...@@ -12,7 +13,6 @@ import com.github.wxiaoqi.security.admin.vo.AppUserInfoVo; ...@@ -12,7 +13,6 @@ import com.github.wxiaoqi.security.admin.vo.AppUserInfoVo;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.im.utils.BeanUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -207,4 +207,9 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -207,4 +207,9 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
return mapper.getUser(userId); return mapper.getUser(userId);
} }
public List<UserBo> findUserBosByPhones(List<String> phones) {
List<UserBo> userBoList = mapper.findUserBosByPhones(phones);
return CollectionUtils.isEmpty(userBoList)?Collections.emptyList():userBoList;
}
} }
...@@ -2,12 +2,15 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,12 +2,15 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.bo.InviteMemberBO;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.dto.UserRelationDTO; import com.github.wxiaoqi.security.admin.dto.UserRelationDTO;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.mapper.AppUserRelationMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.bo.InviteMemberBO;
import com.github.wxiaoqi.security.admin.vo.InviteMemberVo; import com.github.wxiaoqi.security.admin.vo.InviteMemberVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
...@@ -20,8 +23,11 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -20,8 +23,11 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.mapper.AppUserRelationMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserRelationMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -60,6 +66,47 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe ...@@ -60,6 +66,47 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe
@Autowired @Autowired
private AppStaffUserBiz staffUserBiz; private AppStaffUserBiz staffUserBiz;
private static final HashMap<Integer, Boolean> map = new HashMap<>();
private static final HashMap<Integer, Boolean> parentMap = new HashMap<>();
private static final Object obj = new Object();
private static final Object parentObj = new Object();
private boolean lock(Integer userId) {
synchronized (obj) {
if (map.get(userId) == null) {
map.put(userId, true);
return true;
}
}
return false;
}
private boolean parentLock(Integer userId) {
log.info("---进锁前---parentId===="+userId);
synchronized (parentObj) {
log.info("---进锁---parentId===="+userId);
if (parentMap.get(userId) == null) {
log.info("---进锁处理---parentId===="+userId);
parentMap.put(userId, true);
return true;
}
}
return false;
}
private void unParentLock(Integer userId) {
log.info("---解锁处理---parentId===="+userId);
synchronized (parentObj) {
parentMap.remove(userId);
}
}
private void unLock(Integer userId) {
synchronized (obj) {
map.remove(userId);
}
}
/** /**
* 关系绑定 * 关系绑定
* 规则A->B (B无有效上线+无有效下线) * 规则A->B (B无有效上线+无有效下线)
...@@ -67,6 +114,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe ...@@ -67,6 +114,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe
* @param userId * @param userId
* @param parentId * @param parentId
*/ */
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void bindRelation(Integer userId,Integer parentId,Integer type){ public void bindRelation(Integer userId,Integer parentId,Integer type){
try { try {
if (userId.equals(parentId)){ if (userId.equals(parentId)){
...@@ -247,9 +295,15 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe ...@@ -247,9 +295,15 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe
*/ */
@Cache(key = "user:relation{1}") @Cache(key = "user:relation{1}")
public AppUserRelation getRelationByUserId(Integer userId) { public AppUserRelation getRelationByUserId(Integer userId) {
AppUserRelation relation = new AppUserRelation(); /* AppUserRelation relation = new AppUserRelation();
relation.setUserId(userId); relation.setUserId(userId);*/
return selectOne(relation); Example example=new Example(AppUserRelation.class);
example.createCriteria().andEqualTo("userId",userId);
List<AppUserRelation> list=selectByExample(example);
if (list.size()>0){
return list.get(0);
}
return null;
} }
//获取有效的上线 //获取有效的上线
...@@ -405,5 +459,14 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe ...@@ -405,5 +459,14 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper, AppUserRe
} }
} }
public List<UserBo> findAllRelations(){
List<UserBo> userBoList = mapper.findAllRelations();
return CollectionUtils.isEmpty(userBoList)?Collections.emptyList():userBoList;
}
public void updateParentIdByUserId(Integer leaderId, Integer userId) {
mapper.updateParentIdByUserId(leaderId,userId, Instant.now().toEpochMilli());
}
} }
...@@ -3,19 +3,19 @@ package com.github.wxiaoqi.security.admin.mapper; ...@@ -3,19 +3,19 @@ package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppStaffUser; import com.github.wxiaoqi.security.admin.entity.AppStaffUser;
import com.github.wxiaoqi.security.admin.entity.ModifiedUsers; import com.github.wxiaoqi.security.admin.entity.ModifiedUsers;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import tk.mybatis.mapper.additional.insert.InsertListMapper;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import javax.persistence.Id;
import java.util.List; import java.util.List;
/** /**
* @author Administrator * @author Administrator
*/ */
public interface AppStaffUserMapper extends Mapper<AppStaffUser> { public interface AppStaffUserMapper extends Mapper<AppStaffUser>, InsertListMapper<AppStaffUser> {
List<AppStaffUser> selectByBysuIdOrUsername(@Param("id") Integer id,@Param("username") String username); List<AppStaffUser> selectByBysuIdOrUsername(@Param("id") Integer id,@Param("username") String username);
void updateByPositionId(ModifiedUsers modifiedUsers); void updateByPositionId(ModifiedUsers modifiedUsers);
void update(ModifiedUsers modifiedUsers); void update(ModifiedUsers modifiedUsers);
void saveStaffUser(AppStaffUser appStaffUser);
} }
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo; import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO; import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO; import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO;
...@@ -35,4 +36,6 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> { ...@@ -35,4 +36,6 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
List<UserStaffBo> findAllStaffsByCompanyIdAndPostionId(StaffStatisticsFindDTO staffStatisticsFindDTO); List<UserStaffBo> findAllStaffsByCompanyIdAndPostionId(StaffStatisticsFindDTO staffStatisticsFindDTO);
AppUserVo getUser(Integer userId); AppUserVo getUser(Integer userId);
List<UserBo> findUserBosByPhones(@Param("phones") List<String> phones);
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation; import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 用户关系表 * 用户关系表
...@@ -25,4 +25,8 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> { ...@@ -25,4 +25,8 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> {
List<AppUserRelation> selectByUserIds(@Param("userIds") List<Integer> userIds); List<AppUserRelation> selectByUserIds(@Param("userIds") List<Integer> userIds);
List<AppUserRelation> selectCountByLeaderId(Integer userId); List<AppUserRelation> selectCountByLeaderId(Integer userId);
List<UserBo> findAllRelations();
void updateParentIdByUserId(@Param("leaderId") Integer leaderId,@Param("userId") Integer userId,@Param("updTime") Long updTime);
} }
...@@ -44,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -44,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
...@@ -261,14 +262,14 @@ public class AppPermissionService { ...@@ -261,14 +262,14 @@ public class AppPermissionService {
} }
} }
} }
String redisLockKey = RedisKey.CONSTANT_CODE_PREFIX + username + mobilecode; /*String redisLockKey = RedisKey.CONSTANT_CODE_PREFIX + username + mobilecode;
String mobilecodeRedis = userRedisTemplate.opsForValue().get(redisLockKey) == null ? "" : userRedisTemplate.opsForValue().get(redisLockKey).toString(); String mobilecodeRedis = userRedisTemplate.opsForValue().get(redisLockKey) == null ? "" : userRedisTemplate.opsForValue().get(redisLockKey).toString();
log.info("注册接口,获取redis中的验证码:" + mobilecodeRedis+"---time===="+System.currentTimeMillis()/1000L); log.info("注册接口,获取redis中的验证码:" + mobilecodeRedis+"---time===="+System.currentTimeMillis()/1000L);
// 获取到缓存的验证码后要先清空缓存对应键的值 // 获取到缓存的验证码后要先清空缓存对应键的值
userRedisTemplate.delete(redisLockKey); userRedisTemplate.delete(redisLockKey);
if (StringUtils.isBlank(mobilecodeRedis)) { if (StringUtils.isBlank(mobilecodeRedis)) {
return JsonResultUtil.createFailedResult(ResultCode.NOTEXIST_CODE, "验证码错误"); return JsonResultUtil.createFailedResult(ResultCode.NOTEXIST_CODE, "验证码错误");
} }*/
// 是否已存在 // 是否已存在
AppUserLogin user = appUserLoginBiz.checkeUserLogin(username); AppUserLogin user = appUserLoginBiz.checkeUserLogin(username);
if (null != user) { if (null != user) {
...@@ -323,6 +324,7 @@ public class AppPermissionService { ...@@ -323,6 +324,7 @@ public class AppPermissionService {
parentId=appUserDetailBiz.getUserByCode(code); parentId=appUserDetailBiz.getUserByCode(code);
} }
if(parentId!=null&&parentId>0){ if(parentId!=null&&parentId>0){
rsUserDetail.setSource(1);
relationBiz.bindRelation(userid, parentId, 1); relationBiz.bindRelation(userid, parentId, 1);
if(StringUtils.isNotBlank(activityCode)){ if(StringUtils.isNotBlank(activityCode)){
rsUserDetail.setInviterAccount(parentId); rsUserDetail.setInviterAccount(parentId);
...@@ -390,6 +392,52 @@ public class AppPermissionService { ...@@ -390,6 +392,52 @@ public class AppPermissionService {
} }
} }
public void test(){
Example example=new Example(AppUserLogin.class);
example.createCriteria().andEqualTo("imUserid",0);
List<AppUserLogin> list=appUserLoginBiz.selectByExample(example);
for (AppUserLogin userLogin:list) {
Long now = System.currentTimeMillis() / 1000;
Integer userId = userLogin.getId();
String username = userLogin.getUsername();
String ip = getIp();
String nickname = SystemConfig.USER_NIKENAME_DEFAULT + (int) ((Math.random() * 9 + 1) * 100000);
AppUserDetail rsUserDetail = new AppUserDetail();
rsUserDetail.setUserid(userId);
rsUserDetail = appUserDetailBiz.selectOne(rsUserDetail);
if (rsUserDetail == null) {
rsUserDetail.setUserid(userId);
rsUserDetail.setNickname(nickname);
rsUserDetail.setHeadimgurl(SystemConfig.USER_HEADER_URL_DEFAULT); // 默认路径,待写
rsUserDetail.setCreatetime(now);
rsUserDetail.setUpdatetime(now);
rsUserDetail.setIsdel(0);
rsUserDetail.setCrtHost(ip);
//生成邀请码 长度改为8 不然重复率太高
rsUserDetail.setCode(ReferralCodeUtil.encode(userId));
appUserDetailBiz.insertSelective(rsUserDetail);
} else {
nickname=rsUserDetail.getNickname();
}
Map<String, Object> map = registerIm(userLogin.getUsername(), userLogin.getPassword(), nickname);
if (map != null) {
Integer imUserId = Integer.parseInt(map.get("userId").toString());
String imPassword = map.get("password").toString();
if (imUserId != null && imUserId > 0 && StringUtils.isNotBlank(imPassword)) {
AppUserLogin userLogin1 = new AppUserLogin();
userLogin1.setId(userId);
userLogin1.setImPassword(imPassword);
userLogin1.setImUserid(imUserId);
userLogin1.setUsername(username);
appUserLoginBiz.updateSelectiveById(userLogin1);
log.info(username + "----userLogin updateSelectiveById---username=====" + username + "----imPassword====" + imPassword);
}
}
}
}
private void sendQueue(String username, String password, String headimgurl, String nickname, String mobilecode, String openId, String unionid, Integer type, String code, String activityCode, Integer userid,Integer sign) { private void sendQueue(String username, String password, String headimgurl, String nickname, String mobilecode, String openId, String unionid, Integer type, String code, String activityCode, Integer userid,Integer sign) {
try { try {
RegisterQueueDTO registerQueueDTO = new RegisterQueueDTO(); RegisterQueueDTO registerQueueDTO = new RegisterQueueDTO();
......
...@@ -50,4 +50,10 @@ ...@@ -50,4 +50,10 @@
<update id="update" parameterType="com.github.wxiaoqi.security.admin.entity.ModifiedUsers"> <update id="update" parameterType="com.github.wxiaoqi.security.admin.entity.ModifiedUsers">
update app_staff_user set u_name=#{name}, phone= #{phone} where u_id=#{userid} update app_staff_user set u_name=#{name}, phone= #{phone} where u_id=#{userid}
</update> </update>
<select id="saveStaffUser">
INSERT IGNORE INTO `app_staff_user`(`su_phone`,`su_id`,`u_name`,`phone`,`company`,`remarks`,`crt_time`,`is_del`,`status`)VALUES(
#{suPhone},#{suId},#{uName},#{phone},#{company},#{remarks},#{crtTime},#{isDel},#{status}
)
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -328,4 +328,14 @@ from `app_user_detail` as `aud` left join `app_user_login` as `aul` on aul.id= ...@@ -328,4 +328,14 @@ from `app_user_detail` as `aud` left join `app_user_login` as `aul` on aul.id=
on d.userid = l.id on d.userid = l.id
where l.id = #{userId} limit 1 where l.id = #{userId} limit 1
</select> </select>
<select id="findUserBosByPhones" resultType="com.github.wxiaoqi.security.admin.bo.UserBo">
select aul.id as `userId`,aul.username as `phone`,IFNULL(aud.realname,aud.nickname) as `name` from (select `id`,`username` from `app_user_login`
<if test="phones!=null and phones.size()>0">
where username in
<foreach collection="phones" item="phone" open="(" close=")" separator=",">
#{phone}
</foreach>
</if>) as aul inner join `app_user_detail` as aud on aud.userid=aul.id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -25,4 +25,20 @@ ...@@ -25,4 +25,20 @@
<select id="selectCountByLeaderId" resultType="com.github.wxiaoqi.security.admin.entity.AppUserRelation"> <select id="selectCountByLeaderId" resultType="com.github.wxiaoqi.security.admin.entity.AppUserRelation">
select * from `app_user_relation` as `aur` inner join `app_user_login` as `aul` on aul.id=aur.user_id where aur.is_del=0 and aul.isdel=0 and aur.parent_id=#{userId} select * from `app_user_relation` as `aur` inner join `app_user_login` as `aul` on aul.id=aur.user_id where aur.is_del=0 and aul.isdel=0 and aur.parent_id=#{userId}
</select> </select>
<select id="findAllRelations" resultType="com.github.wxiaoqi.security.admin.bo.UserBo">
select aur.parent_id as `leaderId`,aulp.username as `leaderPhone`,aulc.id as `userId`,aulc.username as `phone`,
IFNULL(audp.realname,audp.nickname) as `leaderName`,IFNULL(audc.realname,audc.nickname) as `name`,aupt.company_name as `companyName`
from `app_user_relation` as aur
left join `app_user_login` as aulp on aulp.id = aur.parent_id
inner join `app_user_login` as aulc on aulc.id=aur.user_id
left join `app_user_detail` as audp on audp.userid= aulp.id
inner join `app_user_detail` as `audc` on audc.userid= aulc.id
left join `app_user_position_temp` as `aupt` on aupt.user_id = aulc.id
where aur.is_del=0 and aulc.isdel=0
</select>
<select id="updateParentIdByUserId">
update `app_user_relation` set `parent_id`=#{leaderId},`upd_time`=#{updTime} where user_id=#{userId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -86,11 +86,14 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act ...@@ -86,11 +86,14 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act
}}); }});
log.info("活动邀请注册:activityPopularize = {}", activityPopularize.toString()); log.info("活动邀请注册:activityPopularize = {}", activityPopularize.toString());
if (activityPopularize != null) { if (activityPopularize != null) {
String lockKey = String.format("%s%d:%s:%d",registerQueueDTO.getInParamDTO().getActivityCode(), registerQueueDTO.getAppUserId(), registerQueueDTO.getInParamDTO().getUsername(), activityPopularize.getId()); String lockKey = String.format("%s%d%d", registerQueueDTO.getInParamDTO().getActivityCode(), appUserDTO.getInviterAccount(), activityPopularize.getId());
RLock rLock = redissonLock.getRLock(lockKey); RLock rLock = redissonLock.getRLock(lockKey);
try { try {
boolean isSuccess = rLock.tryLock(5, 5, TimeUnit.SECONDS); boolean isSuccess = rLock.tryLock(5, 5, TimeUnit.SECONDS);
if (isSuccess) { if (isSuccess) {
log.info("1, {}", System.currentTimeMillis());
Thread.sleep(1000);
log.info("2, {}", System.currentTimeMillis());
List<ActivityPopularizeItem> activityPopularizeItems = activityPopularizeItemBiz.selectByPopularizeId(activityPopularize.getId()); List<ActivityPopularizeItem> activityPopularizeItems = activityPopularizeItemBiz.selectByPopularizeId(activityPopularize.getId());
ActivityPopularizeItem activityPopularizeItem = activityPopularizeItems.get(activityPopularizeItems.size() - 1); ActivityPopularizeItem activityPopularizeItem = activityPopularizeItems.get(activityPopularizeItems.size() - 1);
Date now = DateUtil.date(); Date now = DateUtil.date();
...@@ -196,6 +199,8 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act ...@@ -196,6 +199,8 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("tryLock fail, key = [{}]", lockKey); log.error("tryLock fail, key = [{}]", lockKey);
} finally {
log.info("执行结束, {}", System.currentTimeMillis());
} }
} }
} }
......
...@@ -6,7 +6,6 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; ...@@ -6,7 +6,6 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
......
package com.xxfc.platform.order.contant.enumerate; package com.xxfc.platform.order.contant.enumerate;
import cn.hutool.core.date.DateUtil;
import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase; import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -29,6 +30,7 @@ public enum ReceivedStatisticsEnum { ...@@ -29,6 +30,7 @@ public enum ReceivedStatisticsEnum {
} }
return orderReceivedStatisticsBases.stream().peek(x -> { return orderReceivedStatisticsBases.stream().peek(x -> {
((OrderReceivedStatisticsBase) x).setDivisor(1); ((OrderReceivedStatisticsBase) x).setDivisor(1);
((OrderReceivedStatisticsBase) x).setDateStr(DateUtil.format(((OrderReceivedStatisticsBase) x).getDate(),"yyyy-MM-dd"));
}).collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getDate, Collectors.toList())); }).collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getDate, Collectors.toList()));
} }
}, },
...@@ -106,6 +108,7 @@ public enum ReceivedStatisticsEnum { ...@@ -106,6 +108,7 @@ public enum ReceivedStatisticsEnum {
.weekOfYear(orderReceivedStatisticsBase.getWeekOfYear()) .weekOfYear(orderReceivedStatisticsBase.getWeekOfYear())
.year(orderReceivedStatisticsBase.getYear()) .year(orderReceivedStatisticsBase.getYear())
.orderNum(quantity) .orderNum(quantity)
.dateStr(orderReceivedStatisticsBase.getDateStr())
.orderAmount(amount) .orderAmount(amount)
.build(); .build();
} }
......
...@@ -118,4 +118,7 @@ public class OrderReceivedStatisticsBase implements Serializable { ...@@ -118,4 +118,7 @@ public class OrderReceivedStatisticsBase implements Serializable {
@Transient @Transient
private String stateGroup; private String stateGroup;
@Transient
private String dateStr;
} }
...@@ -23,6 +23,7 @@ public class OrderReceivedStatisticsVo { ...@@ -23,6 +23,7 @@ public class OrderReceivedStatisticsVo {
private String year; private String year;
@ApiModelProperty("日期-->日统计方式") @ApiModelProperty("日期-->日统计方式")
private Date date; private Date date;
private String dateStr;
@ApiModelProperty("第几周---->周统计方式") @ApiModelProperty("第几周---->周统计方式")
private String weekOfYear; private String weekOfYear;
@ApiModelProperty("月统计") @ApiModelProperty("月统计")
......
...@@ -31,7 +31,6 @@ import java.time.LocalDate; ...@@ -31,7 +31,6 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<select id="selectOrderMemberReceivedStatisticsGroupByDate" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics"> <select id="selectOrderMemberReceivedStatisticsGroupByDate" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics">
select `date`,`year`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount`, select `date`,`year`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount`,
IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0), IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0) as `totalGoldQuantity`,
IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1 IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1
<if test="orderState!=null"> <if test="orderState!=null">
and `has_pay`=#{orderState} and `has_pay`=#{orderState}
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<select id="selectOrderMemberReceivedStatisticsGroupByMonth" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics"> <select id="selectOrderMemberReceivedStatisticsGroupByMonth" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics">
select `year`,`month`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount`, select `year`,`month`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount`,
IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0), IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0) as `totalGoldQuantity`,
IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1 IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1
<if test="orderState!=null"> <if test="orderState!=null">
and `has_pay`=#{orderState} and `has_pay`=#{orderState}
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<select id="selectOrderMemberReceivedStatisticsGroupByWeekOfYear" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics"> <select id="selectOrderMemberReceivedStatisticsGroupByWeekOfYear" resultType="com.xxfc.platform.order.entity.OrderMemberReceivedStatistics">
select `year`,`week_of_year`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount` select `year`,`week_of_year`,IFNULL(sum(`total_amount`),0) as `totalAmount`,IFNULL(sum(`total_quantity`),0) as `totalQuantity`,IFNULL(sum(`toal_common_ammount`),0) as `toalCommonAmmount`
,IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0), ,IFNULL(sum(`total_common_quantity`),0) as `totalCommonQuantity`,IFNULL(sum(`total_gold_amount`),0) as `totalGoldAmount`,IFNULL(sum(`total_gold_quantity`),0) as `totalGoldQuantity`,
IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1 IFNULL(sum(`total_diamond_ammount`),0) as `totalDiamondAmmount`,IFNULL(sum(`total_diamond_quantity`),0) as `totalDiamondQuantity` from `order_member_received_statistics` where 1=1
<if test="orderState!=null"> <if test="orderState!=null">
and `has_pay`=#{orderState} and `has_pay`=#{orderState}
......
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.xxfc.platform.order.OrderApplication; import com.xxfc.platform.order.OrderApplication;
import com.xxfc.platform.order.biz.*; import com.xxfc.platform.order.biz.*;
...@@ -129,8 +128,8 @@ public class ServiceTest { ...@@ -129,8 +128,8 @@ public class ServiceTest {
cn.hutool.core.date.DateTime dateTime = DateUtil.parse("2019-11-29", "yyyy-MM-dd"); cn.hutool.core.date.DateTime dateTime = DateUtil.parse("2019-11-29", "yyyy-MM-dd");
// cn.hutool.core.date.DateTime offset = DateUtil.offset(dateTime, DateField.DAY_OF_MONTH, 1); // cn.hutool.core.date.DateTime offset = DateUtil.offset(dateTime, DateField.DAY_OF_MONTH, 1);
/* orderReceivedStatisticsJobHandler.execute("2019-11-29");*/ /* orderReceivedStatisticsJobHandler.execute("2019-11-29");*/
LocalDate startLocalDate = LocalDate.of(2019, 10, 1); LocalDate startLocalDate = LocalDate.of(2019, 11, 30);
LocalDate endLocalDate = LocalDate.of(2019,11,30); LocalDate endLocalDate = LocalDate.of(2019,12,19);
while (startLocalDate.isBefore(endLocalDate)){ while (startLocalDate.isBefore(endLocalDate)){
String dateStr = startLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String dateStr = startLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
startLocalDate = startLocalDate.plusDays(1); startLocalDate = startLocalDate.plusDays(1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment