Ver Fonte

修改个人会员

Alex há 4 anos atrás
pai
commit
5050529ce8

+ 44 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbAppUserController.java

@@ -2,12 +2,17 @@ package com.ruoyi.web.controller.api;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Arrays;
+import java.util.concurrent.atomic.AtomicInteger;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ruoyi.app.domain.TbAppUser;
+import com.ruoyi.app.domain.TbFamilyMember;
 import com.ruoyi.app.domain.vo.AppMemberVo;
 import com.ruoyi.app.service.ITbAppUserService;
+import com.ruoyi.app.service.ITbFamilyMemberService;
 import com.ruoyi.common.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -42,6 +47,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 public class TbAppUserController extends BaseController {
 
     private final ITbAppUserService iTbAppUserService;
+    private final ITbFamilyMemberService memberService;
 
     /**
      * 查询会员列表
@@ -112,7 +118,8 @@ public class TbAppUserController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:appUser:query')" )
     @GetMapping(value = "/{id}" )
     public AjaxResult getInfo(@PathVariable("id" ) Long id) {
-        return AjaxResult.success(iTbAppUserService.getById(id));
+
+        return AjaxResult.success(iTbAppUserService.getAppMember(id.toString()));
     }
 
     /**
@@ -136,6 +143,17 @@ public class TbAppUserController extends BaseController {
     public AjaxResult edit(@RequestBody TbAppUser tbAppUser) {
         return toAjax(iTbAppUserService.updateById(tbAppUser) ? 1 : 0);
     }
+    /**
+     * 修改会员+家族成员
+     */
+    @ApiOperation("修改会员信息")
+    @PreAuthorize("@ss.hasPermi('system:appUser:edit')" )
+    @Log(title = "会员" , businessType = BusinessType.UPDATE)
+    @PutMapping("/editAppMember")
+    public AjaxResult editAppMember(@RequestBody AppMemberVo memberVo) {
+
+        return toAjax(iTbAppUserService.saveOrUpdate(memberVo) ? 1 : 0);
+    }
 
     /**
      * 删除会员
@@ -145,6 +163,31 @@ public class TbAppUserController extends BaseController {
     @Log(title = "会员" , businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}" )
     public AjaxResult remove(@PathVariable Long[] ids) {
+        List<TbAppUser> list = iTbAppUserService.listByIds(Arrays.asList(ids));
+        if (list.size() <= 0) {
+            return AjaxResult.success("数据不存在");
+        }
+        List<Long> mIds = new ArrayList<>();
+        AtomicInteger ck = new AtomicInteger(0);
+        list.forEach(item -> {
+            if (item.getJoins().equals("Y")) {
+                ck.set(1);
+                mIds.add(item.getId());
+            }
+        });
+        if(ck.intValue() > 0) {
+            return AjaxResult.error("该会员已经加入家族,不允许删除");
+        }
+        List<TbFamilyMember> memberList = memberService.list(new LambdaQueryWrapper<TbFamilyMember>()
+            .in(TbFamilyMember::getAppUserId, Arrays.asList(ids))
+        );
+        if (memberList.size() > 0) {
+            memberList.forEach(item -> {
+                item.setAppUserId(null);
+            });
+            memberService.updateBatchById(memberList);
+        }
+
         return toAjax(iTbAppUserService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
     }
 }

+ 20 - 14
ruoyi-app/src/main/java/com/ruoyi/app/controller/AppLoginController.java

@@ -16,6 +16,8 @@ import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,10 @@ public class AppLoginController {
      */
     @PassToken
     @ApiOperation(value = "APP登录", notes = "APP登录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mobile", value = "手机号",paramType="string"),
+            @ApiImplicitParam(name = "captcha", value = "验证码",paramType="string")
+    })
     @PostMapping("/login")
     public AjaxResult login(String mobile, String captcha){
         if (StringUtils.isBlank(mobile)) {
@@ -67,18 +73,18 @@ public class AppLoginController {
             appUser.setNickName(mobile);
             appUser.setQrcode(DateUtils.getCurrentTimeRandom());
             appUser.setCreateTime(date);
-            appUser.setUpdateTime(date);
             ck = userService.save(appUser);
             if (!ck){
                 return AjaxResult.error("未知异常,登录失败");
             }
+            appUser.setCreateBy(appUser.getId());
         }
 
         //手机短信验证 // TODO 调试通过,以后测试在放开注释
-//        boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(mobile, captcha);
-//        if (!ckCaptcha) {
-//            return AjaxResult.error("验证码错误");
-//        }
+        boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(mobile, captcha);
+        if (!ckCaptcha) {
+            return AjaxResult.error("验证码错误");
+        }
 
         //每次登录前,先删除缓存,保证登录唯一性
         appTokenService.delLoginUser(mobile);
@@ -91,8 +97,8 @@ public class AppLoginController {
 
         appUser.setLoginIp(loginUser.getIpaddr());
         appUser.setLoginTime(date);
-        appUser.setCreateBy(appUser.getId());
         appUser.setUpdateBy(appUser.getId());
+        appUser.setUpdateTime(date);
         ck = userService.updateById(appUser);
         if (!ck){
             return AjaxResult.error("未知异常,登录失败");
@@ -110,6 +116,10 @@ public class AppLoginController {
      */
     @PassToken
     @ApiOperation(value = "发送短信验证码", notes = "发送短信验证码")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "type", value = "1.用户注册;2.登录确认;3.身份验证;4.登录异常;5.修改密码;6.信息变更",paramType="string"),
+            @ApiImplicitParam(name = "mobile", value = "手机号",paramType="string")
+    })
     @GetMapping("/captchaSend")
     public AjaxResult sendCaptcha(Integer type, String mobile){
         if(StringUtils.isBlank(mobile)){
@@ -131,6 +141,10 @@ public class AppLoginController {
     @PassToken
     @ApiOperation(value = "校验短信验证码", notes = "校验短信验证码")
     @GetMapping("/captchaValidate")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mobile", value = "手机号",paramType="string"),
+            @ApiImplicitParam(name = "captcha", value = "验证码",paramType="string")
+    })
     public AjaxResult validateCaptcha(String mobile, String captcha){
         if (StringUtils.isBlank(mobile)) {
             return AjaxResult.error("手机号不能为空");
@@ -146,14 +160,6 @@ public class AppLoginController {
         return AjaxResult.success("验证成功");
     }
 
-
-//    @ApiOperation(value = "getUser", notes = "getUser")
-//    @GetMapping("/getLoginUser")
-//    public AjaxResult getLoginUser(HttpServletRequest request){
-//        AppLoginUser user = appTokenService.getLoginUser(request);
-//        return AjaxResult.success(user);
-//    }
-
     public static void main(String[] args) {
 //        System.out.println(DateUtils.getCurrentTimeRandom());
 

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/app/domain/TbAppUser.java

@@ -1,5 +1,6 @@
 package com.ruoyi.app.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -73,18 +74,21 @@ public class TbAppUser implements Serializable {
     private String deleted;
 
     private String loginIp;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date loginTime;
 
     /** 创建者 */
     private Long createBy;
 
     /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */
     private Long updateBy;
 
     /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/app/domain/TbFamily.java

@@ -60,12 +60,14 @@ public class TbFamily implements Serializable {
     private Long createBy;
 
     /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */
     private Long updateBy;
 
     /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */

+ 5 - 3
ruoyi-system/src/main/java/com/ruoyi/app/domain/TbFamilyMember.java

@@ -1,5 +1,6 @@
 package com.ruoyi.app.domain;
 
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -7,9 +8,7 @@ import lombok.NoArgsConstructor;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 import com.ruoyi.common.annotation.Excel;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.math.BigDecimal;
@@ -38,6 +37,7 @@ public class TbFamilyMember implements Serializable {
 
     /** 会员id */
     @Excel(name = "会员id")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long appUserId;
 
     /** 家族id */
@@ -81,12 +81,14 @@ public class TbFamilyMember implements Serializable {
     private Long createBy;
 
     /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 更新者 */
     private Long updateBy;
 
     /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /** 备注 */

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/app/domain/vo/AppMemberVo.java

@@ -62,6 +62,7 @@ public class AppMemberVo extends BaseEntity implements Serializable {
     @Excel(name = "verCode")
     private String verCode;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value="最后登录时间")
     private Date loginTime;
 
@@ -129,14 +130,18 @@ public class AppMemberVo extends BaseEntity implements Serializable {
 
 
     private Long memberCreateBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date memberCreateTime;
     private Long memberUpdateBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date memberUpdateTime;
     private String memberRemark;
 
     private Long userCreateBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date userCreateTime;
     private Long userUpdateBy;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date userUpdateTime;
     private String userRemark;
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/app/mapper/TbAppUserMapper.java

@@ -29,4 +29,6 @@ public interface TbAppUserMapper extends BaseMapper<TbAppUser> {
                                        @Param("search") String search,
                                        @Param("beginTime") String beginTime,
                                        @Param("endTime") String endTime);
+
+    AppMemberVo getAppMember(@Param("type") String type, @Param("id") String id);
 }

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/app/service/ITbAppUserService.java

@@ -16,4 +16,8 @@ import java.util.List;
 public interface ITbAppUserService extends IService<TbAppUser> {
 
     List<AppMemberVo> selectAppMembers(String enable, String search, String beginTime, String endTime);
+
+    boolean saveOrUpdate(AppMemberVo memberVo);
+
+    AppMemberVo getAppMember(String id);
 }

+ 62 - 0
ruoyi-system/src/main/java/com/ruoyi/app/service/impl/TbAppUserServiceImpl.java

@@ -1,12 +1,19 @@
 package com.ruoyi.app.service.impl;
 
 import com.ruoyi.app.domain.TbAppUser;
+import com.ruoyi.app.domain.TbFamilyMember;
 import com.ruoyi.app.domain.vo.AppMemberVo;
 import com.ruoyi.app.mapper.TbAppUserMapper;
 import com.ruoyi.app.service.ITbAppUserService;
+import com.ruoyi.app.service.ITbFamilyMemberService;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,8 +23,14 @@ import java.util.List;
  * @date 2020-09-24
  */
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class TbAppUserServiceImpl extends ServiceImpl<TbAppUserMapper, TbAppUser> implements ITbAppUserService {
 
+    @Autowired
+    private ITbFamilyMemberService memberService;
+    @Autowired
+    private ITbAppUserService userService;
+
     /**
      * 获取所有未删除状态的会员信息列表
      * @return
@@ -26,4 +39,53 @@ public class TbAppUserServiceImpl extends ServiceImpl<TbAppUserMapper, TbAppUser
     public List<AppMemberVo> selectAppMembers(String enable, String search, String beginTime, String endTime){
         return baseMapper.selectAppMembers("user",enable, search, beginTime, endTime);
     }
+
+    /**
+     * 添加/修改会员
+     * @param memberVo
+     * @return
+     */
+    @Override
+    public boolean saveOrUpdate(AppMemberVo memberVo){
+        if (memberVo == null) {
+            return false;
+        }
+        TbAppUser appUser = new TbAppUser();
+        TbFamilyMember member = new TbFamilyMember();
+        Date date = new Date();
+
+        BeanUtils.copyBeanProp(appUser,memberVo);
+        BeanUtils.copyBeanProp(member,memberVo);
+        appUser.setUpdateBy(memberVo.getUserUpdateBy());
+        appUser.setUpdateTime(date);
+        appUser.setRemark(memberVo.getUserRemark());
+        member.setUpdateBy(memberVo.getUserUpdateBy());
+        member.setUpdateTime(date);
+        //新增用户
+        if (memberVo.getUserId() == null) {
+            appUser.setQrcode(DateUtils.getCurrentTimeRandom());
+            appUser.setCreateBy(memberVo.getUserCreateBy());
+            appUser.setCreateTime(date);
+            userService.save(appUser);
+        }else {// 否则修改用户
+            appUser.setId(memberVo.getUserId());
+            userService.updateById(appUser);
+        }
+        // 新增成员
+        if (memberVo.getMemberId() == null) {
+            member.setAppUserId(appUser.getId());
+            member.setCreateBy(memberVo.getUserCreateBy());
+            member.setCreateTime(date);
+            memberService.save(member);
+        } else { // 否则修改成员
+            member.setId(memberVo.getMemberId());
+            memberService.updateById(member);
+        }
+        return true;
+    }
+
+    @Override
+    public AppMemberVo getAppMember(String id) {
+        return baseMapper.getAppMember("user", id);
+    }
 }

+ 21 - 2
ruoyi-system/src/main/resources/mapper/app/TbAppUserMapper.xml

@@ -24,8 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="remark"    column="remark"    />
     </resultMap>
-
-    <select id="selectAppMembers" resultType="com.ruoyi.app.domain.vo.AppMemberVo" parameterType="String">
+    
+    <sql id="sqlAppMember">
         select a.id user_id,a.joins,a.template_id,a.nick_name,a.avatar,a.qrcode,a.mobile,a.openid,a.ver_code,a.deleted,a.enable,a.login_time,a.login_ip,
         a.create_by user_create_by,a.create_time user_create_time, a.update_by user_update_by, a.update_time user_update_time, a.remark user_remark,
 
@@ -39,6 +39,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             right join
         </if>
         tb_family_member b on a.id = b.app_user_id
+    </sql>
+
+    <select id="selectAppMembers" resultType="com.ruoyi.app.domain.vo.AppMemberVo" parameterType="String">
+        <include refid="sqlAppMember"></include>
         <where>
             deleted = 0
             <if test="enable != null and enable != '' ">
@@ -68,4 +72,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
+    <select id="getAppMember" parameterType="String" resultType="com.ruoyi.app.domain.vo.AppMemberVo">
+        <include refid="sqlAppMember"></include>
+        <where>
+            <if test="type == 'user' ">
+                <if test="id != null and id != '' ">
+                    AND a.id = #{id}
+                </if>
+            </if>
+            <if test="type == 'member' ">
+                <if test="id != null and id != '' ">
+                    AND b.id = #{id}
+                </if>
+            </if>
+        </where>
+    </select>
 </mapper>