Browse Source

企业修改

licailing 5 năm trước cách đây
mục cha
commit
6037231889

+ 6 - 0
src/main/java/com/izouma/jiashanxia/domain/UserPackage.java

@@ -1,5 +1,6 @@
 package com.izouma.jiashanxia.domain;
 
+import com.izouma.jiashanxia.enums.PackageType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -9,6 +10,8 @@ import lombok.NoArgsConstructor;
 import org.hibernate.annotations.Where;
 
 import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
 
 @Data
 @AllArgsConstructor
@@ -28,4 +31,7 @@ public class UserPackage extends BaseEntity {
 
     private String remark;
 
+    @Enumerated(EnumType.STRING)
+    @ApiModelProperty(value = "套餐类型")
+    private PackageType type;
 }

+ 8 - 0
src/main/java/com/izouma/jiashanxia/repo/UserPackageRepo.java

@@ -2,6 +2,7 @@ package com.izouma.jiashanxia.repo;
 
 import com.izouma.jiashanxia.domain.UserPackage;
 import com.izouma.jiashanxia.dto.UserPackageDTO;
+import com.izouma.jiashanxia.enums.PackageType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -18,6 +19,13 @@ public interface UserPackageRepo extends JpaRepository<UserPackage, Long>, JpaSp
 
     List<UserPackage> findAllByUserId(Long userId);
 
+    List<UserPackage> findAllByUserIdAndType(Long userId, PackageType type);
+
+    @Query("update UserPackage t set t.userId = ?2 where t.userId = ?1 and t.type = 'TEAM'")
+    @Modifying
+    @Transactional
+    void updateUserId(Long oldUserId,Long newUserId);
+
     @Query(value = "select goods_info.*, ifnull(user_package.num, 0) as num " +
             "from goods_info " +
             "left join user_package on goods_info.id = user_package.goods_info_id and user_package.user_id = ?1 " +

+ 18 - 14
src/main/java/com/izouma/jiashanxia/service/CompanyService.java

@@ -7,6 +7,7 @@ import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.enums.AuthorityName;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.CompanyRepo;
+import com.izouma.jiashanxia.repo.UserPackageRepo;
 import com.izouma.jiashanxia.repo.UserRepo;
 import com.izouma.jiashanxia.security.Authority;
 import com.izouma.jiashanxia.utils.JpaUtils;
@@ -25,8 +26,9 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class CompanyService {
 
-    private CompanyRepo companyRepo;
-    private UserRepo    userRepo;
+    private CompanyRepo     companyRepo;
+    private UserRepo        userRepo;
+    private UserPackageRepo userPackageRepo;
 
     public Page<Company> all(PageQuery pageQuery, User user) {
         pageQuery.setSort("createdAt,desc");
@@ -91,18 +93,6 @@ public class CompanyService {
         // 修改
         if (record.getId() != null) {
             Company orig = companyRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            // 更换团队管理人
-            if (!record.getUserId().equals(orig.getUserId())) {
-                userRepo.findById(orig.getUserId()).ifPresent(user1 -> {
-                    user1.setTeamFounder(false);
-                    Set<Authority> authorities1 = user1.getAuthorities();
-                    authorities1.remove(creator);
-                    userRepo.save(user1);
-                });
-                // 新团队管理人增加权限
-                this.teamFounder(record.getUserId(), creator, record.getId());
-            }
-            ObjUtils.merge(orig, record);
             // 现在的员工列表
             List<Long> employee = record.getEmployee();
             // 原来的员工列表
@@ -123,6 +113,20 @@ public class CompanyService {
             if (ObjectUtil.isNotEmpty(employee)) {
                 this.batchEmployee(employee, record.getId());
             }
+            // 更换团队管理人
+            if (!record.getUserId().equals(orig.getUserId())) {
+                userRepo.findById(orig.getUserId()).ifPresent(user1 -> {
+                    user1.setTeamFounder(false);
+                    Set<Authority> authorities1 = user1.getAuthorities();
+                    authorities1.remove(creator);
+                    userRepo.save(user1);
+                });
+                // 新团队管理人增加权限
+                this.teamFounder(record.getUserId(), creator, record.getId());
+                // 套餐转到新管理员上
+                userPackageRepo.updateUserId(orig.getUserId(), record.getUserId());
+            }
+            ObjUtils.merge(orig, record);
             return companyRepo.save(orig);
         }
 

+ 2 - 1
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -10,6 +10,7 @@ import com.izouma.jiashanxia.dto.OrderInfoVO;
 import com.izouma.jiashanxia.dto.PackageGoodsDTO;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.enums.OrderInfoStatus;
+import com.izouma.jiashanxia.enums.PackageType;
 import com.izouma.jiashanxia.enums.PayMethod;
 import com.izouma.jiashanxia.enums.TransactionType;
 import com.izouma.jiashanxia.exception.BusinessException;
@@ -105,7 +106,7 @@ public class OrderInfoService {
             userRepo.save(user);
         }
         // 加入套餐商品
-        userPackageService.joinUserPackage(userId, setGoodsList, 1);
+        userPackageService.joinUserPackage(userId, setGoodsList, 1, PackageType.PERSONAL);
 
         // 用户id和上级id相同
         if (user.getParent() != null && !userId.equals(user.getParent())) {

+ 2 - 2
src/main/java/com/izouma/jiashanxia/service/PackageService.java

@@ -65,7 +65,7 @@ public class PackageService {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
         // 加入套餐商品
         List<PackageGoods> setGoodsList = packageGoodsRepo.findAllByPackageId(packageId);
-        userPackageService.joinUserPackage(userId, setGoodsList, 1);
+        userPackageService.joinUserPackage(userId, setGoodsList, 1, PackageType.TEAM);
 
         // 新建公司
         Company company = companyRepo.findByUserId(userId);
@@ -114,7 +114,7 @@ public class PackageService {
 
         // 加入套餐商品
         List<PackageGoods> setGoodsList = packageGoodsRepo.findAllByPackageId(packageId);
-        userPackageService.joinUserPackage(userId, setGoodsList, num);
+        userPackageService.joinUserPackage(userId, setGoodsList, num, PackageType.TEAM);
     }
 
 }

+ 12 - 7
src/main/java/com/izouma/jiashanxia/service/UserPackageService.java

@@ -9,6 +9,7 @@ import com.izouma.jiashanxia.domain.UserPackageFlow;
 import com.izouma.jiashanxia.dto.GoodsDTO;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.enums.FlowType;
+import com.izouma.jiashanxia.enums.PackageType;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.UserRepo;
 import com.izouma.jiashanxia.repo.UserPackageFlowRepo;
@@ -34,14 +35,17 @@ public class UserPackageService {
         return userPackageRepo.findAll(JpaUtils.toSpecification(pageQuery, UserPackage.class), JpaUtils.toPageRequest(pageQuery));
     }
 
-    /*
-    加入套餐
-
-    用户套餐和企业套餐重叠怎么办?
-    */
-    public void joinUserPackage(Long userId, List<PackageGoods> packageGoodsList, Integer num) {
+    /**
+     * 加入套餐
+     *
+     * @param userId           用户id
+     * @param packageGoodsList 套餐商品
+     * @param num              数量
+     * @param type             类型(团队/个人)
+     */
+    public void joinUserPackage(Long userId, List<PackageGoods> packageGoodsList, Integer num, PackageType type) {
         // 用户已有套餐
-        Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserId(userId)
+        Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserIdAndType(userId, type)
                 .stream()
                 .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userSet -> userSet));
 
@@ -58,6 +62,7 @@ public class UserPackageService {
                         .goodsInfoId(setGoods.getGoodsInfoId())
                         .num(setGoods.getNum() * num)
                         .remark(setGoods.getRemark())
+                        .type(type)
                         .build();
             }
             userPackageRepo.save(goods);

+ 8 - 1
src/main/vue/src/views/CommissionRecordList.vue

@@ -12,7 +12,14 @@
                 class="filter-item"
                 >导出EXCEL
             </el-button>
-            <el-select v-model="transactionType" multiple clearable @change="getData" collapse-tags>
+            <el-select
+                v-model="transactionType"
+                multiple
+                clearable
+                @change="getData"
+                collapse-tags
+                placeholder="请选择交易类型"
+            >
                 <el-option
                     v-for="item in transactionTypeOptions"
                     :key="item.value"

+ 66 - 29
src/main/vue/src/views/CompanyEdit.vue

@@ -14,13 +14,7 @@
             </el-form-item>
             <el-form-item prop="userId" label="管理人员">
                 <div class="subform">
-                    <el-select
-                        v-model="formData.userId"
-                        style="width: 360px"
-                        filterable
-                        clearable
-                        @change="chooseAdmin"
-                    >
+                    <el-select v-model="formData.userId" style="width: 360px" filterable clearable>
                         <el-option v-for="item in users" :key="item.id" :value="item.id" :label="item.nickname">
                             <span style="float: left">{{ item.nickname }}</span>
                             <span style="float: right; color: #8492a6; font-size: 13px">{{ item.phone }}</span>
@@ -30,13 +24,30 @@
             </el-form-item>
             <el-form-item prop="employee" label="员工">
                 <div class="subform">
-                    <el-select v-model="formData.employee" style="width: 360px" filterable multiple>
-                        <el-option v-for="item in users" :key="item.id" :value="item.id" :label="item.nickname">
-                            <span style="float: left">{{ item.nickname }}</span>
-                            <span style="float: right; color: #8492a6; font-size: 13px">{{ item.phone }}</span>
-                        </el-option>
-                    </el-select>
-                    <span v-for="item in formData.employee" :key="item">{{ item }}</span>
+                    <div style="margin-bottom: 20px">
+                        <el-select
+                            v-model="employeeId"
+                            style="width: 82.5%; margin-right: 10px;"
+                            filterable
+                            clearable
+                            placeholder="请选择员工"
+                        >
+                            <el-option v-for="item in users" :key="item.id" :value="item.id" :label="item.nickname">
+                                <span style="float: left">{{ item.nickname }}</span>
+                                <span style="float: right; color: #8492a6; font-size: 13px">{{ item.phone }}</span>
+                            </el-option>
+                        </el-select>
+                        <el-button @click="chooseEmp">确定</el-button>
+                    </div>
+                    <el-table :data="emps">
+                        <el-table-column prop="nickname" label="用户名"></el-table-column>
+                        <el-table-column prop="phone" label="手机号"></el-table-column>
+                        <el-table-column label="操作">
+                            <template slot-scope="{ row }">
+                                <el-button @click="remove(row)" type="danger" size="mini" plain>移除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
                 </div>
             </el-form-item>
             <!--<el-form-item prop="amount" label="团队余额">
@@ -55,19 +66,20 @@ export default {
     name: 'CompanyEdit',
     created() {
         if (this.$route.query.id) {
-            this.$http
-                .get('company/get/' + this.$route.query.id)
-                .then(res => {
-                    this.formData = res;
-                })
-                .catch(e => {
-                    console.log(e);
-                    this.$message.error(e.error);
-                });
             this.$http
                 .post('user/user', { companyId: this.$route.query.id })
                 .then(res => {
                     this.users = res;
+                    this.$http
+                        .get('company/get/' + this.$route.query.id)
+                        .then(res => {
+                            this.formData = res;
+                            this.getEmp(res);
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.$message.error(e.error);
+                        });
                 })
                 .catch(e => {
                     console.log(e);
@@ -97,7 +109,9 @@ export default {
                 userId: [{ required: true, message: '请选择管理员', trigger: 'blur' }]
             },
             users: [],
-            emps: []
+            emps: [],
+            employeeId: '',
+            employeeIds: []
         };
     },
     methods: {
@@ -112,7 +126,7 @@ export default {
         },
         submit() {
             let data = { ...this.formData };
-            // data.employee = this.emps;
+            data.employee = this.employeeIds;
 
             this.saving = true;
             this.$http
@@ -144,10 +158,33 @@ export default {
                     }
                 });
         },
-        chooseAdmin(id) {
-            this.emps = this.users.find(item => {
-                return item.id === id;
-            });
+        getEmp(res) {
+            let data = res.employee;
+            if (data != undefined && data.length > 0) {
+                for (let index in data) {
+                    this.emps.push(
+                        this.users.find(item => {
+                            return item.id === data[index];
+                        })
+                    );
+                }
+                this.employeeIds = data;
+            }
+        },
+        chooseEmp() {
+            if (this.employeeIds.indexOf(this.employeeId) < 0 && this.employeeId != '') {
+                this.emps.push(
+                    this.users.find(item => {
+                        return item.id === this.employeeId;
+                    })
+                );
+                this.employeeIds.push(this.employeeId);
+                this.employeeId = '';
+            }
+        },
+        remove(row) {
+            this.emps.pop(row);
+            this.employeeIds.pop(this.employeeId);
         }
     }
 };

+ 3 - 2
src/main/vue/src/views/CompanyList.vue

@@ -30,7 +30,7 @@
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                     <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
-                    <el-button size="mini" @click="showDialog = true" type="warning" plain>充值</el-button>
+                    <el-button size="mini" @click="recharge(row)" type="warning" plain v-if="userInfo">充值</el-button>
                     <el-button size="mini" @click="handleCommand(row.userId)">推广</el-button>
                     <el-button size="mini" @click="handleCommand1(row.id)">员工</el-button>
                     <el-button size="mini" @click="handleCommand2(row.id)">收益</el-button>
@@ -234,7 +234,8 @@ export default {
                 .then(() => {
                     return this.$http.post('/package/recharge', {
                         packageId: this.packageId,
-                        num: this.num
+                        num: this.num,
+                        userId: this.userId
                     });
                 })
                 .then(() => {